Commit | Line | Data |
---|---|---|
f7ab093f MM |
1 | /* |
2 | * (C) 2001 Clemson University and The University of Chicago | |
3 | * | |
4 | * See COPYING in top-level directory. | |
5 | */ | |
6 | ||
7 | /* This file just defines debugging masks to be used with the gossip | |
8 | * logging utility. All debugging masks for PVFS2 are kept here to make | |
9 | * sure we don't have collisions. | |
10 | */ | |
11 | ||
12 | #ifndef __PVFS2_DEBUG_H | |
13 | #define __PVFS2_DEBUG_H | |
14 | ||
15 | #ifdef __KERNEL__ | |
16 | #include <linux/types.h> | |
17 | #else | |
18 | #include <stdint.h> | |
19 | #endif | |
20 | ||
21 | #define GOSSIP_NO_DEBUG (__u64)0 | |
22 | #define GOSSIP_BMI_DEBUG_TCP ((__u64)1 << 0) | |
23 | #define GOSSIP_BMI_DEBUG_CONTROL ((__u64)1 << 1) | |
24 | #define GOSSIP_BMI_DEBUG_OFFSETS ((__u64)1 << 2) | |
25 | #define GOSSIP_BMI_DEBUG_GM ((__u64)1 << 3) | |
26 | #define GOSSIP_JOB_DEBUG ((__u64)1 << 4) | |
27 | #define GOSSIP_SERVER_DEBUG ((__u64)1 << 5) | |
28 | #define GOSSIP_STO_DEBUG_CTRL ((__u64)1 << 6) | |
29 | #define GOSSIP_STO_DEBUG_DEFAULT ((__u64)1 << 7) | |
30 | #define GOSSIP_FLOW_DEBUG ((__u64)1 << 8) | |
31 | #define GOSSIP_BMI_DEBUG_GM_MEM ((__u64)1 << 9) | |
32 | #define GOSSIP_REQUEST_DEBUG ((__u64)1 << 10) | |
33 | #define GOSSIP_FLOW_PROTO_DEBUG ((__u64)1 << 11) | |
34 | #define GOSSIP_NCACHE_DEBUG ((__u64)1 << 12) | |
35 | #define GOSSIP_CLIENT_DEBUG ((__u64)1 << 13) | |
36 | #define GOSSIP_REQ_SCHED_DEBUG ((__u64)1 << 14) | |
37 | #define GOSSIP_ACACHE_DEBUG ((__u64)1 << 15) | |
38 | #define GOSSIP_TROVE_DEBUG ((__u64)1 << 16) | |
39 | #define GOSSIP_TROVE_OP_DEBUG ((__u64)1 << 17) | |
40 | #define GOSSIP_DIST_DEBUG ((__u64)1 << 18) | |
41 | #define GOSSIP_BMI_DEBUG_IB ((__u64)1 << 19) | |
42 | #define GOSSIP_DBPF_ATTRCACHE_DEBUG ((__u64)1 << 20) | |
43 | #define GOSSIP_MMAP_RCACHE_DEBUG ((__u64)1 << 21) | |
44 | #define GOSSIP_LOOKUP_DEBUG ((__u64)1 << 22) | |
45 | #define GOSSIP_REMOVE_DEBUG ((__u64)1 << 23) | |
46 | #define GOSSIP_GETATTR_DEBUG ((__u64)1 << 24) | |
47 | #define GOSSIP_READDIR_DEBUG ((__u64)1 << 25) | |
48 | #define GOSSIP_IO_DEBUG ((__u64)1 << 26) | |
49 | #define GOSSIP_DBPF_OPEN_CACHE_DEBUG ((__u64)1 << 27) | |
50 | #define GOSSIP_PERMISSIONS_DEBUG ((__u64)1 << 28) | |
51 | #define GOSSIP_CANCEL_DEBUG ((__u64)1 << 29) | |
52 | #define GOSSIP_MSGPAIR_DEBUG ((__u64)1 << 30) | |
53 | #define GOSSIP_CLIENTCORE_DEBUG ((__u64)1 << 31) | |
54 | #define GOSSIP_CLIENTCORE_TIMING_DEBUG ((__u64)1 << 32) | |
55 | #define GOSSIP_SETATTR_DEBUG ((__u64)1 << 33) | |
56 | #define GOSSIP_MKDIR_DEBUG ((__u64)1 << 34) | |
57 | #define GOSSIP_VARSTRIP_DEBUG ((__u64)1 << 35) | |
58 | #define GOSSIP_GETEATTR_DEBUG ((__u64)1 << 36) | |
59 | #define GOSSIP_SETEATTR_DEBUG ((__u64)1 << 37) | |
60 | #define GOSSIP_ENDECODE_DEBUG ((__u64)1 << 38) | |
61 | #define GOSSIP_DELEATTR_DEBUG ((__u64)1 << 39) | |
62 | #define GOSSIP_ACCESS_DEBUG ((__u64)1 << 40) | |
63 | #define GOSSIP_ACCESS_DETAIL_DEBUG ((__u64)1 << 41) | |
64 | #define GOSSIP_LISTEATTR_DEBUG ((__u64)1 << 42) | |
65 | #define GOSSIP_PERFCOUNTER_DEBUG ((__u64)1 << 43) | |
66 | #define GOSSIP_STATE_MACHINE_DEBUG ((__u64)1 << 44) | |
67 | #define GOSSIP_DBPF_KEYVAL_DEBUG ((__u64)1 << 45) | |
68 | #define GOSSIP_LISTATTR_DEBUG ((__u64)1 << 46) | |
69 | #define GOSSIP_DBPF_COALESCE_DEBUG ((__u64)1 << 47) | |
70 | #define GOSSIP_ACCESS_HOSTNAMES ((__u64)1 << 48) | |
71 | #define GOSSIP_FSCK_DEBUG ((__u64)1 << 49) | |
72 | #define GOSSIP_BMI_DEBUG_MX ((__u64)1 << 50) | |
73 | #define GOSSIP_BSTREAM_DEBUG ((__u64)1 << 51) | |
74 | #define GOSSIP_BMI_DEBUG_PORTALS ((__u64)1 << 52) | |
75 | #define GOSSIP_USER_DEV_DEBUG ((__u64)1 << 53) | |
76 | #define GOSSIP_DIRECTIO_DEBUG ((__u64)1 << 54) | |
77 | #define GOSSIP_MGMT_DEBUG ((__u64)1 << 55) | |
78 | #define GOSSIP_MIRROR_DEBUG ((__u64)1 << 56) | |
79 | #define GOSSIP_WIN_CLIENT_DEBUG ((__u64)1 << 57) | |
80 | #define GOSSIP_SECURITY_DEBUG ((__u64)1 << 58) | |
81 | #define GOSSIP_USRINT_DEBUG ((__u64)1 << 59) | |
82 | #define GOSSIP_RCACHE_DEBUG ((__u64)1 << 60) | |
83 | #define GOSSIP_SECCACHE_DEBUG ((__u64)1 << 61) | |
84 | ||
85 | #define GOSSIP_BMI_DEBUG_ALL ((__u64) (GOSSIP_BMI_DEBUG_TCP + \ | |
86 | GOSSIP_BMI_DEBUG_CONTROL + \ | |
87 | GOSSIP_BMI_DEBUG_GM + \ | |
88 | GOSSIP_BMI_DEBUG_OFFSETS + \ | |
89 | GOSSIP_BMI_DEBUG_IB + \ | |
90 | GOSSIP_BMI_DEBUG_MX + \ | |
91 | GOSSIP_BMI_DEBUG_PORTALS)) | |
92 | ||
93 | const char *PVFS_debug_get_next_debug_keyword(int position); | |
94 | ||
95 | #define GOSSIP_SUPER_DEBUG ((__u64)1 << 0) | |
96 | #define GOSSIP_INODE_DEBUG ((__u64)1 << 1) | |
97 | #define GOSSIP_FILE_DEBUG ((__u64)1 << 2) | |
98 | #define GOSSIP_DIR_DEBUG ((__u64)1 << 3) | |
99 | #define GOSSIP_UTILS_DEBUG ((__u64)1 << 4) | |
100 | #define GOSSIP_WAIT_DEBUG ((__u64)1 << 5) | |
101 | #define GOSSIP_ACL_DEBUG ((__u64)1 << 6) | |
102 | #define GOSSIP_DCACHE_DEBUG ((__u64)1 << 7) | |
103 | #define GOSSIP_DEV_DEBUG ((__u64)1 << 8) | |
104 | #define GOSSIP_NAME_DEBUG ((__u64)1 << 9) | |
105 | #define GOSSIP_BUFMAP_DEBUG ((__u64)1 << 10) | |
106 | #define GOSSIP_CACHE_DEBUG ((__u64)1 << 11) | |
107 | #define GOSSIP_DEBUGFS_DEBUG ((__u64)1 << 12) | |
108 | #define GOSSIP_XATTR_DEBUG ((__u64)1 << 13) | |
109 | #define GOSSIP_INIT_DEBUG ((__u64)1 << 14) | |
110 | #define GOSSIP_SYSFS_DEBUG ((__u64)1 << 15) | |
111 | ||
112 | #define GOSSIP_MAX_NR 16 | |
113 | #define GOSSIP_MAX_DEBUG (((__u64)1 << GOSSIP_MAX_NR) - 1) | |
114 | ||
115 | /*function prototypes*/ | |
116 | __u64 PVFS_kmod_eventlog_to_mask(const char *event_logging); | |
117 | __u64 PVFS_debug_eventlog_to_mask(const char *event_logging); | |
118 | char *PVFS_debug_mask_to_eventlog(__u64 mask); | |
119 | char *PVFS_kmod_mask_to_eventlog(__u64 mask); | |
120 | ||
121 | /* a private internal type */ | |
122 | struct __keyword_mask_s { | |
123 | const char *keyword; | |
124 | __u64 mask_val; | |
125 | }; | |
126 | ||
127 | #define __DEBUG_ALL ((__u64) -1) | |
128 | ||
129 | /* map all config keywords to pvfs2 debug masks here */ | |
130 | static struct __keyword_mask_s s_keyword_mask_map[] = { | |
131 | /* Log trove debugging info. Same as 'trove'. */ | |
132 | {"storage", GOSSIP_TROVE_DEBUG}, | |
133 | /* Log trove debugging info. Same as 'storage'. */ | |
134 | {"trove", GOSSIP_TROVE_DEBUG}, | |
135 | /* Log trove operations. */ | |
136 | {"trove_op", GOSSIP_TROVE_OP_DEBUG}, | |
137 | /* Log network debug info. */ | |
138 | {"network", GOSSIP_BMI_DEBUG_ALL}, | |
139 | /* Log server info, including new operations. */ | |
140 | {"server", GOSSIP_SERVER_DEBUG}, | |
141 | /* Log client sysint info. This is only useful for the client. */ | |
142 | {"client", GOSSIP_CLIENT_DEBUG}, | |
143 | /* Debug the varstrip distribution */ | |
144 | {"varstrip", GOSSIP_VARSTRIP_DEBUG}, | |
145 | /* Log job info */ | |
146 | {"job", GOSSIP_JOB_DEBUG}, | |
147 | /* Debug PINT_process_request calls. EXTREMELY verbose! */ | |
148 | {"request", GOSSIP_REQUEST_DEBUG}, | |
149 | /* Log request scheduler events */ | |
150 | {"reqsched", GOSSIP_REQ_SCHED_DEBUG}, | |
151 | /* Log the flow protocol events, including flowproto_multiqueue */ | |
152 | {"flowproto", GOSSIP_FLOW_PROTO_DEBUG}, | |
153 | /* Log flow calls */ | |
154 | {"flow", GOSSIP_FLOW_DEBUG}, | |
155 | /* Debug the client name cache. Only useful on the client. */ | |
156 | {"ncache", GOSSIP_NCACHE_DEBUG}, | |
157 | /* Debug read-ahead cache events. Only useful on the client. */ | |
158 | {"mmaprcache", GOSSIP_MMAP_RCACHE_DEBUG}, | |
159 | /* Debug the attribute cache. Only useful on the client. */ | |
160 | {"acache", GOSSIP_ACACHE_DEBUG}, | |
161 | /* Log/Debug distribution calls */ | |
162 | {"distribution", GOSSIP_DIST_DEBUG}, | |
163 | /* Debug the server-side dbpf attribute cache */ | |
164 | {"dbpfattrcache", GOSSIP_DBPF_ATTRCACHE_DEBUG}, | |
165 | /* Debug the client lookup state machine. */ | |
166 | {"lookup", GOSSIP_LOOKUP_DEBUG}, | |
167 | /* Debug the client remove state macine. */ | |
168 | {"remove", GOSSIP_REMOVE_DEBUG}, | |
169 | /* Debug the server getattr state machine. */ | |
170 | {"getattr", GOSSIP_GETATTR_DEBUG}, | |
171 | /* Debug the server setattr state machine. */ | |
172 | {"setattr", GOSSIP_SETATTR_DEBUG}, | |
173 | /* vectored getattr server state machine */ | |
174 | {"listattr", GOSSIP_LISTATTR_DEBUG}, | |
175 | /* Debug the client and server get ext attributes SM. */ | |
176 | {"geteattr", GOSSIP_GETEATTR_DEBUG}, | |
177 | /* Debug the client and server set ext attributes SM. */ | |
178 | {"seteattr", GOSSIP_SETEATTR_DEBUG}, | |
179 | /* Debug the readdir operation (client and server) */ | |
180 | {"readdir", GOSSIP_READDIR_DEBUG}, | |
181 | /* Debug the mkdir operation (server only) */ | |
182 | {"mkdir", GOSSIP_MKDIR_DEBUG}, | |
54804949 MM |
183 | /* |
184 | * Debug the io operation (reads and writes) | |
185 | * for both the client and server. | |
186 | */ | |
f7ab093f MM |
187 | {"io", GOSSIP_IO_DEBUG}, |
188 | /* Debug the server's open file descriptor cache */ | |
189 | {"open_cache", GOSSIP_DBPF_OPEN_CACHE_DEBUG}, | |
190 | /* Debug permissions checking on the server */ | |
191 | {"permissions", GOSSIP_PERMISSIONS_DEBUG}, | |
192 | /* Debug the cancel operation */ | |
193 | {"cancel", GOSSIP_CANCEL_DEBUG}, | |
194 | /* Debug the msgpair state machine */ | |
195 | {"msgpair", GOSSIP_MSGPAIR_DEBUG}, | |
196 | /* Debug the client core app */ | |
197 | {"clientcore", GOSSIP_CLIENTCORE_DEBUG}, | |
198 | /* Debug the client timing state machines (job timeout, etc.) */ | |
199 | {"clientcore_timing", GOSSIP_CLIENTCORE_TIMING_DEBUG}, | |
200 | /* network encoding */ | |
201 | {"endecode", GOSSIP_ENDECODE_DEBUG}, | |
202 | /* Show server file (metadata) accesses (both modify and read-only). */ | |
203 | {"access", GOSSIP_ACCESS_DEBUG}, | |
204 | /* Show more detailed server file accesses */ | |
205 | {"access_detail", GOSSIP_ACCESS_DETAIL_DEBUG}, | |
206 | /* Debug the listeattr operation */ | |
207 | {"listeattr", GOSSIP_LISTEATTR_DEBUG}, | |
208 | /* Debug the state machine management code */ | |
209 | {"sm", GOSSIP_STATE_MACHINE_DEBUG}, | |
210 | /* Debug the metadata dbpf keyval functions */ | |
211 | {"keyval", GOSSIP_DBPF_KEYVAL_DEBUG}, | |
212 | /* Debug the metadata sync coalescing code */ | |
213 | {"coalesce", GOSSIP_DBPF_COALESCE_DEBUG}, | |
214 | /* Display the hostnames instead of IP addrs in debug output */ | |
215 | {"access_hostnames", GOSSIP_ACCESS_HOSTNAMES}, | |
216 | /* Show the client device events */ | |
217 | {"user_dev", GOSSIP_USER_DEV_DEBUG}, | |
218 | /* Debug the fsck tool */ | |
219 | {"fsck", GOSSIP_FSCK_DEBUG}, | |
220 | /* Debug the bstream code */ | |
221 | {"bstream", GOSSIP_BSTREAM_DEBUG}, | |
222 | /* Debug trove in direct io mode */ | |
223 | {"directio", GOSSIP_DIRECTIO_DEBUG}, | |
224 | /* Debug direct io thread management */ | |
225 | {"mgmt", GOSSIP_MGMT_DEBUG}, | |
226 | /* Debug mirroring process */ | |
227 | {"mirror", GOSSIP_MIRROR_DEBUG}, | |
228 | /* Windows client */ | |
229 | {"win_client", GOSSIP_WIN_CLIENT_DEBUG}, | |
230 | /* Debug robust security code */ | |
231 | {"security", GOSSIP_SECURITY_DEBUG}, | |
232 | /* Capability Cache */ | |
233 | {"seccache", GOSSIP_SECCACHE_DEBUG}, | |
234 | /* Client User Interface */ | |
235 | {"usrint", GOSSIP_USRINT_DEBUG}, | |
236 | /* rcache */ | |
237 | {"rcache", GOSSIP_RCACHE_DEBUG}, | |
238 | /* Everything except the periodic events. Useful for debugging */ | |
239 | {"verbose", | |
240 | (__DEBUG_ALL & | |
241 | ~(GOSSIP_PERFCOUNTER_DEBUG | GOSSIP_STATE_MACHINE_DEBUG | | |
242 | GOSSIP_ENDECODE_DEBUG | GOSSIP_USER_DEV_DEBUG)) | |
243 | }, | |
244 | /* No debug output */ | |
245 | {"none", GOSSIP_NO_DEBUG}, | |
246 | /* Everything */ | |
247 | {"all", __DEBUG_ALL} | |
248 | }; | |
249 | ||
250 | #undef __DEBUG_ALL | |
251 | ||
252 | /* | |
253 | * Map all kmod keywords to kmod debug masks here. Keep this | |
254 | * structure "packed": | |
255 | * | |
256 | * "all" is always last... | |
257 | * | |
258 | * keyword mask_val index | |
259 | * foo 1 0 | |
260 | * bar 2 1 | |
261 | * baz 4 2 | |
262 | * qux 8 3 | |
263 | * . . . | |
264 | */ | |
265 | static struct __keyword_mask_s s_kmod_keyword_mask_map[] = { | |
266 | {"super", GOSSIP_SUPER_DEBUG}, | |
267 | {"inode", GOSSIP_INODE_DEBUG}, | |
268 | {"file", GOSSIP_FILE_DEBUG}, | |
269 | {"dir", GOSSIP_DIR_DEBUG}, | |
270 | {"utils", GOSSIP_UTILS_DEBUG}, | |
271 | {"wait", GOSSIP_WAIT_DEBUG}, | |
272 | {"acl", GOSSIP_ACL_DEBUG}, | |
273 | {"dcache", GOSSIP_DCACHE_DEBUG}, | |
274 | {"dev", GOSSIP_DEV_DEBUG}, | |
275 | {"name", GOSSIP_NAME_DEBUG}, | |
276 | {"bufmap", GOSSIP_BUFMAP_DEBUG}, | |
277 | {"cache", GOSSIP_CACHE_DEBUG}, | |
278 | {"debugfs", GOSSIP_DEBUGFS_DEBUG}, | |
279 | {"xattr", GOSSIP_XATTR_DEBUG}, | |
280 | {"init", GOSSIP_INIT_DEBUG}, | |
281 | {"sysfs", GOSSIP_SYSFS_DEBUG}, | |
282 | {"none", GOSSIP_NO_DEBUG}, | |
283 | {"all", GOSSIP_MAX_DEBUG} | |
284 | }; | |
285 | ||
286 | static const int num_kmod_keyword_mask_map = (int) | |
287 | (sizeof(s_kmod_keyword_mask_map) / sizeof(struct __keyword_mask_s)); | |
288 | ||
289 | static const int num_keyword_mask_map = (int) | |
290 | (sizeof(s_keyword_mask_map) / sizeof(struct __keyword_mask_s)); | |
291 | ||
292 | #endif /* __PVFS2_DEBUG_H */ |