xref: /linux/fs/smb/client/trace.h (revision 40ccd6aa3e2e05be93394e3cd560c718dedfcc77)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  *   Copyright (C) 2018, Microsoft Corporation.
4  *
5  *   Author(s): Steve French <stfrench@microsoft.com>
6  *
7  * Please use this 3-part article as a reference for writing new tracepoints:
8  * https://lwn.net/Articles/379903/
9  */
10 #undef TRACE_SYSTEM
11 #define TRACE_SYSTEM cifs
12 
13 #if !defined(_CIFS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
14 #define _CIFS_TRACE_H
15 
16 #include <linux/tracepoint.h>
17 #include <linux/net.h>
18 #include <linux/inet.h>
19 
20 /*
21  * Specify enums for tracing information.
22  */
23 #define smb3_tcon_ref_traces					      \
24 	EM(netfs_trace_tcon_ref_dec_dfs_refer,		"DEC DfsRef") \
25 	EM(netfs_trace_tcon_ref_free,			"FRE       ") \
26 	EM(netfs_trace_tcon_ref_free_fail,		"FRE Fail  ") \
27 	EM(netfs_trace_tcon_ref_free_ipc,		"FRE Ipc   ") \
28 	EM(netfs_trace_tcon_ref_free_ipc_fail,		"FRE Ipc-F ") \
29 	EM(netfs_trace_tcon_ref_free_reconnect_server,	"FRE Reconn") \
30 	EM(netfs_trace_tcon_ref_get_cancelled_close,	"GET Cn-Cls") \
31 	EM(netfs_trace_tcon_ref_get_dfs_refer,		"GET DfsRef") \
32 	EM(netfs_trace_tcon_ref_get_find,		"GET Find  ") \
33 	EM(netfs_trace_tcon_ref_get_find_sess_tcon,	"GET FndSes") \
34 	EM(netfs_trace_tcon_ref_get_reconnect_server,	"GET Reconn") \
35 	EM(netfs_trace_tcon_ref_new,			"NEW       ") \
36 	EM(netfs_trace_tcon_ref_new_ipc,		"NEW Ipc   ") \
37 	EM(netfs_trace_tcon_ref_new_reconnect_server,	"NEW Reconn") \
38 	EM(netfs_trace_tcon_ref_put_cancelled_close,	"PUT Cn-Cls") \
39 	EM(netfs_trace_tcon_ref_put_cancelled_close_fid, "PUT Cn-Fid") \
40 	EM(netfs_trace_tcon_ref_put_cancelled_mid,	"PUT Cn-Mid") \
41 	EM(netfs_trace_tcon_ref_put_mnt_ctx,		"PUT MntCtx") \
42 	EM(netfs_trace_tcon_ref_put_reconnect_server,	"PUT Reconn") \
43 	EM(netfs_trace_tcon_ref_put_tlink,		"PUT Tlink ") \
44 	EM(netfs_trace_tcon_ref_see_cancelled_close,	"SEE Cn-Cls") \
45 	EM(netfs_trace_tcon_ref_see_fscache_collision,	"SEE FV-CO!") \
46 	EM(netfs_trace_tcon_ref_see_fscache_okay,	"SEE FV-Ok ") \
47 	EM(netfs_trace_tcon_ref_see_fscache_relinq,	"SEE FV-Rlq") \
48 	E_(netfs_trace_tcon_ref_see_umount,		"SEE Umount")
49 
50 #undef EM
51 #undef E_
52 
53 /*
54  * Define those tracing enums.
55  */
56 #ifndef __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY
57 #define __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY
58 
59 #define EM(a, b) a,
60 #define E_(a, b) a
61 
62 enum smb3_tcon_ref_trace { smb3_tcon_ref_traces } __mode(byte);
63 
64 #undef EM
65 #undef E_
66 #endif
67 
68 /*
69  * Export enum symbols via userspace.
70  */
71 #define EM(a, b) TRACE_DEFINE_ENUM(a);
72 #define E_(a, b) TRACE_DEFINE_ENUM(a);
73 
74 smb3_tcon_ref_traces;
75 
76 #undef EM
77 #undef E_
78 
79 /*
80  * Now redefine the EM() and E_() macros to map the enums to the strings that
81  * will be printed in the output.
82  */
83 #define EM(a, b)	{ a, b },
84 #define E_(a, b)	{ a, b }
85 
86 /* For logging errors in read or write */
87 DECLARE_EVENT_CLASS(smb3_rw_err_class,
88 	TP_PROTO(unsigned int rreq_debug_id,
89 		 unsigned int rreq_debug_index,
90 		 unsigned int xid,
91 		 __u64	fid,
92 		 __u32	tid,
93 		 __u64	sesid,
94 		 __u64	offset,
95 		 __u32	len,
96 		 int	rc),
97 	TP_ARGS(rreq_debug_id, rreq_debug_index,
98 		xid, fid, tid, sesid, offset, len, rc),
99 	TP_STRUCT__entry(
100 		__field(unsigned int, rreq_debug_id)
101 		__field(unsigned int, rreq_debug_index)
102 		__field(unsigned int, xid)
103 		__field(__u64, fid)
104 		__field(__u32, tid)
105 		__field(__u64, sesid)
106 		__field(__u64, offset)
107 		__field(__u32, len)
108 		__field(int, rc)
109 	),
110 	TP_fast_assign(
111 		__entry->rreq_debug_id = rreq_debug_id;
112 		__entry->rreq_debug_index = rreq_debug_index;
113 		__entry->xid = xid;
114 		__entry->fid = fid;
115 		__entry->tid = tid;
116 		__entry->sesid = sesid;
117 		__entry->offset = offset;
118 		__entry->len = len;
119 		__entry->rc = rc;
120 	),
121 	TP_printk("\tR=%08x[%x] xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d",
122 		  __entry->rreq_debug_id, __entry->rreq_debug_index,
123 		  __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
124 		  __entry->offset, __entry->len, __entry->rc)
125 )
126 
127 #define DEFINE_SMB3_RW_ERR_EVENT(name)          \
128 DEFINE_EVENT(smb3_rw_err_class, smb3_##name,    \
129 	TP_PROTO(unsigned int rreq_debug_id,	\
130 		 unsigned int rreq_debug_index,		\
131 		 unsigned int xid,			\
132 		 __u64	fid,				\
133 		 __u32	tid,				\
134 		 __u64	sesid,				\
135 		 __u64	offset,				\
136 		 __u32	len,				\
137 		 int	rc),				\
138 	TP_ARGS(rreq_debug_id, rreq_debug_index, xid, fid, tid, sesid, offset, len, rc))
139 
140 DEFINE_SMB3_RW_ERR_EVENT(read_err);
141 
142 /* For logging errors in other file I/O ops */
143 DECLARE_EVENT_CLASS(smb3_other_err_class,
144 	TP_PROTO(unsigned int xid,
145 		__u64	fid,
146 		__u32	tid,
147 		__u64	sesid,
148 		__u64	offset,
149 		__u32	len,
150 		int	rc),
151 	TP_ARGS(xid, fid, tid, sesid, offset, len, rc),
152 	TP_STRUCT__entry(
153 		__field(unsigned int, xid)
154 		__field(__u64, fid)
155 		__field(__u32, tid)
156 		__field(__u64, sesid)
157 		__field(__u64, offset)
158 		__field(__u32, len)
159 		__field(int, rc)
160 	),
161 	TP_fast_assign(
162 		__entry->xid = xid;
163 		__entry->fid = fid;
164 		__entry->tid = tid;
165 		__entry->sesid = sesid;
166 		__entry->offset = offset;
167 		__entry->len = len;
168 		__entry->rc = rc;
169 	),
170 	TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d",
171 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
172 		__entry->offset, __entry->len, __entry->rc)
173 )
174 
175 #define DEFINE_SMB3_OTHER_ERR_EVENT(name)	\
176 DEFINE_EVENT(smb3_other_err_class, smb3_##name, \
177 	TP_PROTO(unsigned int xid,		\
178 		__u64	fid,			\
179 		__u32	tid,			\
180 		__u64	sesid,			\
181 		__u64	offset,			\
182 		__u32	len,			\
183 		int	rc),			\
184 	TP_ARGS(xid, fid, tid, sesid, offset, len, rc))
185 
186 DEFINE_SMB3_OTHER_ERR_EVENT(write_err);
187 DEFINE_SMB3_OTHER_ERR_EVENT(query_dir_err);
188 DEFINE_SMB3_OTHER_ERR_EVENT(zero_err);
189 DEFINE_SMB3_OTHER_ERR_EVENT(falloc_err);
190 
191 
192 /* For logging successful read or write */
193 DECLARE_EVENT_CLASS(smb3_rw_done_class,
194 	TP_PROTO(unsigned int rreq_debug_id,
195 		 unsigned int rreq_debug_index,
196 		 unsigned int xid,
197 		 __u64	fid,
198 		 __u32	tid,
199 		 __u64	sesid,
200 		 __u64	offset,
201 		 __u32	len),
202 	TP_ARGS(rreq_debug_id, rreq_debug_index,
203 		xid, fid, tid, sesid, offset, len),
204 	TP_STRUCT__entry(
205 		__field(unsigned int, rreq_debug_id)
206 		__field(unsigned int, rreq_debug_index)
207 		__field(unsigned int, xid)
208 		__field(__u64, fid)
209 		__field(__u32, tid)
210 		__field(__u64, sesid)
211 		__field(__u64, offset)
212 		__field(__u32, len)
213 	),
214 	TP_fast_assign(
215 		__entry->rreq_debug_id = rreq_debug_id;
216 		__entry->rreq_debug_index = rreq_debug_index;
217 		__entry->xid = xid;
218 		__entry->fid = fid;
219 		__entry->tid = tid;
220 		__entry->sesid = sesid;
221 		__entry->offset = offset;
222 		__entry->len = len;
223 	),
224 	TP_printk("R=%08x[%x] xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x",
225 		  __entry->rreq_debug_id, __entry->rreq_debug_index,
226 		  __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
227 		  __entry->offset, __entry->len)
228 )
229 
230 #define DEFINE_SMB3_RW_DONE_EVENT(name)         \
231 DEFINE_EVENT(smb3_rw_done_class, smb3_##name,   \
232 	TP_PROTO(unsigned int rreq_debug_id,	\
233 		 unsigned int rreq_debug_index,	\
234 		 unsigned int xid,		\
235 		__u64	fid,			\
236 		__u32	tid,			\
237 		__u64	sesid,			\
238 		__u64	offset,			\
239 		__u32	len),			\
240 	TP_ARGS(rreq_debug_id, rreq_debug_index, xid, fid, tid, sesid, offset, len))
241 
242 DEFINE_SMB3_RW_DONE_EVENT(read_enter);
243 DEFINE_SMB3_RW_DONE_EVENT(read_done);
244 
245 /* For logging successful other op */
246 DECLARE_EVENT_CLASS(smb3_other_done_class,
247 	TP_PROTO(unsigned int xid,
248 		__u64	fid,
249 		__u32	tid,
250 		__u64	sesid,
251 		__u64	offset,
252 		__u32	len),
253 	TP_ARGS(xid, fid, tid, sesid, offset, len),
254 	TP_STRUCT__entry(
255 		__field(unsigned int, xid)
256 		__field(__u64, fid)
257 		__field(__u32, tid)
258 		__field(__u64, sesid)
259 		__field(__u64, offset)
260 		__field(__u32, len)
261 	),
262 	TP_fast_assign(
263 		__entry->xid = xid;
264 		__entry->fid = fid;
265 		__entry->tid = tid;
266 		__entry->sesid = sesid;
267 		__entry->offset = offset;
268 		__entry->len = len;
269 	),
270 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x",
271 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
272 		__entry->offset, __entry->len)
273 )
274 
275 #define DEFINE_SMB3_OTHER_DONE_EVENT(name)         \
276 DEFINE_EVENT(smb3_other_done_class, smb3_##name,   \
277 	TP_PROTO(unsigned int xid,		\
278 		__u64	fid,			\
279 		__u32	tid,			\
280 		__u64	sesid,			\
281 		__u64	offset,			\
282 		__u32	len),			\
283 	TP_ARGS(xid, fid, tid, sesid, offset, len))
284 
285 DEFINE_SMB3_OTHER_DONE_EVENT(write_enter);
286 DEFINE_SMB3_OTHER_DONE_EVENT(query_dir_enter);
287 DEFINE_SMB3_OTHER_DONE_EVENT(zero_enter);
288 DEFINE_SMB3_OTHER_DONE_EVENT(falloc_enter);
289 DEFINE_SMB3_OTHER_DONE_EVENT(write_done);
290 DEFINE_SMB3_OTHER_DONE_EVENT(query_dir_done);
291 DEFINE_SMB3_OTHER_DONE_EVENT(zero_done);
292 DEFINE_SMB3_OTHER_DONE_EVENT(falloc_done);
293 
294 /* For logging successful set EOF (truncate) */
295 DECLARE_EVENT_CLASS(smb3_eof_class,
296 	TP_PROTO(unsigned int xid,
297 		__u64	fid,
298 		__u32	tid,
299 		__u64	sesid,
300 		__u64	offset),
301 	TP_ARGS(xid, fid, tid, sesid, offset),
302 	TP_STRUCT__entry(
303 		__field(unsigned int, xid)
304 		__field(__u64, fid)
305 		__field(__u32, tid)
306 		__field(__u64, sesid)
307 		__field(__u64, offset)
308 	),
309 	TP_fast_assign(
310 		__entry->xid = xid;
311 		__entry->fid = fid;
312 		__entry->tid = tid;
313 		__entry->sesid = sesid;
314 		__entry->offset = offset;
315 	),
316 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx",
317 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
318 		__entry->offset)
319 )
320 
321 #define DEFINE_SMB3_EOF_EVENT(name)         \
322 DEFINE_EVENT(smb3_eof_class, smb3_##name,   \
323 	TP_PROTO(unsigned int xid,		\
324 		__u64	fid,			\
325 		__u32	tid,			\
326 		__u64	sesid,			\
327 		__u64	offset),		\
328 	TP_ARGS(xid, fid, tid, sesid, offset))
329 
330 DEFINE_SMB3_EOF_EVENT(set_eof);
331 
332 /*
333  * For handle based calls other than read and write, and get/set info
334  */
335 DECLARE_EVENT_CLASS(smb3_fd_class,
336 	TP_PROTO(unsigned int xid,
337 		__u64	fid,
338 		__u32	tid,
339 		__u64	sesid),
340 	TP_ARGS(xid, fid, tid, sesid),
341 	TP_STRUCT__entry(
342 		__field(unsigned int, xid)
343 		__field(__u64, fid)
344 		__field(__u32, tid)
345 		__field(__u64, sesid)
346 	),
347 	TP_fast_assign(
348 		__entry->xid = xid;
349 		__entry->fid = fid;
350 		__entry->tid = tid;
351 		__entry->sesid = sesid;
352 	),
353 	TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx",
354 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid)
355 )
356 
357 #define DEFINE_SMB3_FD_EVENT(name)          \
358 DEFINE_EVENT(smb3_fd_class, smb3_##name,    \
359 	TP_PROTO(unsigned int xid,		\
360 		__u64	fid,			\
361 		__u32	tid,			\
362 		__u64	sesid),			\
363 	TP_ARGS(xid, fid, tid, sesid))
364 
365 DEFINE_SMB3_FD_EVENT(flush_enter);
366 DEFINE_SMB3_FD_EVENT(flush_done);
367 DEFINE_SMB3_FD_EVENT(close_enter);
368 DEFINE_SMB3_FD_EVENT(close_done);
369 DEFINE_SMB3_FD_EVENT(oplock_not_found);
370 
371 DECLARE_EVENT_CLASS(smb3_fd_err_class,
372 	TP_PROTO(unsigned int xid,
373 		__u64	fid,
374 		__u32	tid,
375 		__u64	sesid,
376 		int	rc),
377 	TP_ARGS(xid, fid, tid, sesid, rc),
378 	TP_STRUCT__entry(
379 		__field(unsigned int, xid)
380 		__field(__u64, fid)
381 		__field(__u32, tid)
382 		__field(__u64, sesid)
383 		__field(int, rc)
384 	),
385 	TP_fast_assign(
386 		__entry->xid = xid;
387 		__entry->fid = fid;
388 		__entry->tid = tid;
389 		__entry->sesid = sesid;
390 		__entry->rc = rc;
391 	),
392 	TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d",
393 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
394 		__entry->rc)
395 )
396 
397 #define DEFINE_SMB3_FD_ERR_EVENT(name)          \
398 DEFINE_EVENT(smb3_fd_err_class, smb3_##name,    \
399 	TP_PROTO(unsigned int xid,		\
400 		__u64	fid,			\
401 		__u32	tid,			\
402 		__u64	sesid,			\
403 		int	rc),			\
404 	TP_ARGS(xid, fid, tid, sesid, rc))
405 
406 DEFINE_SMB3_FD_ERR_EVENT(flush_err);
407 DEFINE_SMB3_FD_ERR_EVENT(lock_err);
408 DEFINE_SMB3_FD_ERR_EVENT(close_err);
409 
410 /*
411  * For handle based query/set info calls
412  */
413 DECLARE_EVENT_CLASS(smb3_inf_enter_class,
414 	TP_PROTO(unsigned int xid,
415 		__u64	fid,
416 		__u32	tid,
417 		__u64	sesid,
418 		__u8	infclass,
419 		__u32	type),
420 	TP_ARGS(xid, fid, tid, sesid, infclass, type),
421 	TP_STRUCT__entry(
422 		__field(unsigned int, xid)
423 		__field(__u64, fid)
424 		__field(__u32, tid)
425 		__field(__u64, sesid)
426 		__field(__u8, infclass)
427 		__field(__u32, type)
428 	),
429 	TP_fast_assign(
430 		__entry->xid = xid;
431 		__entry->fid = fid;
432 		__entry->tid = tid;
433 		__entry->sesid = sesid;
434 		__entry->infclass = infclass;
435 		__entry->type = type;
436 	),
437 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x",
438 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
439 		__entry->infclass, __entry->type)
440 )
441 
442 #define DEFINE_SMB3_INF_ENTER_EVENT(name)          \
443 DEFINE_EVENT(smb3_inf_enter_class, smb3_##name,    \
444 	TP_PROTO(unsigned int xid,		\
445 		__u64	fid,			\
446 		__u32	tid,			\
447 		__u64	sesid,			\
448 		__u8	infclass,		\
449 		__u32	type),			\
450 	TP_ARGS(xid, fid, tid, sesid, infclass, type))
451 
452 DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter);
453 DEFINE_SMB3_INF_ENTER_EVENT(query_info_done);
454 DEFINE_SMB3_INF_ENTER_EVENT(notify_enter);
455 DEFINE_SMB3_INF_ENTER_EVENT(notify_done);
456 
457 DECLARE_EVENT_CLASS(smb3_inf_err_class,
458 	TP_PROTO(unsigned int xid,
459 		__u64	fid,
460 		__u32	tid,
461 		__u64	sesid,
462 		__u8	infclass,
463 		__u32	type,
464 		int	rc),
465 	TP_ARGS(xid, fid, tid, sesid, infclass, type, rc),
466 	TP_STRUCT__entry(
467 		__field(unsigned int, xid)
468 		__field(__u64, fid)
469 		__field(__u32, tid)
470 		__field(__u64, sesid)
471 		__field(__u8, infclass)
472 		__field(__u32, type)
473 		__field(int, rc)
474 	),
475 	TP_fast_assign(
476 		__entry->xid = xid;
477 		__entry->fid = fid;
478 		__entry->tid = tid;
479 		__entry->sesid = sesid;
480 		__entry->infclass = infclass;
481 		__entry->type = type;
482 		__entry->rc = rc;
483 	),
484 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d",
485 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
486 		__entry->infclass, __entry->type, __entry->rc)
487 )
488 
489 #define DEFINE_SMB3_INF_ERR_EVENT(name)          \
490 DEFINE_EVENT(smb3_inf_err_class, smb3_##name,    \
491 	TP_PROTO(unsigned int xid,		\
492 		__u64	fid,			\
493 		__u32	tid,			\
494 		__u64	sesid,			\
495 		__u8	infclass,		\
496 		__u32	type,			\
497 		int	rc),			\
498 	TP_ARGS(xid, fid, tid, sesid, infclass, type, rc))
499 
500 DEFINE_SMB3_INF_ERR_EVENT(query_info_err);
501 DEFINE_SMB3_INF_ERR_EVENT(set_info_err);
502 DEFINE_SMB3_INF_ERR_EVENT(notify_err);
503 DEFINE_SMB3_INF_ERR_EVENT(fsctl_err);
504 
505 DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class,
506 	TP_PROTO(unsigned int xid,
507 		__u32	tid,
508 		__u64	sesid,
509 		const char *full_path),
510 	TP_ARGS(xid, tid, sesid, full_path),
511 	TP_STRUCT__entry(
512 		__field(unsigned int, xid)
513 		__field(__u32, tid)
514 		__field(__u64, sesid)
515 		__string(path, full_path)
516 	),
517 	TP_fast_assign(
518 		__entry->xid = xid;
519 		__entry->tid = tid;
520 		__entry->sesid = sesid;
521 		__assign_str(path);
522 	),
523 	TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s",
524 		__entry->xid, __entry->sesid, __entry->tid,
525 		__get_str(path))
526 )
527 
528 #define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name)     \
529 DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name,    \
530 	TP_PROTO(unsigned int xid,		\
531 		__u32	tid,			\
532 		__u64	sesid,			\
533 		const char *full_path),		\
534 	TP_ARGS(xid, tid, sesid, full_path))
535 
536 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter);
537 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter);
538 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter);
539 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter);
540 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter);
541 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter);
542 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter);
543 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_reparse_compound_enter);
544 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(get_reparse_compound_enter);
545 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter);
546 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter);
547 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(tdis_enter);
548 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mknod_enter);
549 
550 DECLARE_EVENT_CLASS(smb3_inf_compound_done_class,
551 	TP_PROTO(unsigned int xid,
552 		__u32	tid,
553 		__u64	sesid),
554 	TP_ARGS(xid, tid, sesid),
555 	TP_STRUCT__entry(
556 		__field(unsigned int, xid)
557 		__field(__u32, tid)
558 		__field(__u64, sesid)
559 	),
560 	TP_fast_assign(
561 		__entry->xid = xid;
562 		__entry->tid = tid;
563 		__entry->sesid = sesid;
564 	),
565 	TP_printk("xid=%u sid=0x%llx tid=0x%x",
566 		__entry->xid, __entry->sesid, __entry->tid)
567 )
568 
569 #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name)     \
570 DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name,    \
571 	TP_PROTO(unsigned int xid,		\
572 		__u32	tid,			\
573 		__u64	sesid),			\
574 	TP_ARGS(xid, tid, sesid))
575 
576 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done);
577 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done);
578 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done);
579 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done);
580 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done);
581 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done);
582 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done);
583 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_reparse_compound_done);
584 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(get_reparse_compound_done);
585 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_wsl_ea_compound_done);
586 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done);
587 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done);
588 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(tdis_done);
589 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mknod_done);
590 
591 DECLARE_EVENT_CLASS(smb3_inf_compound_err_class,
592 	TP_PROTO(unsigned int xid,
593 		__u32	tid,
594 		__u64	sesid,
595 		int	rc),
596 	TP_ARGS(xid, tid, sesid, rc),
597 	TP_STRUCT__entry(
598 		__field(unsigned int, xid)
599 		__field(__u32, tid)
600 		__field(__u64, sesid)
601 		__field(int, rc)
602 	),
603 	TP_fast_assign(
604 		__entry->xid = xid;
605 		__entry->tid = tid;
606 		__entry->sesid = sesid;
607 		__entry->rc = rc;
608 	),
609 	TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d",
610 		__entry->xid, __entry->sesid, __entry->tid,
611 		__entry->rc)
612 )
613 
614 #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name)     \
615 DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name,    \
616 	TP_PROTO(unsigned int xid,		\
617 		__u32	tid,			\
618 		__u64	sesid,			\
619 		int rc),			\
620 	TP_ARGS(xid, tid, sesid, rc))
621 
622 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err);
623 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err);
624 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err);
625 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err);
626 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err);
627 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err);
628 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err);
629 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_reparse_compound_err);
630 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(get_reparse_compound_err);
631 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_wsl_ea_compound_err);
632 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err);
633 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err);
634 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(tdis_err);
635 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mknod_err);
636 
637 /*
638  * For logging SMB3 Status code and Command for responses which return errors
639  */
640 DECLARE_EVENT_CLASS(smb3_cmd_err_class,
641 	TP_PROTO(__u32	tid,
642 		__u64	sesid,
643 		__u16	cmd,
644 		__u64	mid,
645 		__u32	status,
646 		int	rc),
647 	TP_ARGS(tid, sesid, cmd, mid, status, rc),
648 	TP_STRUCT__entry(
649 		__field(__u32, tid)
650 		__field(__u64, sesid)
651 		__field(__u16, cmd)
652 		__field(__u64, mid)
653 		__field(__u32, status)
654 		__field(int, rc)
655 	),
656 	TP_fast_assign(
657 		__entry->tid = tid;
658 		__entry->sesid = sesid;
659 		__entry->cmd = cmd;
660 		__entry->mid = mid;
661 		__entry->status = status;
662 		__entry->rc = rc;
663 	),
664 	TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d",
665 		__entry->sesid, __entry->tid, __entry->cmd, __entry->mid,
666 		__entry->status, __entry->rc)
667 )
668 
669 #define DEFINE_SMB3_CMD_ERR_EVENT(name)          \
670 DEFINE_EVENT(smb3_cmd_err_class, smb3_##name,    \
671 	TP_PROTO(__u32	tid,			\
672 		__u64	sesid,			\
673 		__u16	cmd,			\
674 		__u64	mid,			\
675 		__u32	status,			\
676 		int	rc),			\
677 	TP_ARGS(tid, sesid, cmd, mid, status, rc))
678 
679 DEFINE_SMB3_CMD_ERR_EVENT(cmd_err);
680 
681 DECLARE_EVENT_CLASS(smb3_cmd_done_class,
682 	TP_PROTO(__u32	tid,
683 		__u64	sesid,
684 		__u16	cmd,
685 		__u64	mid),
686 	TP_ARGS(tid, sesid, cmd, mid),
687 	TP_STRUCT__entry(
688 		__field(__u32, tid)
689 		__field(__u64, sesid)
690 		__field(__u16, cmd)
691 		__field(__u64, mid)
692 	),
693 	TP_fast_assign(
694 		__entry->tid = tid;
695 		__entry->sesid = sesid;
696 		__entry->cmd = cmd;
697 		__entry->mid = mid;
698 	),
699 	TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu",
700 		__entry->sesid, __entry->tid,
701 		__entry->cmd, __entry->mid)
702 )
703 
704 #define DEFINE_SMB3_CMD_DONE_EVENT(name)          \
705 DEFINE_EVENT(smb3_cmd_done_class, smb3_##name,    \
706 	TP_PROTO(__u32	tid,			\
707 		__u64	sesid,			\
708 		__u16	cmd,			\
709 		__u64	mid),			\
710 	TP_ARGS(tid, sesid, cmd, mid))
711 
712 DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter);
713 DEFINE_SMB3_CMD_DONE_EVENT(cmd_done);
714 DEFINE_SMB3_CMD_DONE_EVENT(ses_expired);
715 
716 DECLARE_EVENT_CLASS(smb3_mid_class,
717 	TP_PROTO(__u16	cmd,
718 		__u64	mid,
719 		__u32	pid,
720 		unsigned long when_sent,
721 		unsigned long when_received),
722 	TP_ARGS(cmd, mid, pid, when_sent, when_received),
723 	TP_STRUCT__entry(
724 		__field(__u16, cmd)
725 		__field(__u64, mid)
726 		__field(__u32, pid)
727 		__field(unsigned long, when_sent)
728 		__field(unsigned long, when_received)
729 	),
730 	TP_fast_assign(
731 		__entry->cmd = cmd;
732 		__entry->mid = mid;
733 		__entry->pid = pid;
734 		__entry->when_sent = when_sent;
735 		__entry->when_received = when_received;
736 	),
737 	TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu",
738 		__entry->cmd, __entry->mid, __entry->pid, __entry->when_sent,
739 		__entry->when_received)
740 )
741 
742 #define DEFINE_SMB3_MID_EVENT(name)          \
743 DEFINE_EVENT(smb3_mid_class, smb3_##name,    \
744 	TP_PROTO(__u16	cmd,			\
745 		__u64	mid,			\
746 		__u32	pid,			\
747 		unsigned long when_sent,	\
748 		unsigned long when_received),	\
749 	TP_ARGS(cmd, mid, pid, when_sent, when_received))
750 
751 DEFINE_SMB3_MID_EVENT(slow_rsp);
752 
753 DECLARE_EVENT_CLASS(smb3_exit_err_class,
754 	TP_PROTO(unsigned int xid,
755 		const char *func_name,
756 		int	rc),
757 	TP_ARGS(xid, func_name, rc),
758 	TP_STRUCT__entry(
759 		__field(unsigned int, xid)
760 		__string(func_name, func_name)
761 		__field(int, rc)
762 	),
763 	TP_fast_assign(
764 		__entry->xid = xid;
765 		__assign_str(func_name);
766 		__entry->rc = rc;
767 	),
768 	TP_printk("\t%s: xid=%u rc=%d",
769 		__get_str(func_name), __entry->xid, __entry->rc)
770 )
771 
772 #define DEFINE_SMB3_EXIT_ERR_EVENT(name)          \
773 DEFINE_EVENT(smb3_exit_err_class, smb3_##name,    \
774 	TP_PROTO(unsigned int xid,		\
775 		const char *func_name,		\
776 		int	rc),			\
777 	TP_ARGS(xid, func_name, rc))
778 
779 DEFINE_SMB3_EXIT_ERR_EVENT(exit_err);
780 
781 
782 DECLARE_EVENT_CLASS(smb3_sync_err_class,
783 	TP_PROTO(unsigned long ino,
784 		int	rc),
785 	TP_ARGS(ino, rc),
786 	TP_STRUCT__entry(
787 		__field(unsigned long, ino)
788 		__field(int, rc)
789 	),
790 	TP_fast_assign(
791 		__entry->ino = ino;
792 		__entry->rc = rc;
793 	),
794 	TP_printk("\tino=%lu rc=%d",
795 		__entry->ino, __entry->rc)
796 )
797 
798 #define DEFINE_SMB3_SYNC_ERR_EVENT(name)          \
799 DEFINE_EVENT(smb3_sync_err_class, cifs_##name,    \
800 	TP_PROTO(unsigned long ino,		\
801 		int	rc),			\
802 	TP_ARGS(ino, rc))
803 
804 DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err);
805 DEFINE_SMB3_SYNC_ERR_EVENT(flush_err);
806 
807 
808 DECLARE_EVENT_CLASS(smb3_enter_exit_class,
809 	TP_PROTO(unsigned int xid,
810 		const char *func_name),
811 	TP_ARGS(xid, func_name),
812 	TP_STRUCT__entry(
813 		__field(unsigned int, xid)
814 		__string(func_name, func_name)
815 	),
816 	TP_fast_assign(
817 		__entry->xid = xid;
818 		__assign_str(func_name);
819 	),
820 	TP_printk("\t%s: xid=%u",
821 		__get_str(func_name), __entry->xid)
822 )
823 
824 #define DEFINE_SMB3_ENTER_EXIT_EVENT(name)        \
825 DEFINE_EVENT(smb3_enter_exit_class, smb3_##name,  \
826 	TP_PROTO(unsigned int xid,		\
827 		const char *func_name),		\
828 	TP_ARGS(xid, func_name))
829 
830 DEFINE_SMB3_ENTER_EXIT_EVENT(enter);
831 DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done);
832 
833 /*
834  * For SMB2/SMB3 tree connect
835  */
836 
837 DECLARE_EVENT_CLASS(smb3_tcon_class,
838 	TP_PROTO(unsigned int xid,
839 		__u32	tid,
840 		__u64	sesid,
841 		const char *unc_name,
842 		int	rc),
843 	TP_ARGS(xid, tid, sesid, unc_name, rc),
844 	TP_STRUCT__entry(
845 		__field(unsigned int, xid)
846 		__field(__u32, tid)
847 		__field(__u64, sesid)
848 		__string(name, unc_name)
849 		__field(int, rc)
850 	),
851 	TP_fast_assign(
852 		__entry->xid = xid;
853 		__entry->tid = tid;
854 		__entry->sesid = sesid;
855 		__assign_str(name);
856 		__entry->rc = rc;
857 	),
858 	TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d",
859 		__entry->xid, __entry->sesid, __entry->tid,
860 		__get_str(name), __entry->rc)
861 )
862 
863 #define DEFINE_SMB3_TCON_EVENT(name)          \
864 DEFINE_EVENT(smb3_tcon_class, smb3_##name,    \
865 	TP_PROTO(unsigned int xid,		\
866 		__u32	tid,			\
867 		__u64	sesid,			\
868 		const char *unc_name,		\
869 		int	rc),			\
870 	TP_ARGS(xid, tid, sesid, unc_name, rc))
871 
872 DEFINE_SMB3_TCON_EVENT(tcon);
873 DEFINE_SMB3_TCON_EVENT(qfs_done);
874 
875 /*
876  * For smb2/smb3 open (including create and mkdir) calls
877  */
878 
879 DECLARE_EVENT_CLASS(smb3_open_enter_class,
880 	TP_PROTO(unsigned int xid,
881 		__u32	tid,
882 		__u64	sesid,
883 		const char *full_path,
884 		int	create_options,
885 		int	desired_access),
886 	TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access),
887 	TP_STRUCT__entry(
888 		__field(unsigned int, xid)
889 		__field(__u32, tid)
890 		__field(__u64, sesid)
891 		__string(path, full_path)
892 		__field(int, create_options)
893 		__field(int, desired_access)
894 	),
895 	TP_fast_assign(
896 		__entry->xid = xid;
897 		__entry->tid = tid;
898 		__entry->sesid = sesid;
899 		__assign_str(path);
900 		__entry->create_options = create_options;
901 		__entry->desired_access = desired_access;
902 	),
903 	TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s cr_opts=0x%x des_access=0x%x",
904 		__entry->xid, __entry->sesid, __entry->tid, __get_str(path),
905 		__entry->create_options, __entry->desired_access)
906 )
907 
908 #define DEFINE_SMB3_OPEN_ENTER_EVENT(name)        \
909 DEFINE_EVENT(smb3_open_enter_class, smb3_##name,  \
910 	TP_PROTO(unsigned int xid,		\
911 		__u32	tid,			\
912 		__u64	sesid,			\
913 		const char *full_path,		\
914 		int	create_options,		\
915 		int	desired_access),	\
916 	TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access))
917 
918 DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter);
919 DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter);
920 
921 DECLARE_EVENT_CLASS(smb3_open_err_class,
922 	TP_PROTO(unsigned int xid,
923 		__u32	tid,
924 		__u64	sesid,
925 		int	create_options,
926 		int	desired_access,
927 		int	rc),
928 	TP_ARGS(xid, tid, sesid, create_options, desired_access, rc),
929 	TP_STRUCT__entry(
930 		__field(unsigned int, xid)
931 		__field(__u32, tid)
932 		__field(__u64, sesid)
933 		__field(int,   create_options)
934 		__field(int, desired_access)
935 		__field(int, rc)
936 	),
937 	TP_fast_assign(
938 		__entry->xid = xid;
939 		__entry->tid = tid;
940 		__entry->sesid = sesid;
941 		__entry->create_options = create_options;
942 		__entry->desired_access = desired_access;
943 		__entry->rc = rc;
944 	),
945 	TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d",
946 		__entry->xid, __entry->sesid, __entry->tid,
947 		__entry->create_options, __entry->desired_access, __entry->rc)
948 )
949 
950 #define DEFINE_SMB3_OPEN_ERR_EVENT(name)          \
951 DEFINE_EVENT(smb3_open_err_class, smb3_##name,    \
952 	TP_PROTO(unsigned int xid,		\
953 		__u32	tid,			\
954 		__u64	sesid,			\
955 		int	create_options,		\
956 		int	desired_access,		\
957 		int	rc),			\
958 	TP_ARGS(xid, tid, sesid, create_options, desired_access, rc))
959 
960 DEFINE_SMB3_OPEN_ERR_EVENT(open_err);
961 DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err);
962 
963 DECLARE_EVENT_CLASS(smb3_open_done_class,
964 	TP_PROTO(unsigned int xid,
965 		__u64	fid,
966 		__u32	tid,
967 		__u64	sesid,
968 		int	create_options,
969 		int	desired_access),
970 	TP_ARGS(xid, fid, tid, sesid, create_options, desired_access),
971 	TP_STRUCT__entry(
972 		__field(unsigned int, xid)
973 		__field(__u64, fid)
974 		__field(__u32, tid)
975 		__field(__u64, sesid)
976 		__field(int, create_options)
977 		__field(int, desired_access)
978 	),
979 	TP_fast_assign(
980 		__entry->xid = xid;
981 		__entry->fid = fid;
982 		__entry->tid = tid;
983 		__entry->sesid = sesid;
984 		__entry->create_options = create_options;
985 		__entry->desired_access = desired_access;
986 	),
987 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x",
988 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
989 		__entry->create_options, __entry->desired_access)
990 )
991 
992 #define DEFINE_SMB3_OPEN_DONE_EVENT(name)        \
993 DEFINE_EVENT(smb3_open_done_class, smb3_##name,  \
994 	TP_PROTO(unsigned int xid,		\
995 		__u64	fid,			\
996 		__u32	tid,			\
997 		__u64	sesid,			\
998 		int	create_options,		\
999 		int	desired_access),	\
1000 	TP_ARGS(xid, fid, tid, sesid, create_options, desired_access))
1001 
1002 DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
1003 DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);
1004 
1005 
1006 DECLARE_EVENT_CLASS(smb3_lease_done_class,
1007 	TP_PROTO(__u32	lease_state,
1008 		__u32	tid,
1009 		__u64	sesid,
1010 		__u64	lease_key_low,
1011 		__u64	lease_key_high),
1012 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high),
1013 	TP_STRUCT__entry(
1014 		__field(__u32, lease_state)
1015 		__field(__u32, tid)
1016 		__field(__u64, sesid)
1017 		__field(__u64, lease_key_low)
1018 		__field(__u64, lease_key_high)
1019 	),
1020 	TP_fast_assign(
1021 		__entry->lease_state = lease_state;
1022 		__entry->tid = tid;
1023 		__entry->sesid = sesid;
1024 		__entry->lease_key_low = lease_key_low;
1025 		__entry->lease_key_high = lease_key_high;
1026 	),
1027 	TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x",
1028 		__entry->sesid, __entry->tid, __entry->lease_key_high,
1029 		__entry->lease_key_low, __entry->lease_state)
1030 )
1031 
1032 #define DEFINE_SMB3_LEASE_DONE_EVENT(name)        \
1033 DEFINE_EVENT(smb3_lease_done_class, smb3_##name,  \
1034 	TP_PROTO(__u32	lease_state,		\
1035 		__u32	tid,			\
1036 		__u64	sesid,			\
1037 		__u64	lease_key_low,		\
1038 		__u64	lease_key_high),	\
1039 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high))
1040 
1041 DEFINE_SMB3_LEASE_DONE_EVENT(lease_done);
1042 DEFINE_SMB3_LEASE_DONE_EVENT(lease_not_found);
1043 
1044 DECLARE_EVENT_CLASS(smb3_lease_err_class,
1045 	TP_PROTO(__u32	lease_state,
1046 		__u32	tid,
1047 		__u64	sesid,
1048 		__u64	lease_key_low,
1049 		__u64	lease_key_high,
1050 		int	rc),
1051 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc),
1052 	TP_STRUCT__entry(
1053 		__field(__u32, lease_state)
1054 		__field(__u32, tid)
1055 		__field(__u64, sesid)
1056 		__field(__u64, lease_key_low)
1057 		__field(__u64, lease_key_high)
1058 		__field(int, rc)
1059 	),
1060 	TP_fast_assign(
1061 		__entry->lease_state = lease_state;
1062 		__entry->tid = tid;
1063 		__entry->sesid = sesid;
1064 		__entry->lease_key_low = lease_key_low;
1065 		__entry->lease_key_high = lease_key_high;
1066 		__entry->rc = rc;
1067 	),
1068 	TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d",
1069 		__entry->sesid, __entry->tid, __entry->lease_key_high,
1070 		__entry->lease_key_low, __entry->lease_state, __entry->rc)
1071 )
1072 
1073 #define DEFINE_SMB3_LEASE_ERR_EVENT(name)        \
1074 DEFINE_EVENT(smb3_lease_err_class, smb3_##name,  \
1075 	TP_PROTO(__u32	lease_state,		\
1076 		__u32	tid,			\
1077 		__u64	sesid,			\
1078 		__u64	lease_key_low,		\
1079 		__u64	lease_key_high,		\
1080 		int	rc),			\
1081 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc))
1082 
1083 DEFINE_SMB3_LEASE_ERR_EVENT(lease_err);
1084 
1085 DECLARE_EVENT_CLASS(smb3_connect_class,
1086 	TP_PROTO(char *hostname,
1087 		__u64 conn_id,
1088 		const struct __kernel_sockaddr_storage *dst_addr),
1089 	TP_ARGS(hostname, conn_id, dst_addr),
1090 	TP_STRUCT__entry(
1091 		__string(hostname, hostname)
1092 		__field(__u64, conn_id)
1093 		__array(__u8, dst_addr, sizeof(struct sockaddr_storage))
1094 	),
1095 	TP_fast_assign(
1096 		struct sockaddr_storage *pss = NULL;
1097 
1098 		__entry->conn_id = conn_id;
1099 		pss = (struct sockaddr_storage *)__entry->dst_addr;
1100 		*pss = *dst_addr;
1101 		__assign_str(hostname);
1102 	),
1103 	TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc",
1104 		__entry->conn_id,
1105 		__get_str(hostname),
1106 		__entry->dst_addr)
1107 )
1108 
1109 #define DEFINE_SMB3_CONNECT_EVENT(name)        \
1110 DEFINE_EVENT(smb3_connect_class, smb3_##name,  \
1111 	TP_PROTO(char *hostname,		\
1112 		__u64 conn_id,			\
1113 		const struct __kernel_sockaddr_storage *addr),	\
1114 	TP_ARGS(hostname, conn_id, addr))
1115 
1116 DEFINE_SMB3_CONNECT_EVENT(connect_done);
1117 DEFINE_SMB3_CONNECT_EVENT(smbd_connect_done);
1118 DEFINE_SMB3_CONNECT_EVENT(smbd_connect_err);
1119 
1120 DECLARE_EVENT_CLASS(smb3_connect_err_class,
1121 	TP_PROTO(char *hostname, __u64 conn_id,
1122 		const struct __kernel_sockaddr_storage *dst_addr, int rc),
1123 	TP_ARGS(hostname, conn_id, dst_addr, rc),
1124 	TP_STRUCT__entry(
1125 		__string(hostname, hostname)
1126 		__field(__u64, conn_id)
1127 		__array(__u8, dst_addr, sizeof(struct sockaddr_storage))
1128 		__field(int, rc)
1129 	),
1130 	TP_fast_assign(
1131 		struct sockaddr_storage *pss = NULL;
1132 
1133 		__entry->conn_id = conn_id;
1134 		__entry->rc = rc;
1135 		pss = (struct sockaddr_storage *)__entry->dst_addr;
1136 		*pss = *dst_addr;
1137 		__assign_str(hostname);
1138 	),
1139 	TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc",
1140 		__entry->rc,
1141 		__entry->conn_id,
1142 		__get_str(hostname),
1143 		__entry->dst_addr)
1144 )
1145 
1146 #define DEFINE_SMB3_CONNECT_ERR_EVENT(name)        \
1147 DEFINE_EVENT(smb3_connect_err_class, smb3_##name,  \
1148 	TP_PROTO(char *hostname,		\
1149 		__u64 conn_id,			\
1150 		const struct __kernel_sockaddr_storage *addr,	\
1151 		int rc),			\
1152 	TP_ARGS(hostname, conn_id, addr, rc))
1153 
1154 DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err);
1155 
1156 DECLARE_EVENT_CLASS(smb3_reconnect_class,
1157 	TP_PROTO(__u64	currmid,
1158 		__u64 conn_id,
1159 		char *hostname),
1160 	TP_ARGS(currmid, conn_id, hostname),
1161 	TP_STRUCT__entry(
1162 		__field(__u64, currmid)
1163 		__field(__u64, conn_id)
1164 		__string(hostname, hostname)
1165 	),
1166 	TP_fast_assign(
1167 		__entry->currmid = currmid;
1168 		__entry->conn_id = conn_id;
1169 		__assign_str(hostname);
1170 	),
1171 	TP_printk("conn_id=0x%llx server=%s current_mid=%llu",
1172 		__entry->conn_id,
1173 		__get_str(hostname),
1174 		__entry->currmid)
1175 )
1176 
1177 #define DEFINE_SMB3_RECONNECT_EVENT(name)        \
1178 DEFINE_EVENT(smb3_reconnect_class, smb3_##name,  \
1179 	TP_PROTO(__u64	currmid,		\
1180 		__u64 conn_id,			\
1181 		char *hostname),				\
1182 	TP_ARGS(currmid, conn_id, hostname))
1183 
1184 DEFINE_SMB3_RECONNECT_EVENT(reconnect);
1185 DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect);
1186 
1187 DECLARE_EVENT_CLASS(smb3_ses_class,
1188 	TP_PROTO(__u64	sesid),
1189 	TP_ARGS(sesid),
1190 	TP_STRUCT__entry(
1191 		__field(__u64, sesid)
1192 	),
1193 	TP_fast_assign(
1194 		__entry->sesid = sesid;
1195 	),
1196 	TP_printk("sid=0x%llx",
1197 		__entry->sesid)
1198 )
1199 
1200 #define DEFINE_SMB3_SES_EVENT(name)        \
1201 DEFINE_EVENT(smb3_ses_class, smb3_##name,  \
1202 	TP_PROTO(__u64	sesid),				\
1203 	TP_ARGS(sesid))
1204 
1205 DEFINE_SMB3_SES_EVENT(ses_not_found);
1206 
1207 DECLARE_EVENT_CLASS(smb3_ioctl_class,
1208 	TP_PROTO(unsigned int xid,
1209 		__u64	fid,
1210 		unsigned int command),
1211 	TP_ARGS(xid, fid, command),
1212 	TP_STRUCT__entry(
1213 		__field(unsigned int, xid)
1214 		__field(__u64, fid)
1215 		__field(unsigned int, command)
1216 	),
1217 	TP_fast_assign(
1218 		__entry->xid = xid;
1219 		__entry->fid = fid;
1220 		__entry->command = command;
1221 	),
1222 	TP_printk("xid=%u fid=0x%llx ioctl cmd=0x%x",
1223 		__entry->xid, __entry->fid, __entry->command)
1224 )
1225 
1226 #define DEFINE_SMB3_IOCTL_EVENT(name)        \
1227 DEFINE_EVENT(smb3_ioctl_class, smb3_##name,  \
1228 	TP_PROTO(unsigned int xid,	     \
1229 		__u64 fid,		     \
1230 		unsigned int command),	     \
1231 	TP_ARGS(xid, fid, command))
1232 
1233 DEFINE_SMB3_IOCTL_EVENT(ioctl);
1234 
1235 
1236 
1237 
1238 
1239 DECLARE_EVENT_CLASS(smb3_credit_class,
1240 	TP_PROTO(__u64	currmid,
1241 		__u64 conn_id,
1242 		char *hostname,
1243 		int credits,
1244 		int credits_to_add,
1245 		int in_flight),
1246 	TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight),
1247 	TP_STRUCT__entry(
1248 		__field(__u64, currmid)
1249 		__field(__u64, conn_id)
1250 		__string(hostname, hostname)
1251 		__field(int, credits)
1252 		__field(int, credits_to_add)
1253 		__field(int, in_flight)
1254 	),
1255 	TP_fast_assign(
1256 		__entry->currmid = currmid;
1257 		__entry->conn_id = conn_id;
1258 		__assign_str(hostname);
1259 		__entry->credits = credits;
1260 		__entry->credits_to_add = credits_to_add;
1261 		__entry->in_flight = in_flight;
1262 	),
1263 	TP_printk("conn_id=0x%llx server=%s current_mid=%llu "
1264 			"credits=%d credit_change=%d in_flight=%d",
1265 		__entry->conn_id,
1266 		__get_str(hostname),
1267 		__entry->currmid,
1268 		__entry->credits,
1269 		__entry->credits_to_add,
1270 		__entry->in_flight)
1271 )
1272 
1273 #define DEFINE_SMB3_CREDIT_EVENT(name)        \
1274 DEFINE_EVENT(smb3_credit_class, smb3_##name,  \
1275 	TP_PROTO(__u64	currmid,		\
1276 		__u64 conn_id,			\
1277 		char *hostname,			\
1278 		int  credits,			\
1279 		int  credits_to_add,	\
1280 		int in_flight),			\
1281 	TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight))
1282 
1283 DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits);
1284 DEFINE_SMB3_CREDIT_EVENT(reconnect_detected);
1285 DEFINE_SMB3_CREDIT_EVENT(credit_timeout);
1286 DEFINE_SMB3_CREDIT_EVENT(insufficient_credits);
1287 DEFINE_SMB3_CREDIT_EVENT(too_many_credits);
1288 DEFINE_SMB3_CREDIT_EVENT(add_credits);
1289 DEFINE_SMB3_CREDIT_EVENT(adj_credits);
1290 DEFINE_SMB3_CREDIT_EVENT(hdr_credits);
1291 DEFINE_SMB3_CREDIT_EVENT(nblk_credits);
1292 DEFINE_SMB3_CREDIT_EVENT(pend_credits);
1293 DEFINE_SMB3_CREDIT_EVENT(wait_credits);
1294 DEFINE_SMB3_CREDIT_EVENT(waitff_credits);
1295 DEFINE_SMB3_CREDIT_EVENT(overflow_credits);
1296 DEFINE_SMB3_CREDIT_EVENT(set_credits);
1297 
1298 
1299 TRACE_EVENT(smb3_tcon_ref,
1300 	    TP_PROTO(unsigned int tcon_debug_id, int ref,
1301 		     enum smb3_tcon_ref_trace trace),
1302 	    TP_ARGS(tcon_debug_id, ref, trace),
1303 	    TP_STRUCT__entry(
1304 		    __field(unsigned int,		tcon)
1305 		    __field(int,			ref)
1306 		    __field(enum smb3_tcon_ref_trace,	trace)
1307 			     ),
1308 	    TP_fast_assign(
1309 		    __entry->tcon	= tcon_debug_id;
1310 		    __entry->ref	= ref;
1311 		    __entry->trace	= trace;
1312 			   ),
1313 	    TP_printk("TC=%08x %s r=%u",
1314 		      __entry->tcon,
1315 		      __print_symbolic(__entry->trace, smb3_tcon_ref_traces),
1316 		      __entry->ref)
1317 	    );
1318 
1319 
1320 #undef EM
1321 #undef E_
1322 #endif /* _CIFS_TRACE_H */
1323 
1324 #undef TRACE_INCLUDE_PATH
1325 #define TRACE_INCLUDE_PATH .
1326 #define TRACE_INCLUDE_FILE trace
1327 #include <trace/define_trace.h>
1328