1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Copyright (C) 2018, Microsoft Corporation.
5 * Author(s): Steve French <stfrench@microsoft.com>
7 * Please use this 3-part article as a reference for writing new tracepoints:
8 * https://lwn.net/Articles/379903/
11 #define TRACE_SYSTEM cifs
13 #if !defined(_CIFS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
16 #include <linux/tracepoint.h>
17 #include <linux/net.h>
18 #include <linux/inet.h>
21 * Specify enums for tracing information.
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")
54 * Define those tracing enums.
56 #ifndef __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY
57 #define __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY
62 enum smb3_tcon_ref_trace { smb3_tcon_ref_traces } __mode(byte);
69 * Export enum symbols via userspace.
71 #define EM(a, b) TRACE_DEFINE_ENUM(a);
72 #define E_(a, b) TRACE_DEFINE_ENUM(a);
80 * Now redefine the EM() and E_() macros to map the enums to the strings that
81 * will be printed in the output.
83 #define EM(a, b) { a, b },
84 #define E_(a, b) { a, b }
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,
97 TP_ARGS(rreq_debug_id, rreq_debug_index,
98 xid, fid, tid, sesid, offset, len, rc),
100 __field(unsigned int, rreq_debug_id)
101 __field(unsigned int, rreq_debug_index)
102 __field(unsigned int, xid)
105 __field(__u64, sesid)
106 __field(__u64, offset)
111 __entry->rreq_debug_id = rreq_debug_id;
112 __entry->rreq_debug_index = rreq_debug_index;
116 __entry->sesid = sesid;
117 __entry->offset = offset;
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)
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, \
138 TP_ARGS(rreq_debug_id, rreq_debug_index, xid, fid, tid, sesid, offset, len, rc))
140 DEFINE_SMB3_RW_ERR_EVENT(read_err);
142 /* For logging errors in other file I/O ops */
143 DECLARE_EVENT_CLASS(smb3_other_err_class,
144 TP_PROTO(unsigned int xid,
151 TP_ARGS(xid, fid, tid, sesid, offset, len, rc),
153 __field(unsigned int, xid)
156 __field(__u64, sesid)
157 __field(__u64, offset)
165 __entry->sesid = sesid;
166 __entry->offset = offset;
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)
175 #define DEFINE_SMB3_OTHER_ERR_EVENT(name) \
176 DEFINE_EVENT(smb3_other_err_class, smb3_##name, \
177 TP_PROTO(unsigned int xid, \
184 TP_ARGS(xid, fid, tid, sesid, offset, len, rc))
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);
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,
202 TP_ARGS(rreq_debug_id, rreq_debug_index,
203 xid, fid, tid, sesid, offset, len),
205 __field(unsigned int, rreq_debug_id)
206 __field(unsigned int, rreq_debug_index)
207 __field(unsigned int, xid)
210 __field(__u64, sesid)
211 __field(__u64, offset)
215 __entry->rreq_debug_id = rreq_debug_id;
216 __entry->rreq_debug_index = rreq_debug_index;
220 __entry->sesid = sesid;
221 __entry->offset = offset;
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)
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, \
240 TP_ARGS(rreq_debug_id, rreq_debug_index, xid, fid, tid, sesid, offset, len))
242 DEFINE_SMB3_RW_DONE_EVENT(read_enter);
243 DEFINE_SMB3_RW_DONE_EVENT(read_done);
245 /* For logging successful other op */
246 DECLARE_EVENT_CLASS(smb3_other_done_class,
247 TP_PROTO(unsigned int xid,
253 TP_ARGS(xid, fid, tid, sesid, offset, len),
255 __field(unsigned int, xid)
258 __field(__u64, sesid)
259 __field(__u64, offset)
266 __entry->sesid = sesid;
267 __entry->offset = offset;
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)
275 #define DEFINE_SMB3_OTHER_DONE_EVENT(name) \
276 DEFINE_EVENT(smb3_other_done_class, smb3_##name, \
277 TP_PROTO(unsigned int xid, \
283 TP_ARGS(xid, fid, tid, sesid, offset, len))
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);
294 /* For logging successful set EOF (truncate) */
295 DECLARE_EVENT_CLASS(smb3_eof_class,
296 TP_PROTO(unsigned int xid,
301 TP_ARGS(xid, fid, tid, sesid, offset),
303 __field(unsigned int, xid)
306 __field(__u64, sesid)
307 __field(__u64, offset)
313 __entry->sesid = sesid;
314 __entry->offset = offset;
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,
321 #define DEFINE_SMB3_EOF_EVENT(name) \
322 DEFINE_EVENT(smb3_eof_class, smb3_##name, \
323 TP_PROTO(unsigned int xid, \
328 TP_ARGS(xid, fid, tid, sesid, offset))
330 DEFINE_SMB3_EOF_EVENT(set_eof);
333 * For handle based calls other than read and write, and get/set info
335 DECLARE_EVENT_CLASS(smb3_fd_class,
336 TP_PROTO(unsigned int xid,
340 TP_ARGS(xid, fid, tid, sesid),
342 __field(unsigned int, xid)
345 __field(__u64, sesid)
351 __entry->sesid = sesid;
353 TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx",
354 __entry->xid, __entry->sesid, __entry->tid, __entry->fid)
357 #define DEFINE_SMB3_FD_EVENT(name) \
358 DEFINE_EVENT(smb3_fd_class, smb3_##name, \
359 TP_PROTO(unsigned int xid, \
363 TP_ARGS(xid, fid, tid, sesid))
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);
371 DECLARE_EVENT_CLASS(smb3_fd_err_class,
372 TP_PROTO(unsigned int xid,
377 TP_ARGS(xid, fid, tid, sesid, rc),
379 __field(unsigned int, xid)
382 __field(__u64, sesid)
389 __entry->sesid = sesid;
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,
397 #define DEFINE_SMB3_FD_ERR_EVENT(name) \
398 DEFINE_EVENT(smb3_fd_err_class, smb3_##name, \
399 TP_PROTO(unsigned int xid, \
404 TP_ARGS(xid, fid, tid, sesid, rc))
406 DEFINE_SMB3_FD_ERR_EVENT(flush_err);
407 DEFINE_SMB3_FD_ERR_EVENT(lock_err);
408 DEFINE_SMB3_FD_ERR_EVENT(close_err);
411 * For handle based query/set info calls
413 DECLARE_EVENT_CLASS(smb3_inf_enter_class,
414 TP_PROTO(unsigned int xid,
420 TP_ARGS(xid, fid, tid, sesid, infclass, type),
422 __field(unsigned int, xid)
425 __field(__u64, sesid)
426 __field(__u8, infclass)
433 __entry->sesid = sesid;
434 __entry->infclass = infclass;
435 __entry->type = type;
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)
442 #define DEFINE_SMB3_INF_ENTER_EVENT(name) \
443 DEFINE_EVENT(smb3_inf_enter_class, smb3_##name, \
444 TP_PROTO(unsigned int xid, \
450 TP_ARGS(xid, fid, tid, sesid, infclass, type))
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);
457 DECLARE_EVENT_CLASS(smb3_inf_err_class,
458 TP_PROTO(unsigned int xid,
465 TP_ARGS(xid, fid, tid, sesid, infclass, type, rc),
467 __field(unsigned int, xid)
470 __field(__u64, sesid)
471 __field(__u8, infclass)
479 __entry->sesid = sesid;
480 __entry->infclass = infclass;
481 __entry->type = type;
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)
489 #define DEFINE_SMB3_INF_ERR_EVENT(name) \
490 DEFINE_EVENT(smb3_inf_err_class, smb3_##name, \
491 TP_PROTO(unsigned int xid, \
498 TP_ARGS(xid, fid, tid, sesid, infclass, type, rc))
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);
505 DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class,
506 TP_PROTO(unsigned int xid,
509 const char *full_path),
510 TP_ARGS(xid, tid, sesid, full_path),
512 __field(unsigned int, xid)
514 __field(__u64, sesid)
515 __string(path, full_path)
520 __entry->sesid = sesid;
521 __assign_str(path, full_path);
523 TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s",
524 __entry->xid, __entry->sesid, __entry->tid,
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, \
533 const char *full_path), \
534 TP_ARGS(xid, tid, sesid, full_path))
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);
550 DECLARE_EVENT_CLASS(smb3_inf_compound_done_class,
551 TP_PROTO(unsigned int xid,
554 TP_ARGS(xid, tid, sesid),
556 __field(unsigned int, xid)
558 __field(__u64, sesid)
563 __entry->sesid = sesid;
565 TP_printk("xid=%u sid=0x%llx tid=0x%x",
566 __entry->xid, __entry->sesid, __entry->tid)
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, \
574 TP_ARGS(xid, tid, sesid))
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);
591 DECLARE_EVENT_CLASS(smb3_inf_compound_err_class,
592 TP_PROTO(unsigned int xid,
596 TP_ARGS(xid, tid, sesid, rc),
598 __field(unsigned int, xid)
600 __field(__u64, sesid)
606 __entry->sesid = sesid;
609 TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d",
610 __entry->xid, __entry->sesid, __entry->tid,
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, \
620 TP_ARGS(xid, tid, sesid, rc))
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);
638 * For logging SMB3 Status code and Command for responses which return errors
640 DECLARE_EVENT_CLASS(smb3_cmd_err_class,
647 TP_ARGS(tid, sesid, cmd, mid, status, rc),
650 __field(__u64, sesid)
653 __field(__u32, status)
658 __entry->sesid = sesid;
661 __entry->status = status;
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)
669 #define DEFINE_SMB3_CMD_ERR_EVENT(name) \
670 DEFINE_EVENT(smb3_cmd_err_class, smb3_##name, \
671 TP_PROTO(__u32 tid, \
677 TP_ARGS(tid, sesid, cmd, mid, status, rc))
679 DEFINE_SMB3_CMD_ERR_EVENT(cmd_err);
681 DECLARE_EVENT_CLASS(smb3_cmd_done_class,
686 TP_ARGS(tid, sesid, cmd, mid),
689 __field(__u64, sesid)
695 __entry->sesid = sesid;
699 TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu",
700 __entry->sesid, __entry->tid,
701 __entry->cmd, __entry->mid)
704 #define DEFINE_SMB3_CMD_DONE_EVENT(name) \
705 DEFINE_EVENT(smb3_cmd_done_class, smb3_##name, \
706 TP_PROTO(__u32 tid, \
710 TP_ARGS(tid, sesid, cmd, mid))
712 DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter);
713 DEFINE_SMB3_CMD_DONE_EVENT(cmd_done);
714 DEFINE_SMB3_CMD_DONE_EVENT(ses_expired);
716 DECLARE_EVENT_CLASS(smb3_mid_class,
720 unsigned long when_sent,
721 unsigned long when_received),
722 TP_ARGS(cmd, mid, pid, when_sent, when_received),
727 __field(unsigned long, when_sent)
728 __field(unsigned long, when_received)
734 __entry->when_sent = when_sent;
735 __entry->when_received = when_received;
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)
742 #define DEFINE_SMB3_MID_EVENT(name) \
743 DEFINE_EVENT(smb3_mid_class, smb3_##name, \
744 TP_PROTO(__u16 cmd, \
747 unsigned long when_sent, \
748 unsigned long when_received), \
749 TP_ARGS(cmd, mid, pid, when_sent, when_received))
751 DEFINE_SMB3_MID_EVENT(slow_rsp);
753 DECLARE_EVENT_CLASS(smb3_exit_err_class,
754 TP_PROTO(unsigned int xid,
755 const char *func_name,
757 TP_ARGS(xid, func_name, rc),
759 __field(unsigned int, xid)
760 __string(func_name, func_name)
765 __assign_str(func_name, func_name);
768 TP_printk("\t%s: xid=%u rc=%d",
769 __get_str(func_name), __entry->xid, __entry->rc)
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, \
777 TP_ARGS(xid, func_name, rc))
779 DEFINE_SMB3_EXIT_ERR_EVENT(exit_err);
782 DECLARE_EVENT_CLASS(smb3_sync_err_class,
783 TP_PROTO(unsigned long ino,
787 __field(unsigned long, ino)
794 TP_printk("\tino=%lu rc=%d",
795 __entry->ino, __entry->rc)
798 #define DEFINE_SMB3_SYNC_ERR_EVENT(name) \
799 DEFINE_EVENT(smb3_sync_err_class, cifs_##name, \
800 TP_PROTO(unsigned long ino, \
804 DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err);
805 DEFINE_SMB3_SYNC_ERR_EVENT(flush_err);
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),
813 __field(unsigned int, xid)
814 __string(func_name, func_name)
818 __assign_str(func_name, func_name);
820 TP_printk("\t%s: xid=%u",
821 __get_str(func_name), __entry->xid)
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))
830 DEFINE_SMB3_ENTER_EXIT_EVENT(enter);
831 DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done);
834 * For SMB2/SMB3 tree connect
837 DECLARE_EVENT_CLASS(smb3_tcon_class,
838 TP_PROTO(unsigned int xid,
841 const char *unc_name,
843 TP_ARGS(xid, tid, sesid, unc_name, rc),
845 __field(unsigned int, xid)
847 __field(__u64, sesid)
848 __string(name, unc_name)
854 __entry->sesid = sesid;
855 __assign_str(name, unc_name);
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)
863 #define DEFINE_SMB3_TCON_EVENT(name) \
864 DEFINE_EVENT(smb3_tcon_class, smb3_##name, \
865 TP_PROTO(unsigned int xid, \
868 const char *unc_name, \
870 TP_ARGS(xid, tid, sesid, unc_name, rc))
872 DEFINE_SMB3_TCON_EVENT(tcon);
873 DEFINE_SMB3_TCON_EVENT(qfs_done);
876 * For smb2/smb3 open (including create and mkdir) calls
879 DECLARE_EVENT_CLASS(smb3_open_enter_class,
880 TP_PROTO(unsigned int xid,
883 const char *full_path,
886 TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access),
888 __field(unsigned int, xid)
890 __field(__u64, sesid)
891 __string(path, full_path)
892 __field(int, create_options)
893 __field(int, desired_access)
898 __entry->sesid = sesid;
899 __assign_str(path, full_path);
900 __entry->create_options = create_options;
901 __entry->desired_access = desired_access;
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)
908 #define DEFINE_SMB3_OPEN_ENTER_EVENT(name) \
909 DEFINE_EVENT(smb3_open_enter_class, smb3_##name, \
910 TP_PROTO(unsigned int xid, \
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))
918 DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter);
919 DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter);
921 DECLARE_EVENT_CLASS(smb3_open_err_class,
922 TP_PROTO(unsigned int xid,
928 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc),
930 __field(unsigned int, xid)
932 __field(__u64, sesid)
933 __field(int, create_options)
934 __field(int, desired_access)
940 __entry->sesid = sesid;
941 __entry->create_options = create_options;
942 __entry->desired_access = desired_access;
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)
950 #define DEFINE_SMB3_OPEN_ERR_EVENT(name) \
951 DEFINE_EVENT(smb3_open_err_class, smb3_##name, \
952 TP_PROTO(unsigned int xid, \
955 int create_options, \
956 int desired_access, \
958 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc))
960 DEFINE_SMB3_OPEN_ERR_EVENT(open_err);
961 DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err);
963 DECLARE_EVENT_CLASS(smb3_open_done_class,
964 TP_PROTO(unsigned int xid,
970 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access),
972 __field(unsigned int, xid)
975 __field(__u64, sesid)
976 __field(int, create_options)
977 __field(int, desired_access)
983 __entry->sesid = sesid;
984 __entry->create_options = create_options;
985 __entry->desired_access = desired_access;
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)
992 #define DEFINE_SMB3_OPEN_DONE_EVENT(name) \
993 DEFINE_EVENT(smb3_open_done_class, smb3_##name, \
994 TP_PROTO(unsigned int xid, \
998 int create_options, \
999 int desired_access), \
1000 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access))
1002 DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
1003 DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);
1006 DECLARE_EVENT_CLASS(smb3_lease_done_class,
1007 TP_PROTO(__u32 lease_state,
1010 __u64 lease_key_low,
1011 __u64 lease_key_high),
1012 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high),
1014 __field(__u32, lease_state)
1016 __field(__u64, sesid)
1017 __field(__u64, lease_key_low)
1018 __field(__u64, lease_key_high)
1021 __entry->lease_state = lease_state;
1023 __entry->sesid = sesid;
1024 __entry->lease_key_low = lease_key_low;
1025 __entry->lease_key_high = lease_key_high;
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)
1032 #define DEFINE_SMB3_LEASE_DONE_EVENT(name) \
1033 DEFINE_EVENT(smb3_lease_done_class, smb3_##name, \
1034 TP_PROTO(__u32 lease_state, \
1037 __u64 lease_key_low, \
1038 __u64 lease_key_high), \
1039 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high))
1041 DEFINE_SMB3_LEASE_DONE_EVENT(lease_done);
1042 DEFINE_SMB3_LEASE_DONE_EVENT(lease_not_found);
1044 DECLARE_EVENT_CLASS(smb3_lease_err_class,
1045 TP_PROTO(__u32 lease_state,
1048 __u64 lease_key_low,
1049 __u64 lease_key_high,
1051 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc),
1053 __field(__u32, lease_state)
1055 __field(__u64, sesid)
1056 __field(__u64, lease_key_low)
1057 __field(__u64, lease_key_high)
1061 __entry->lease_state = lease_state;
1063 __entry->sesid = sesid;
1064 __entry->lease_key_low = lease_key_low;
1065 __entry->lease_key_high = lease_key_high;
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)
1073 #define DEFINE_SMB3_LEASE_ERR_EVENT(name) \
1074 DEFINE_EVENT(smb3_lease_err_class, smb3_##name, \
1075 TP_PROTO(__u32 lease_state, \
1078 __u64 lease_key_low, \
1079 __u64 lease_key_high, \
1081 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc))
1083 DEFINE_SMB3_LEASE_ERR_EVENT(lease_err);
1085 DECLARE_EVENT_CLASS(smb3_connect_class,
1086 TP_PROTO(char *hostname,
1088 const struct __kernel_sockaddr_storage *dst_addr),
1089 TP_ARGS(hostname, conn_id, dst_addr),
1091 __string(hostname, hostname)
1092 __field(__u64, conn_id)
1093 __array(__u8, dst_addr, sizeof(struct sockaddr_storage))
1096 struct sockaddr_storage *pss = NULL;
1098 __entry->conn_id = conn_id;
1099 pss = (struct sockaddr_storage *)__entry->dst_addr;
1101 __assign_str(hostname, hostname);
1103 TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc",
1105 __get_str(hostname),
1109 #define DEFINE_SMB3_CONNECT_EVENT(name) \
1110 DEFINE_EVENT(smb3_connect_class, smb3_##name, \
1111 TP_PROTO(char *hostname, \
1113 const struct __kernel_sockaddr_storage *addr), \
1114 TP_ARGS(hostname, conn_id, addr))
1116 DEFINE_SMB3_CONNECT_EVENT(connect_done);
1117 DEFINE_SMB3_CONNECT_EVENT(smbd_connect_done);
1118 DEFINE_SMB3_CONNECT_EVENT(smbd_connect_err);
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),
1125 __string(hostname, hostname)
1126 __field(__u64, conn_id)
1127 __array(__u8, dst_addr, sizeof(struct sockaddr_storage))
1131 struct sockaddr_storage *pss = NULL;
1133 __entry->conn_id = conn_id;
1135 pss = (struct sockaddr_storage *)__entry->dst_addr;
1137 __assign_str(hostname, hostname);
1139 TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc",
1142 __get_str(hostname),
1146 #define DEFINE_SMB3_CONNECT_ERR_EVENT(name) \
1147 DEFINE_EVENT(smb3_connect_err_class, smb3_##name, \
1148 TP_PROTO(char *hostname, \
1150 const struct __kernel_sockaddr_storage *addr, \
1152 TP_ARGS(hostname, conn_id, addr, rc))
1154 DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err);
1156 DECLARE_EVENT_CLASS(smb3_reconnect_class,
1157 TP_PROTO(__u64 currmid,
1160 TP_ARGS(currmid, conn_id, hostname),
1162 __field(__u64, currmid)
1163 __field(__u64, conn_id)
1164 __string(hostname, hostname)
1167 __entry->currmid = currmid;
1168 __entry->conn_id = conn_id;
1169 __assign_str(hostname, hostname);
1171 TP_printk("conn_id=0x%llx server=%s current_mid=%llu",
1173 __get_str(hostname),
1177 #define DEFINE_SMB3_RECONNECT_EVENT(name) \
1178 DEFINE_EVENT(smb3_reconnect_class, smb3_##name, \
1179 TP_PROTO(__u64 currmid, \
1182 TP_ARGS(currmid, conn_id, hostname))
1184 DEFINE_SMB3_RECONNECT_EVENT(reconnect);
1185 DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect);
1187 DECLARE_EVENT_CLASS(smb3_ses_class,
1188 TP_PROTO(__u64 sesid),
1191 __field(__u64, sesid)
1194 __entry->sesid = sesid;
1196 TP_printk("sid=0x%llx",
1200 #define DEFINE_SMB3_SES_EVENT(name) \
1201 DEFINE_EVENT(smb3_ses_class, smb3_##name, \
1202 TP_PROTO(__u64 sesid), \
1205 DEFINE_SMB3_SES_EVENT(ses_not_found);
1207 DECLARE_EVENT_CLASS(smb3_ioctl_class,
1208 TP_PROTO(unsigned int xid,
1210 unsigned int command),
1211 TP_ARGS(xid, fid, command),
1213 __field(unsigned int, xid)
1215 __field(unsigned int, command)
1220 __entry->command = command;
1222 TP_printk("xid=%u fid=0x%llx ioctl cmd=0x%x",
1223 __entry->xid, __entry->fid, __entry->command)
1226 #define DEFINE_SMB3_IOCTL_EVENT(name) \
1227 DEFINE_EVENT(smb3_ioctl_class, smb3_##name, \
1228 TP_PROTO(unsigned int xid, \
1230 unsigned int command), \
1231 TP_ARGS(xid, fid, command))
1233 DEFINE_SMB3_IOCTL_EVENT(ioctl);
1239 DECLARE_EVENT_CLASS(smb3_credit_class,
1240 TP_PROTO(__u64 currmid,
1246 TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight),
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)
1256 __entry->currmid = currmid;
1257 __entry->conn_id = conn_id;
1258 __assign_str(hostname, hostname);
1259 __entry->credits = credits;
1260 __entry->credits_to_add = credits_to_add;
1261 __entry->in_flight = in_flight;
1263 TP_printk("conn_id=0x%llx server=%s current_mid=%llu "
1264 "credits=%d credit_change=%d in_flight=%d",
1266 __get_str(hostname),
1269 __entry->credits_to_add,
1273 #define DEFINE_SMB3_CREDIT_EVENT(name) \
1274 DEFINE_EVENT(smb3_credit_class, smb3_##name, \
1275 TP_PROTO(__u64 currmid, \
1279 int credits_to_add, \
1281 TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight))
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);
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),
1304 __field(unsigned int, tcon)
1306 __field(enum smb3_tcon_ref_trace, trace)
1309 __entry->tcon = tcon_debug_id;
1311 __entry->trace = trace;
1313 TP_printk("TC=%08x %s r=%u",
1315 __print_symbolic(__entry->trace, smb3_tcon_ref_traces),
1322 #endif /* _CIFS_TRACE_H */
1324 #undef TRACE_INCLUDE_PATH
1325 #define TRACE_INCLUDE_PATH .
1326 #define TRACE_INCLUDE_FILE trace
1327 #include <trace/define_trace.h>