• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *   This file is part of Portals, http://www.sf.net/projects/lustre/
3  *
4  *   Portals is free software; you can redistribute it and/or
5  *   modify it under the terms of version 2 of the GNU General Public
6  *   License as published by the Free Software Foundation.
7  *
8  *   Portals is distributed in the hope that it will be useful,
9  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
10  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  *   GNU General Public License for more details.
12  *
13  * header for lnet ioctl
14  */
15 #ifndef _LNETCTL_H_
16 #define _LNETCTL_H_
17 
18 #include "types.h"
19 
20 /** \addtogroup lnet_fault_simulation
21  * @{
22  */
23 
24 enum {
25 	LNET_CTL_DROP_ADD,
26 	LNET_CTL_DROP_DEL,
27 	LNET_CTL_DROP_RESET,
28 	LNET_CTL_DROP_LIST,
29 	LNET_CTL_DELAY_ADD,
30 	LNET_CTL_DELAY_DEL,
31 	LNET_CTL_DELAY_RESET,
32 	LNET_CTL_DELAY_LIST,
33 };
34 
35 #define LNET_ACK_BIT		BIT(0)
36 #define LNET_PUT_BIT		BIT(1)
37 #define LNET_GET_BIT		BIT(2)
38 #define LNET_REPLY_BIT		BIT(3)
39 
40 /** ioctl parameter for LNet fault simulation */
41 struct lnet_fault_attr {
42 	/**
43 	 * source NID of drop rule
44 	 * LNET_NID_ANY is wildcard for all sources
45 	 * 255.255.255.255@net is wildcard for all addresses from @net
46 	 */
47 	lnet_nid_t			fa_src;
48 	/** destination NID of drop rule, see \a dr_src for details */
49 	lnet_nid_t			fa_dst;
50 	/**
51 	 * Portal mask to drop, -1 means all portals, for example:
52 	 * fa_ptl_mask = (1 << _LDLM_CB_REQUEST_PORTAL ) |
53 	 *		 (1 << LDLM_CANCEL_REQUEST_PORTAL)
54 	 *
55 	 * If it is non-zero then only PUT and GET will be filtered, otherwise
56 	 * there is no portal filter, all matched messages will be checked.
57 	 */
58 	__u64				fa_ptl_mask;
59 	/**
60 	 * message types to drop, for example:
61 	 * dra_type = LNET_DROP_ACK_BIT | LNET_DROP_PUT_BIT
62 	 *
63 	 * If it is non-zero then only specified message types are filtered,
64 	 * otherwise all message types will be checked.
65 	 */
66 	__u32				fa_msg_mask;
67 	union {
68 		/** message drop simulation */
69 		struct {
70 			/** drop rate of this rule */
71 			__u32			da_rate;
72 			/**
73 			 * time interval of message drop, it is exclusive
74 			 * with da_rate
75 			 */
76 			__u32			da_interval;
77 		} drop;
78 		/** message latency simulation */
79 		struct {
80 			__u32			la_rate;
81 			/**
82 			 * time interval of message delay, it is exclusive
83 			 * with la_rate
84 			 */
85 			__u32			la_interval;
86 			/** latency to delay */
87 			__u32			la_latency;
88 		} delay;
89 		__u64			space[8];
90 	} u;
91 };
92 
93 /** fault simluation stats */
94 struct lnet_fault_stat {
95 	/** total # matched messages */
96 	__u64				fs_count;
97 	/** # dropped LNET_MSG_PUT by this rule */
98 	__u64				fs_put;
99 	/** # dropped LNET_MSG_ACK by this rule */
100 	__u64				fs_ack;
101 	/** # dropped LNET_MSG_GET by this rule */
102 	__u64				fs_get;
103 	/** # dropped LNET_MSG_REPLY by this rule */
104 	__u64				fs_reply;
105 	union {
106 		struct {
107 			/** total # dropped messages */
108 			__u64			ds_dropped;
109 		} drop;
110 		struct {
111 			/** total # delayed messages */
112 			__u64			ls_delayed;
113 		} delay;
114 		__u64			space[8];
115 	} u;
116 };
117 
118 /** @} lnet_fault_simulation */
119 
120 #define LNET_DEV_ID 0
121 #define LNET_DEV_PATH "/dev/lnet"
122 #define LNET_DEV_MAJOR 10
123 #define LNET_DEV_MINOR 240
124 #define OBD_DEV_ID 1
125 #define OBD_DEV_NAME "obd"
126 #define OBD_DEV_PATH "/dev/" OBD_DEV_NAME
127 #define OBD_DEV_MAJOR 10
128 #define OBD_DEV_MINOR 241
129 #define SMFS_DEV_ID  2
130 #define SMFS_DEV_PATH "/dev/snapdev"
131 #define SMFS_DEV_MAJOR 10
132 #define SMFS_DEV_MINOR 242
133 
134 int ptl_initialize(int argc, char **argv);
135 int jt_ptl_network(int argc, char **argv);
136 int jt_ptl_list_nids(int argc, char **argv);
137 int jt_ptl_which_nid(int argc, char **argv);
138 int jt_ptl_print_interfaces(int argc, char **argv);
139 int jt_ptl_add_interface(int argc, char **argv);
140 int jt_ptl_del_interface(int argc, char **argv);
141 int jt_ptl_print_peers(int argc, char **argv);
142 int jt_ptl_add_peer(int argc, char **argv);
143 int jt_ptl_del_peer(int argc, char **argv);
144 int jt_ptl_print_connections(int argc, char **argv);
145 int jt_ptl_disconnect(int argc, char **argv);
146 int jt_ptl_push_connection(int argc, char **argv);
147 int jt_ptl_print_active_txs(int argc, char **argv);
148 int jt_ptl_ping(int argc, char **argv);
149 int jt_ptl_mynid(int argc, char **argv);
150 int jt_ptl_add_uuid(int argc, char **argv);
151 int jt_ptl_add_uuid_old(int argc, char **argv); /* backwards compatibility  */
152 int jt_ptl_close_uuid(int argc, char **argv);
153 int jt_ptl_del_uuid(int argc, char **argv);
154 int jt_ptl_add_route(int argc, char **argv);
155 int jt_ptl_del_route(int argc, char **argv);
156 int jt_ptl_notify_router(int argc, char **argv);
157 int jt_ptl_print_routes(int argc, char **argv);
158 int jt_ptl_fail_nid(int argc, char **argv);
159 int jt_ptl_lwt(int argc, char **argv);
160 int jt_ptl_testprotocompat(int argc, char **argv);
161 int jt_ptl_memhog(int argc, char **argv);
162 
163 int dbg_initialize(int argc, char **argv);
164 int jt_dbg_filter(int argc, char **argv);
165 int jt_dbg_show(int argc, char **argv);
166 int jt_dbg_list(int argc, char **argv);
167 int jt_dbg_debug_kernel(int argc, char **argv);
168 int jt_dbg_debug_daemon(int argc, char **argv);
169 int jt_dbg_debug_file(int argc, char **argv);
170 int jt_dbg_clear_debug_buf(int argc, char **argv);
171 int jt_dbg_mark_debug_buf(int argc, char **argv);
172 int jt_dbg_modules(int argc, char **argv);
173 int jt_dbg_panic(int argc, char **argv);
174 
175 #endif
176