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 #undef TRACE_SYSTEM
8 #define TRACE_SYSTEM cifs
9 
10 #if !defined(_CIFS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
11 #define _CIFS_TRACE_H
12 
13 #include <linux/tracepoint.h>
14 
15 /* For logging errors in read or write */
16 DECLARE_EVENT_CLASS(smb3_rw_err_class,
17 	TP_PROTO(unsigned int xid,
18 		__u64	fid,
19 		__u32	tid,
20 		__u64	sesid,
21 		__u64	offset,
22 		__u32	len,
23 		int	rc),
24 	TP_ARGS(xid, fid, tid, sesid, offset, len, rc),
25 	TP_STRUCT__entry(
26 		__field(unsigned int, xid)
27 		__field(__u64, fid)
28 		__field(__u32, tid)
29 		__field(__u64, sesid)
30 		__field(__u64, offset)
31 		__field(__u32, len)
32 		__field(int, rc)
33 	),
34 	TP_fast_assign(
35 		__entry->xid = xid;
36 		__entry->fid = fid;
37 		__entry->tid = tid;
38 		__entry->sesid = sesid;
39 		__entry->offset = offset;
40 		__entry->len = len;
41 		__entry->rc = rc;
42 	),
43 	TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d",
44 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
45 		__entry->offset, __entry->len, __entry->rc)
46 )
47 
48 #define DEFINE_SMB3_RW_ERR_EVENT(name)          \
49 DEFINE_EVENT(smb3_rw_err_class, smb3_##name,    \
50 	TP_PROTO(unsigned int xid,		\
51 		__u64	fid,			\
52 		__u32	tid,			\
53 		__u64	sesid,			\
54 		__u64	offset,			\
55 		__u32	len,			\
56 		int	rc),			\
57 	TP_ARGS(xid, fid, tid, sesid, offset, len, rc))
58 
59 DEFINE_SMB3_RW_ERR_EVENT(write_err);
60 DEFINE_SMB3_RW_ERR_EVENT(read_err);
61 DEFINE_SMB3_RW_ERR_EVENT(query_dir_err);
62 DEFINE_SMB3_RW_ERR_EVENT(zero_err);
63 DEFINE_SMB3_RW_ERR_EVENT(falloc_err);
64 
65 
66 /* For logging successful read or write */
67 DECLARE_EVENT_CLASS(smb3_rw_done_class,
68 	TP_PROTO(unsigned int xid,
69 		__u64	fid,
70 		__u32	tid,
71 		__u64	sesid,
72 		__u64	offset,
73 		__u32	len),
74 	TP_ARGS(xid, fid, tid, sesid, offset, len),
75 	TP_STRUCT__entry(
76 		__field(unsigned int, xid)
77 		__field(__u64, fid)
78 		__field(__u32, tid)
79 		__field(__u64, sesid)
80 		__field(__u64, offset)
81 		__field(__u32, len)
82 	),
83 	TP_fast_assign(
84 		__entry->xid = xid;
85 		__entry->fid = fid;
86 		__entry->tid = tid;
87 		__entry->sesid = sesid;
88 		__entry->offset = offset;
89 		__entry->len = len;
90 	),
91 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x",
92 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
93 		__entry->offset, __entry->len)
94 )
95 
96 #define DEFINE_SMB3_RW_DONE_EVENT(name)         \
97 DEFINE_EVENT(smb3_rw_done_class, smb3_##name,   \
98 	TP_PROTO(unsigned int xid,		\
99 		__u64	fid,			\
100 		__u32	tid,			\
101 		__u64	sesid,			\
102 		__u64	offset,			\
103 		__u32	len),			\
104 	TP_ARGS(xid, fid, tid, sesid, offset, len))
105 
106 DEFINE_SMB3_RW_DONE_EVENT(write_enter);
107 DEFINE_SMB3_RW_DONE_EVENT(read_enter);
108 DEFINE_SMB3_RW_DONE_EVENT(query_dir_enter);
109 DEFINE_SMB3_RW_DONE_EVENT(zero_enter);
110 DEFINE_SMB3_RW_DONE_EVENT(falloc_enter);
111 DEFINE_SMB3_RW_DONE_EVENT(write_done);
112 DEFINE_SMB3_RW_DONE_EVENT(read_done);
113 DEFINE_SMB3_RW_DONE_EVENT(query_dir_done);
114 DEFINE_SMB3_RW_DONE_EVENT(zero_done);
115 DEFINE_SMB3_RW_DONE_EVENT(falloc_done);
116 
117 /*
118  * For handle based calls other than read and write, and get/set info
119  */
120 DECLARE_EVENT_CLASS(smb3_fd_class,
121 	TP_PROTO(unsigned int xid,
122 		__u64	fid,
123 		__u32	tid,
124 		__u64	sesid),
125 	TP_ARGS(xid, fid, tid, sesid),
126 	TP_STRUCT__entry(
127 		__field(unsigned int, xid)
128 		__field(__u64, fid)
129 		__field(__u32, tid)
130 		__field(__u64, sesid)
131 	),
132 	TP_fast_assign(
133 		__entry->xid = xid;
134 		__entry->fid = fid;
135 		__entry->tid = tid;
136 		__entry->sesid = sesid;
137 	),
138 	TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx",
139 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid)
140 )
141 
142 #define DEFINE_SMB3_FD_EVENT(name)          \
143 DEFINE_EVENT(smb3_fd_class, smb3_##name,    \
144 	TP_PROTO(unsigned int xid,		\
145 		__u64	fid,			\
146 		__u32	tid,			\
147 		__u64	sesid),			\
148 	TP_ARGS(xid, fid, tid, sesid))
149 
150 DEFINE_SMB3_FD_EVENT(flush_enter);
151 DEFINE_SMB3_FD_EVENT(flush_done);
152 DEFINE_SMB3_FD_EVENT(close_enter);
153 DEFINE_SMB3_FD_EVENT(close_done);
154 
155 DECLARE_EVENT_CLASS(smb3_fd_err_class,
156 	TP_PROTO(unsigned int xid,
157 		__u64	fid,
158 		__u32	tid,
159 		__u64	sesid,
160 		int	rc),
161 	TP_ARGS(xid, fid, tid, sesid, rc),
162 	TP_STRUCT__entry(
163 		__field(unsigned int, xid)
164 		__field(__u64, fid)
165 		__field(__u32, tid)
166 		__field(__u64, sesid)
167 		__field(int, rc)
168 	),
169 	TP_fast_assign(
170 		__entry->xid = xid;
171 		__entry->fid = fid;
172 		__entry->tid = tid;
173 		__entry->sesid = sesid;
174 		__entry->rc = rc;
175 	),
176 	TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d",
177 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
178 		__entry->rc)
179 )
180 
181 #define DEFINE_SMB3_FD_ERR_EVENT(name)          \
182 DEFINE_EVENT(smb3_fd_err_class, smb3_##name,    \
183 	TP_PROTO(unsigned int xid,		\
184 		__u64	fid,			\
185 		__u32	tid,			\
186 		__u64	sesid,			\
187 		int	rc),			\
188 	TP_ARGS(xid, fid, tid, sesid, rc))
189 
190 DEFINE_SMB3_FD_ERR_EVENT(flush_err);
191 DEFINE_SMB3_FD_ERR_EVENT(lock_err);
192 DEFINE_SMB3_FD_ERR_EVENT(close_err);
193 
194 /*
195  * For handle based query/set info calls
196  */
197 DECLARE_EVENT_CLASS(smb3_inf_enter_class,
198 	TP_PROTO(unsigned int xid,
199 		__u64	fid,
200 		__u32	tid,
201 		__u64	sesid,
202 		__u8	infclass,
203 		__u32	type),
204 	TP_ARGS(xid, fid, tid, sesid, infclass, type),
205 	TP_STRUCT__entry(
206 		__field(unsigned int, xid)
207 		__field(__u64, fid)
208 		__field(__u32, tid)
209 		__field(__u64, sesid)
210 		__field(__u8, infclass)
211 		__field(__u32, type)
212 	),
213 	TP_fast_assign(
214 		__entry->xid = xid;
215 		__entry->fid = fid;
216 		__entry->tid = tid;
217 		__entry->sesid = sesid;
218 		__entry->infclass = infclass;
219 		__entry->type = type;
220 	),
221 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x",
222 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
223 		__entry->infclass, __entry->type)
224 )
225 
226 #define DEFINE_SMB3_INF_ENTER_EVENT(name)          \
227 DEFINE_EVENT(smb3_inf_enter_class, smb3_##name,    \
228 	TP_PROTO(unsigned int xid,		\
229 		__u64	fid,			\
230 		__u32	tid,			\
231 		__u64	sesid,			\
232 		__u8	infclass,		\
233 		__u32	type),			\
234 	TP_ARGS(xid, fid, tid, sesid, infclass, type))
235 
236 DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter);
237 DEFINE_SMB3_INF_ENTER_EVENT(query_info_done);
238 DEFINE_SMB3_INF_ENTER_EVENT(notify_enter);
239 DEFINE_SMB3_INF_ENTER_EVENT(notify_done);
240 
241 DECLARE_EVENT_CLASS(smb3_inf_err_class,
242 	TP_PROTO(unsigned int xid,
243 		__u64	fid,
244 		__u32	tid,
245 		__u64	sesid,
246 		__u8	infclass,
247 		__u32	type,
248 		int	rc),
249 	TP_ARGS(xid, fid, tid, sesid, infclass, type, rc),
250 	TP_STRUCT__entry(
251 		__field(unsigned int, xid)
252 		__field(__u64, fid)
253 		__field(__u32, tid)
254 		__field(__u64, sesid)
255 		__field(__u8, infclass)
256 		__field(__u32, type)
257 		__field(int, rc)
258 	),
259 	TP_fast_assign(
260 		__entry->xid = xid;
261 		__entry->fid = fid;
262 		__entry->tid = tid;
263 		__entry->sesid = sesid;
264 		__entry->infclass = infclass;
265 		__entry->type = type;
266 		__entry->rc = rc;
267 	),
268 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d",
269 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
270 		__entry->infclass, __entry->type, __entry->rc)
271 )
272 
273 #define DEFINE_SMB3_INF_ERR_EVENT(name)          \
274 DEFINE_EVENT(smb3_inf_err_class, smb3_##name,    \
275 	TP_PROTO(unsigned int xid,		\
276 		__u64	fid,			\
277 		__u32	tid,			\
278 		__u64	sesid,			\
279 		__u8	infclass,		\
280 		__u32	type,			\
281 		int	rc),			\
282 	TP_ARGS(xid, fid, tid, sesid, infclass, type, rc))
283 
284 DEFINE_SMB3_INF_ERR_EVENT(query_info_err);
285 DEFINE_SMB3_INF_ERR_EVENT(set_info_err);
286 DEFINE_SMB3_INF_ERR_EVENT(notify_err);
287 DEFINE_SMB3_INF_ERR_EVENT(fsctl_err);
288 
289 DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class,
290 	TP_PROTO(unsigned int xid,
291 		__u32	tid,
292 		__u64	sesid,
293 		const char *full_path),
294 	TP_ARGS(xid, tid, sesid, full_path),
295 	TP_STRUCT__entry(
296 		__field(unsigned int, xid)
297 		__field(__u32, tid)
298 		__field(__u64, sesid)
299 		__string(path, full_path)
300 	),
301 	TP_fast_assign(
302 		__entry->xid = xid;
303 		__entry->tid = tid;
304 		__entry->sesid = sesid;
305 		__assign_str(path, full_path);
306 	),
307 	TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s",
308 		__entry->xid, __entry->sesid, __entry->tid,
309 		__get_str(path))
310 )
311 
312 #define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name)     \
313 DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name,    \
314 	TP_PROTO(unsigned int xid,		\
315 		__u32	tid,			\
316 		__u64	sesid,			\
317 		const char *full_path),		\
318 	TP_ARGS(xid, tid, sesid, full_path))
319 
320 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter);
321 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter);
322 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter);
323 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter);
324 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter);
325 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter);
326 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter);
327 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter);
328 
329 
330 DECLARE_EVENT_CLASS(smb3_inf_compound_done_class,
331 	TP_PROTO(unsigned int xid,
332 		__u32	tid,
333 		__u64	sesid),
334 	TP_ARGS(xid, tid, sesid),
335 	TP_STRUCT__entry(
336 		__field(unsigned int, xid)
337 		__field(__u32, tid)
338 		__field(__u64, sesid)
339 	),
340 	TP_fast_assign(
341 		__entry->xid = xid;
342 		__entry->tid = tid;
343 		__entry->sesid = sesid;
344 	),
345 	TP_printk("xid=%u sid=0x%llx tid=0x%x",
346 		__entry->xid, __entry->sesid, __entry->tid)
347 )
348 
349 #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name)     \
350 DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name,    \
351 	TP_PROTO(unsigned int xid,		\
352 		__u32	tid,			\
353 		__u64	sesid),			\
354 	TP_ARGS(xid, tid, sesid))
355 
356 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done);
357 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done);
358 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done);
359 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done);
360 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done);
361 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done);
362 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done);
363 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done);
364 
365 
366 DECLARE_EVENT_CLASS(smb3_inf_compound_err_class,
367 	TP_PROTO(unsigned int xid,
368 		__u32	tid,
369 		__u64	sesid,
370 		int	rc),
371 	TP_ARGS(xid, tid, sesid, rc),
372 	TP_STRUCT__entry(
373 		__field(unsigned int, xid)
374 		__field(__u32, tid)
375 		__field(__u64, sesid)
376 		__field(int, rc)
377 	),
378 	TP_fast_assign(
379 		__entry->xid = xid;
380 		__entry->tid = tid;
381 		__entry->sesid = sesid;
382 		__entry->rc = rc;
383 	),
384 	TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d",
385 		__entry->xid, __entry->sesid, __entry->tid,
386 		__entry->rc)
387 )
388 
389 #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name)     \
390 DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name,    \
391 	TP_PROTO(unsigned int xid,		\
392 		__u32	tid,			\
393 		__u64	sesid,			\
394 		int rc),			\
395 	TP_ARGS(xid, tid, sesid, rc))
396 
397 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err);
398 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err);
399 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err);
400 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err);
401 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err);
402 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err);
403 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err);
404 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err);
405 
406 /*
407  * For logging SMB3 Status code and Command for responses which return errors
408  */
409 DECLARE_EVENT_CLASS(smb3_cmd_err_class,
410 	TP_PROTO(__u32	tid,
411 		__u64	sesid,
412 		__u16	cmd,
413 		__u64	mid,
414 		__u32	status,
415 		int	rc),
416 	TP_ARGS(tid, sesid, cmd, mid, status, rc),
417 	TP_STRUCT__entry(
418 		__field(__u32, tid)
419 		__field(__u64, sesid)
420 		__field(__u16, cmd)
421 		__field(__u64, mid)
422 		__field(__u32, status)
423 		__field(int, rc)
424 	),
425 	TP_fast_assign(
426 		__entry->tid = tid;
427 		__entry->sesid = sesid;
428 		__entry->cmd = cmd;
429 		__entry->mid = mid;
430 		__entry->status = status;
431 		__entry->rc = rc;
432 	),
433 	TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d",
434 		__entry->sesid, __entry->tid, __entry->cmd, __entry->mid,
435 		__entry->status, __entry->rc)
436 )
437 
438 #define DEFINE_SMB3_CMD_ERR_EVENT(name)          \
439 DEFINE_EVENT(smb3_cmd_err_class, smb3_##name,    \
440 	TP_PROTO(__u32	tid,			\
441 		__u64	sesid,			\
442 		__u16	cmd,			\
443 		__u64	mid,			\
444 		__u32	status,			\
445 		int	rc),			\
446 	TP_ARGS(tid, sesid, cmd, mid, status, rc))
447 
448 DEFINE_SMB3_CMD_ERR_EVENT(cmd_err);
449 
450 DECLARE_EVENT_CLASS(smb3_cmd_done_class,
451 	TP_PROTO(__u32	tid,
452 		__u64	sesid,
453 		__u16	cmd,
454 		__u64	mid),
455 	TP_ARGS(tid, sesid, cmd, mid),
456 	TP_STRUCT__entry(
457 		__field(__u32, tid)
458 		__field(__u64, sesid)
459 		__field(__u16, cmd)
460 		__field(__u64, mid)
461 	),
462 	TP_fast_assign(
463 		__entry->tid = tid;
464 		__entry->sesid = sesid;
465 		__entry->cmd = cmd;
466 		__entry->mid = mid;
467 	),
468 	TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu",
469 		__entry->sesid, __entry->tid,
470 		__entry->cmd, __entry->mid)
471 )
472 
473 #define DEFINE_SMB3_CMD_DONE_EVENT(name)          \
474 DEFINE_EVENT(smb3_cmd_done_class, smb3_##name,    \
475 	TP_PROTO(__u32	tid,			\
476 		__u64	sesid,			\
477 		__u16	cmd,			\
478 		__u64	mid),			\
479 	TP_ARGS(tid, sesid, cmd, mid))
480 
481 DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter);
482 DEFINE_SMB3_CMD_DONE_EVENT(cmd_done);
483 DEFINE_SMB3_CMD_DONE_EVENT(ses_expired);
484 
485 DECLARE_EVENT_CLASS(smb3_mid_class,
486 	TP_PROTO(__u16	cmd,
487 		__u64	mid,
488 		__u32	pid,
489 		unsigned long when_sent,
490 		unsigned long when_received),
491 	TP_ARGS(cmd, mid, pid, when_sent, when_received),
492 	TP_STRUCT__entry(
493 		__field(__u16, cmd)
494 		__field(__u64, mid)
495 		__field(__u32, pid)
496 		__field(unsigned long, when_sent)
497 		__field(unsigned long, when_received)
498 	),
499 	TP_fast_assign(
500 		__entry->cmd = cmd;
501 		__entry->mid = mid;
502 		__entry->pid = pid;
503 		__entry->when_sent = when_sent;
504 		__entry->when_received = when_received;
505 	),
506 	TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu",
507 		__entry->cmd, __entry->mid, __entry->pid, __entry->when_sent,
508 		__entry->when_received)
509 )
510 
511 #define DEFINE_SMB3_MID_EVENT(name)          \
512 DEFINE_EVENT(smb3_mid_class, smb3_##name,    \
513 	TP_PROTO(__u16	cmd,			\
514 		__u64	mid,			\
515 		__u32	pid,			\
516 		unsigned long when_sent,	\
517 		unsigned long when_received),	\
518 	TP_ARGS(cmd, mid, pid, when_sent, when_received))
519 
520 DEFINE_SMB3_MID_EVENT(slow_rsp);
521 
522 DECLARE_EVENT_CLASS(smb3_exit_err_class,
523 	TP_PROTO(unsigned int xid,
524 		const char *func_name,
525 		int	rc),
526 	TP_ARGS(xid, func_name, rc),
527 	TP_STRUCT__entry(
528 		__field(unsigned int, xid)
529 		__field(const char *, func_name)
530 		__field(int, rc)
531 	),
532 	TP_fast_assign(
533 		__entry->xid = xid;
534 		__entry->func_name = func_name;
535 		__entry->rc = rc;
536 	),
537 	TP_printk("\t%s: xid=%u rc=%d",
538 		__entry->func_name, __entry->xid, __entry->rc)
539 )
540 
541 #define DEFINE_SMB3_EXIT_ERR_EVENT(name)          \
542 DEFINE_EVENT(smb3_exit_err_class, smb3_##name,    \
543 	TP_PROTO(unsigned int xid,		\
544 		const char *func_name,		\
545 		int	rc),			\
546 	TP_ARGS(xid, func_name, rc))
547 
548 DEFINE_SMB3_EXIT_ERR_EVENT(exit_err);
549 
550 DECLARE_EVENT_CLASS(smb3_enter_exit_class,
551 	TP_PROTO(unsigned int xid,
552 		const char *func_name),
553 	TP_ARGS(xid, func_name),
554 	TP_STRUCT__entry(
555 		__field(unsigned int, xid)
556 		__field(const char *, func_name)
557 	),
558 	TP_fast_assign(
559 		__entry->xid = xid;
560 		__entry->func_name = func_name;
561 	),
562 	TP_printk("\t%s: xid=%u",
563 		__entry->func_name, __entry->xid)
564 )
565 
566 #define DEFINE_SMB3_ENTER_EXIT_EVENT(name)        \
567 DEFINE_EVENT(smb3_enter_exit_class, smb3_##name,  \
568 	TP_PROTO(unsigned int xid,		\
569 		const char *func_name),		\
570 	TP_ARGS(xid, func_name))
571 
572 DEFINE_SMB3_ENTER_EXIT_EVENT(enter);
573 DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done);
574 
575 /*
576  * For SMB2/SMB3 tree connect
577  */
578 
579 DECLARE_EVENT_CLASS(smb3_tcon_class,
580 	TP_PROTO(unsigned int xid,
581 		__u32	tid,
582 		__u64	sesid,
583 		const char *unc_name,
584 		int	rc),
585 	TP_ARGS(xid, tid, sesid, unc_name, rc),
586 	TP_STRUCT__entry(
587 		__field(unsigned int, xid)
588 		__field(__u32, tid)
589 		__field(__u64, sesid)
590 		__string(name, unc_name)
591 		__field(int, rc)
592 	),
593 	TP_fast_assign(
594 		__entry->xid = xid;
595 		__entry->tid = tid;
596 		__entry->sesid = sesid;
597 		__assign_str(name, unc_name);
598 		__entry->rc = rc;
599 	),
600 	TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d",
601 		__entry->xid, __entry->sesid, __entry->tid,
602 		__get_str(name), __entry->rc)
603 )
604 
605 #define DEFINE_SMB3_TCON_EVENT(name)          \
606 DEFINE_EVENT(smb3_tcon_class, smb3_##name,    \
607 	TP_PROTO(unsigned int xid,		\
608 		__u32	tid,			\
609 		__u64	sesid,			\
610 		const char *unc_name,		\
611 		int	rc),			\
612 	TP_ARGS(xid, tid, sesid, unc_name, rc))
613 
614 DEFINE_SMB3_TCON_EVENT(tcon);
615 
616 
617 /*
618  * For smb2/smb3 open (including create and mkdir) calls
619  */
620 
621 DECLARE_EVENT_CLASS(smb3_open_enter_class,
622 	TP_PROTO(unsigned int xid,
623 		__u32	tid,
624 		__u64	sesid,
625 		int	create_options,
626 		int	desired_access),
627 	TP_ARGS(xid, tid, sesid, create_options, desired_access),
628 	TP_STRUCT__entry(
629 		__field(unsigned int, xid)
630 		__field(__u32, tid)
631 		__field(__u64, sesid)
632 		__field(int, create_options)
633 		__field(int, desired_access)
634 	),
635 	TP_fast_assign(
636 		__entry->xid = xid;
637 		__entry->tid = tid;
638 		__entry->sesid = sesid;
639 		__entry->create_options = create_options;
640 		__entry->desired_access = desired_access;
641 	),
642 	TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x",
643 		__entry->xid, __entry->sesid, __entry->tid,
644 		__entry->create_options, __entry->desired_access)
645 )
646 
647 #define DEFINE_SMB3_OPEN_ENTER_EVENT(name)        \
648 DEFINE_EVENT(smb3_open_enter_class, smb3_##name,  \
649 	TP_PROTO(unsigned int xid,		\
650 		__u32	tid,			\
651 		__u64	sesid,			\
652 		int	create_options,		\
653 		int	desired_access),	\
654 	TP_ARGS(xid, tid, sesid, create_options, desired_access))
655 
656 DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter);
657 DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter);
658 
659 DECLARE_EVENT_CLASS(smb3_open_err_class,
660 	TP_PROTO(unsigned int xid,
661 		__u32	tid,
662 		__u64	sesid,
663 		int	create_options,
664 		int	desired_access,
665 		int	rc),
666 	TP_ARGS(xid, tid, sesid, create_options, desired_access, rc),
667 	TP_STRUCT__entry(
668 		__field(unsigned int, xid)
669 		__field(__u32, tid)
670 		__field(__u64, sesid)
671 		__field(int,   create_options)
672 		__field(int, desired_access)
673 		__field(int, rc)
674 	),
675 	TP_fast_assign(
676 		__entry->xid = xid;
677 		__entry->tid = tid;
678 		__entry->sesid = sesid;
679 		__entry->create_options = create_options;
680 		__entry->desired_access = desired_access;
681 		__entry->rc = rc;
682 	),
683 	TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d",
684 		__entry->xid, __entry->sesid, __entry->tid,
685 		__entry->create_options, __entry->desired_access, __entry->rc)
686 )
687 
688 #define DEFINE_SMB3_OPEN_ERR_EVENT(name)          \
689 DEFINE_EVENT(smb3_open_err_class, smb3_##name,    \
690 	TP_PROTO(unsigned int xid,		\
691 		__u32	tid,			\
692 		__u64	sesid,			\
693 		int	create_options,		\
694 		int	desired_access,		\
695 		int	rc),			\
696 	TP_ARGS(xid, tid, sesid, create_options, desired_access, rc))
697 
698 DEFINE_SMB3_OPEN_ERR_EVENT(open_err);
699 DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err);
700 
701 DECLARE_EVENT_CLASS(smb3_open_done_class,
702 	TP_PROTO(unsigned int xid,
703 		__u64	fid,
704 		__u32	tid,
705 		__u64	sesid,
706 		int	create_options,
707 		int	desired_access),
708 	TP_ARGS(xid, fid, tid, sesid, create_options, desired_access),
709 	TP_STRUCT__entry(
710 		__field(unsigned int, xid)
711 		__field(__u64, fid)
712 		__field(__u32, tid)
713 		__field(__u64, sesid)
714 		__field(int, create_options)
715 		__field(int, desired_access)
716 	),
717 	TP_fast_assign(
718 		__entry->xid = xid;
719 		__entry->fid = fid;
720 		__entry->tid = tid;
721 		__entry->sesid = sesid;
722 		__entry->create_options = create_options;
723 		__entry->desired_access = desired_access;
724 	),
725 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x",
726 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
727 		__entry->create_options, __entry->desired_access)
728 )
729 
730 #define DEFINE_SMB3_OPEN_DONE_EVENT(name)        \
731 DEFINE_EVENT(smb3_open_done_class, smb3_##name,  \
732 	TP_PROTO(unsigned int xid,		\
733 		__u64	fid,			\
734 		__u32	tid,			\
735 		__u64	sesid,			\
736 		int	create_options,		\
737 		int	desired_access),	\
738 	TP_ARGS(xid, fid, tid, sesid, create_options, desired_access))
739 
740 DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
741 DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);
742 
743 
744 DECLARE_EVENT_CLASS(smb3_lease_done_class,
745 	TP_PROTO(__u32	lease_state,
746 		__u32	tid,
747 		__u64	sesid,
748 		__u64	lease_key_low,
749 		__u64	lease_key_high),
750 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high),
751 	TP_STRUCT__entry(
752 		__field(__u32, lease_state)
753 		__field(__u32, tid)
754 		__field(__u64, sesid)
755 		__field(__u64, lease_key_low)
756 		__field(__u64, lease_key_high)
757 	),
758 	TP_fast_assign(
759 		__entry->lease_state = lease_state;
760 		__entry->tid = tid;
761 		__entry->sesid = sesid;
762 		__entry->lease_key_low = lease_key_low;
763 		__entry->lease_key_high = lease_key_high;
764 	),
765 	TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x",
766 		__entry->sesid, __entry->tid, __entry->lease_key_high,
767 		__entry->lease_key_low, __entry->lease_state)
768 )
769 
770 #define DEFINE_SMB3_LEASE_DONE_EVENT(name)        \
771 DEFINE_EVENT(smb3_lease_done_class, smb3_##name,  \
772 	TP_PROTO(__u32	lease_state,		\
773 		__u32	tid,			\
774 		__u64	sesid,			\
775 		__u64	lease_key_low,		\
776 		__u64	lease_key_high),	\
777 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high))
778 
779 DEFINE_SMB3_LEASE_DONE_EVENT(lease_done);
780 
781 DECLARE_EVENT_CLASS(smb3_lease_err_class,
782 	TP_PROTO(__u32	lease_state,
783 		__u32	tid,
784 		__u64	sesid,
785 		__u64	lease_key_low,
786 		__u64	lease_key_high,
787 		int	rc),
788 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc),
789 	TP_STRUCT__entry(
790 		__field(__u32, lease_state)
791 		__field(__u32, tid)
792 		__field(__u64, sesid)
793 		__field(__u64, lease_key_low)
794 		__field(__u64, lease_key_high)
795 		__field(int, rc)
796 	),
797 	TP_fast_assign(
798 		__entry->lease_state = lease_state;
799 		__entry->tid = tid;
800 		__entry->sesid = sesid;
801 		__entry->lease_key_low = lease_key_low;
802 		__entry->lease_key_high = lease_key_high;
803 		__entry->rc = rc;
804 	),
805 	TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d",
806 		__entry->sesid, __entry->tid, __entry->lease_key_high,
807 		__entry->lease_key_low, __entry->lease_state, __entry->rc)
808 )
809 
810 #define DEFINE_SMB3_LEASE_ERR_EVENT(name)        \
811 DEFINE_EVENT(smb3_lease_err_class, smb3_##name,  \
812 	TP_PROTO(__u32	lease_state,		\
813 		__u32	tid,			\
814 		__u64	sesid,			\
815 		__u64	lease_key_low,		\
816 		__u64	lease_key_high,		\
817 		int	rc),			\
818 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc))
819 
820 DEFINE_SMB3_LEASE_ERR_EVENT(lease_err);
821 
822 DECLARE_EVENT_CLASS(smb3_reconnect_class,
823 	TP_PROTO(__u64	currmid,
824 		char *hostname),
825 	TP_ARGS(currmid, hostname),
826 	TP_STRUCT__entry(
827 		__field(__u64, currmid)
828 		__field(char *, hostname)
829 	),
830 	TP_fast_assign(
831 		__entry->currmid = currmid;
832 		__entry->hostname = hostname;
833 	),
834 	TP_printk("server=%s current_mid=0x%llx",
835 		__entry->hostname,
836 		__entry->currmid)
837 )
838 
839 #define DEFINE_SMB3_RECONNECT_EVENT(name)        \
840 DEFINE_EVENT(smb3_reconnect_class, smb3_##name,  \
841 	TP_PROTO(__u64	currmid,		\
842 		char *hostname),		\
843 	TP_ARGS(currmid, hostname))
844 
845 DEFINE_SMB3_RECONNECT_EVENT(reconnect);
846 DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect);
847 
848 DECLARE_EVENT_CLASS(smb3_credit_class,
849 	TP_PROTO(__u64	currmid,
850 		char *hostname,
851 		int credits),
852 	TP_ARGS(currmid, hostname, credits),
853 	TP_STRUCT__entry(
854 		__field(__u64, currmid)
855 		__field(char *, hostname)
856 		__field(int, credits)
857 	),
858 	TP_fast_assign(
859 		__entry->currmid = currmid;
860 		__entry->hostname = hostname;
861 		__entry->credits = credits;
862 	),
863 	TP_printk("server=%s current_mid=0x%llx credits=%d",
864 		__entry->hostname,
865 		__entry->currmid,
866 		__entry->credits)
867 )
868 
869 #define DEFINE_SMB3_CREDIT_EVENT(name)        \
870 DEFINE_EVENT(smb3_credit_class, smb3_##name,  \
871 	TP_PROTO(__u64	currmid,		\
872 		char *hostname,			\
873 		int  credits),			\
874 	TP_ARGS(currmid, hostname, credits))
875 
876 DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits);
877 DEFINE_SMB3_CREDIT_EVENT(credit_timeout);
878 
879 #endif /* _CIFS_TRACE_H */
880 
881 #undef TRACE_INCLUDE_PATH
882 #define TRACE_INCLUDE_PATH .
883 #define TRACE_INCLUDE_FILE trace
884 #include <trace/define_trace.h>
885