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 xid,
95 TP_ARGS(xid, fid, tid, sesid, offset, len, rc),
97 __field(unsigned int, xid)
100 __field(__u64, sesid)
101 __field(__u64, offset)
109 __entry->sesid = sesid;
110 __entry->offset = offset;
114 TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d",
115 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
116 __entry->offset, __entry->len, __entry->rc)
119 #define DEFINE_SMB3_RW_ERR_EVENT(name) \
120 DEFINE_EVENT(smb3_rw_err_class, smb3_##name, \
121 TP_PROTO(unsigned int xid, \
128 TP_ARGS(xid, fid, tid, sesid, offset, len, rc))
130 DEFINE_SMB3_RW_ERR_EVENT(write_err);
131 DEFINE_SMB3_RW_ERR_EVENT(read_err);
132 DEFINE_SMB3_RW_ERR_EVENT(query_dir_err);
133 DEFINE_SMB3_RW_ERR_EVENT(zero_err);
134 DEFINE_SMB3_RW_ERR_EVENT(falloc_err);
137 /* For logging successful read or write */
138 DECLARE_EVENT_CLASS(smb3_rw_done_class,
139 TP_PROTO(unsigned int xid,
145 TP_ARGS(xid, fid, tid, sesid, offset, len),
147 __field(unsigned int, xid)
150 __field(__u64, sesid)
151 __field(__u64, offset)
158 __entry->sesid = sesid;
159 __entry->offset = offset;
162 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x",
163 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
164 __entry->offset, __entry->len)
167 #define DEFINE_SMB3_RW_DONE_EVENT(name) \
168 DEFINE_EVENT(smb3_rw_done_class, smb3_##name, \
169 TP_PROTO(unsigned int xid, \
175 TP_ARGS(xid, fid, tid, sesid, offset, len))
177 DEFINE_SMB3_RW_DONE_EVENT(write_enter);
178 DEFINE_SMB3_RW_DONE_EVENT(read_enter);
179 DEFINE_SMB3_RW_DONE_EVENT(query_dir_enter);
180 DEFINE_SMB3_RW_DONE_EVENT(zero_enter);
181 DEFINE_SMB3_RW_DONE_EVENT(falloc_enter);
182 DEFINE_SMB3_RW_DONE_EVENT(write_done);
183 DEFINE_SMB3_RW_DONE_EVENT(read_done);
184 DEFINE_SMB3_RW_DONE_EVENT(query_dir_done);
185 DEFINE_SMB3_RW_DONE_EVENT(zero_done);
186 DEFINE_SMB3_RW_DONE_EVENT(falloc_done);
188 /* For logging successful set EOF (truncate) */
189 DECLARE_EVENT_CLASS(smb3_eof_class,
190 TP_PROTO(unsigned int xid,
195 TP_ARGS(xid, fid, tid, sesid, offset),
197 __field(unsigned int, xid)
200 __field(__u64, sesid)
201 __field(__u64, offset)
207 __entry->sesid = sesid;
208 __entry->offset = offset;
210 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx",
211 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
215 #define DEFINE_SMB3_EOF_EVENT(name) \
216 DEFINE_EVENT(smb3_eof_class, smb3_##name, \
217 TP_PROTO(unsigned int xid, \
222 TP_ARGS(xid, fid, tid, sesid, offset))
224 DEFINE_SMB3_EOF_EVENT(set_eof);
227 * For handle based calls other than read and write, and get/set info
229 DECLARE_EVENT_CLASS(smb3_fd_class,
230 TP_PROTO(unsigned int xid,
234 TP_ARGS(xid, fid, tid, sesid),
236 __field(unsigned int, xid)
239 __field(__u64, sesid)
245 __entry->sesid = sesid;
247 TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx",
248 __entry->xid, __entry->sesid, __entry->tid, __entry->fid)
251 #define DEFINE_SMB3_FD_EVENT(name) \
252 DEFINE_EVENT(smb3_fd_class, smb3_##name, \
253 TP_PROTO(unsigned int xid, \
257 TP_ARGS(xid, fid, tid, sesid))
259 DEFINE_SMB3_FD_EVENT(flush_enter);
260 DEFINE_SMB3_FD_EVENT(flush_done);
261 DEFINE_SMB3_FD_EVENT(close_enter);
262 DEFINE_SMB3_FD_EVENT(close_done);
263 DEFINE_SMB3_FD_EVENT(oplock_not_found);
265 DECLARE_EVENT_CLASS(smb3_fd_err_class,
266 TP_PROTO(unsigned int xid,
271 TP_ARGS(xid, fid, tid, sesid, rc),
273 __field(unsigned int, xid)
276 __field(__u64, sesid)
283 __entry->sesid = sesid;
286 TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d",
287 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
291 #define DEFINE_SMB3_FD_ERR_EVENT(name) \
292 DEFINE_EVENT(smb3_fd_err_class, smb3_##name, \
293 TP_PROTO(unsigned int xid, \
298 TP_ARGS(xid, fid, tid, sesid, rc))
300 DEFINE_SMB3_FD_ERR_EVENT(flush_err);
301 DEFINE_SMB3_FD_ERR_EVENT(lock_err);
302 DEFINE_SMB3_FD_ERR_EVENT(close_err);
305 * For handle based query/set info calls
307 DECLARE_EVENT_CLASS(smb3_inf_enter_class,
308 TP_PROTO(unsigned int xid,
314 TP_ARGS(xid, fid, tid, sesid, infclass, type),
316 __field(unsigned int, xid)
319 __field(__u64, sesid)
320 __field(__u8, infclass)
327 __entry->sesid = sesid;
328 __entry->infclass = infclass;
329 __entry->type = type;
331 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x",
332 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
333 __entry->infclass, __entry->type)
336 #define DEFINE_SMB3_INF_ENTER_EVENT(name) \
337 DEFINE_EVENT(smb3_inf_enter_class, smb3_##name, \
338 TP_PROTO(unsigned int xid, \
344 TP_ARGS(xid, fid, tid, sesid, infclass, type))
346 DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter);
347 DEFINE_SMB3_INF_ENTER_EVENT(query_info_done);
348 DEFINE_SMB3_INF_ENTER_EVENT(notify_enter);
349 DEFINE_SMB3_INF_ENTER_EVENT(notify_done);
351 DECLARE_EVENT_CLASS(smb3_inf_err_class,
352 TP_PROTO(unsigned int xid,
359 TP_ARGS(xid, fid, tid, sesid, infclass, type, rc),
361 __field(unsigned int, xid)
364 __field(__u64, sesid)
365 __field(__u8, infclass)
373 __entry->sesid = sesid;
374 __entry->infclass = infclass;
375 __entry->type = type;
378 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d",
379 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
380 __entry->infclass, __entry->type, __entry->rc)
383 #define DEFINE_SMB3_INF_ERR_EVENT(name) \
384 DEFINE_EVENT(smb3_inf_err_class, smb3_##name, \
385 TP_PROTO(unsigned int xid, \
392 TP_ARGS(xid, fid, tid, sesid, infclass, type, rc))
394 DEFINE_SMB3_INF_ERR_EVENT(query_info_err);
395 DEFINE_SMB3_INF_ERR_EVENT(set_info_err);
396 DEFINE_SMB3_INF_ERR_EVENT(notify_err);
397 DEFINE_SMB3_INF_ERR_EVENT(fsctl_err);
399 DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class,
400 TP_PROTO(unsigned int xid,
403 const char *full_path),
404 TP_ARGS(xid, tid, sesid, full_path),
406 __field(unsigned int, xid)
408 __field(__u64, sesid)
409 __string(path, full_path)
414 __entry->sesid = sesid;
415 __assign_str(path, full_path);
417 TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s",
418 __entry->xid, __entry->sesid, __entry->tid,
422 #define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name) \
423 DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name, \
424 TP_PROTO(unsigned int xid, \
427 const char *full_path), \
428 TP_ARGS(xid, tid, sesid, full_path))
430 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter);
431 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter);
432 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter);
433 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter);
434 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter);
435 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter);
436 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter);
437 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_reparse_compound_enter);
438 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(get_reparse_compound_enter);
439 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter);
440 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter);
441 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(tdis_enter);
442 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mknod_enter);
444 DECLARE_EVENT_CLASS(smb3_inf_compound_done_class,
445 TP_PROTO(unsigned int xid,
448 TP_ARGS(xid, tid, sesid),
450 __field(unsigned int, xid)
452 __field(__u64, sesid)
457 __entry->sesid = sesid;
459 TP_printk("xid=%u sid=0x%llx tid=0x%x",
460 __entry->xid, __entry->sesid, __entry->tid)
463 #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name) \
464 DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name, \
465 TP_PROTO(unsigned int xid, \
468 TP_ARGS(xid, tid, sesid))
470 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done);
471 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done);
472 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done);
473 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done);
474 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done);
475 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done);
476 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done);
477 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_reparse_compound_done);
478 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(get_reparse_compound_done);
479 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_wsl_ea_compound_done);
480 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done);
481 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done);
482 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(tdis_done);
483 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mknod_done);
485 DECLARE_EVENT_CLASS(smb3_inf_compound_err_class,
486 TP_PROTO(unsigned int xid,
490 TP_ARGS(xid, tid, sesid, rc),
492 __field(unsigned int, xid)
494 __field(__u64, sesid)
500 __entry->sesid = sesid;
503 TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d",
504 __entry->xid, __entry->sesid, __entry->tid,
508 #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name) \
509 DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name, \
510 TP_PROTO(unsigned int xid, \
514 TP_ARGS(xid, tid, sesid, rc))
516 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err);
517 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err);
518 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err);
519 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err);
520 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err);
521 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err);
522 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err);
523 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_reparse_compound_err);
524 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(get_reparse_compound_err);
525 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_wsl_ea_compound_err);
526 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err);
527 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err);
528 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(tdis_err);
529 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mknod_err);
532 * For logging SMB3 Status code and Command for responses which return errors
534 DECLARE_EVENT_CLASS(smb3_cmd_err_class,
541 TP_ARGS(tid, sesid, cmd, mid, status, rc),
544 __field(__u64, sesid)
547 __field(__u32, status)
552 __entry->sesid = sesid;
555 __entry->status = status;
558 TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d",
559 __entry->sesid, __entry->tid, __entry->cmd, __entry->mid,
560 __entry->status, __entry->rc)
563 #define DEFINE_SMB3_CMD_ERR_EVENT(name) \
564 DEFINE_EVENT(smb3_cmd_err_class, smb3_##name, \
565 TP_PROTO(__u32 tid, \
571 TP_ARGS(tid, sesid, cmd, mid, status, rc))
573 DEFINE_SMB3_CMD_ERR_EVENT(cmd_err);
575 DECLARE_EVENT_CLASS(smb3_cmd_done_class,
580 TP_ARGS(tid, sesid, cmd, mid),
583 __field(__u64, sesid)
589 __entry->sesid = sesid;
593 TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu",
594 __entry->sesid, __entry->tid,
595 __entry->cmd, __entry->mid)
598 #define DEFINE_SMB3_CMD_DONE_EVENT(name) \
599 DEFINE_EVENT(smb3_cmd_done_class, smb3_##name, \
600 TP_PROTO(__u32 tid, \
604 TP_ARGS(tid, sesid, cmd, mid))
606 DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter);
607 DEFINE_SMB3_CMD_DONE_EVENT(cmd_done);
608 DEFINE_SMB3_CMD_DONE_EVENT(ses_expired);
610 DECLARE_EVENT_CLASS(smb3_mid_class,
614 unsigned long when_sent,
615 unsigned long when_received),
616 TP_ARGS(cmd, mid, pid, when_sent, when_received),
621 __field(unsigned long, when_sent)
622 __field(unsigned long, when_received)
628 __entry->when_sent = when_sent;
629 __entry->when_received = when_received;
631 TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu",
632 __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent,
633 __entry->when_received)
636 #define DEFINE_SMB3_MID_EVENT(name) \
637 DEFINE_EVENT(smb3_mid_class, smb3_##name, \
638 TP_PROTO(__u16 cmd, \
641 unsigned long when_sent, \
642 unsigned long when_received), \
643 TP_ARGS(cmd, mid, pid, when_sent, when_received))
645 DEFINE_SMB3_MID_EVENT(slow_rsp);
647 DECLARE_EVENT_CLASS(smb3_exit_err_class,
648 TP_PROTO(unsigned int xid,
649 const char *func_name,
651 TP_ARGS(xid, func_name, rc),
653 __field(unsigned int, xid)
654 __string(func_name, func_name)
659 __assign_str(func_name, func_name);
662 TP_printk("\t%s: xid=%u rc=%d",
663 __get_str(func_name), __entry->xid, __entry->rc)
666 #define DEFINE_SMB3_EXIT_ERR_EVENT(name) \
667 DEFINE_EVENT(smb3_exit_err_class, smb3_##name, \
668 TP_PROTO(unsigned int xid, \
669 const char *func_name, \
671 TP_ARGS(xid, func_name, rc))
673 DEFINE_SMB3_EXIT_ERR_EVENT(exit_err);
676 DECLARE_EVENT_CLASS(smb3_sync_err_class,
677 TP_PROTO(unsigned long ino,
681 __field(unsigned long, ino)
688 TP_printk("\tino=%lu rc=%d",
689 __entry->ino, __entry->rc)
692 #define DEFINE_SMB3_SYNC_ERR_EVENT(name) \
693 DEFINE_EVENT(smb3_sync_err_class, cifs_##name, \
694 TP_PROTO(unsigned long ino, \
698 DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err);
699 DEFINE_SMB3_SYNC_ERR_EVENT(flush_err);
702 DECLARE_EVENT_CLASS(smb3_enter_exit_class,
703 TP_PROTO(unsigned int xid,
704 const char *func_name),
705 TP_ARGS(xid, func_name),
707 __field(unsigned int, xid)
708 __string(func_name, func_name)
712 __assign_str(func_name, func_name);
714 TP_printk("\t%s: xid=%u",
715 __get_str(func_name), __entry->xid)
718 #define DEFINE_SMB3_ENTER_EXIT_EVENT(name) \
719 DEFINE_EVENT(smb3_enter_exit_class, smb3_##name, \
720 TP_PROTO(unsigned int xid, \
721 const char *func_name), \
722 TP_ARGS(xid, func_name))
724 DEFINE_SMB3_ENTER_EXIT_EVENT(enter);
725 DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done);
728 * For SMB2/SMB3 tree connect
731 DECLARE_EVENT_CLASS(smb3_tcon_class,
732 TP_PROTO(unsigned int xid,
735 const char *unc_name,
737 TP_ARGS(xid, tid, sesid, unc_name, rc),
739 __field(unsigned int, xid)
741 __field(__u64, sesid)
742 __string(name, unc_name)
748 __entry->sesid = sesid;
749 __assign_str(name, unc_name);
752 TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d",
753 __entry->xid, __entry->sesid, __entry->tid,
754 __get_str(name), __entry->rc)
757 #define DEFINE_SMB3_TCON_EVENT(name) \
758 DEFINE_EVENT(smb3_tcon_class, smb3_##name, \
759 TP_PROTO(unsigned int xid, \
762 const char *unc_name, \
764 TP_ARGS(xid, tid, sesid, unc_name, rc))
766 DEFINE_SMB3_TCON_EVENT(tcon);
767 DEFINE_SMB3_TCON_EVENT(qfs_done);
770 * For smb2/smb3 open (including create and mkdir) calls
773 DECLARE_EVENT_CLASS(smb3_open_enter_class,
774 TP_PROTO(unsigned int xid,
777 const char *full_path,
780 TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access),
782 __field(unsigned int, xid)
784 __field(__u64, sesid)
785 __string(path, full_path)
786 __field(int, create_options)
787 __field(int, desired_access)
792 __entry->sesid = sesid;
793 __assign_str(path, full_path);
794 __entry->create_options = create_options;
795 __entry->desired_access = desired_access;
797 TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s cr_opts=0x%x des_access=0x%x",
798 __entry->xid, __entry->sesid, __entry->tid, __get_str(path),
799 __entry->create_options, __entry->desired_access)
802 #define DEFINE_SMB3_OPEN_ENTER_EVENT(name) \
803 DEFINE_EVENT(smb3_open_enter_class, smb3_##name, \
804 TP_PROTO(unsigned int xid, \
807 const char *full_path, \
808 int create_options, \
809 int desired_access), \
810 TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access))
812 DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter);
813 DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter);
815 DECLARE_EVENT_CLASS(smb3_open_err_class,
816 TP_PROTO(unsigned int xid,
822 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc),
824 __field(unsigned int, xid)
826 __field(__u64, sesid)
827 __field(int, create_options)
828 __field(int, desired_access)
834 __entry->sesid = sesid;
835 __entry->create_options = create_options;
836 __entry->desired_access = desired_access;
839 TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d",
840 __entry->xid, __entry->sesid, __entry->tid,
841 __entry->create_options, __entry->desired_access, __entry->rc)
844 #define DEFINE_SMB3_OPEN_ERR_EVENT(name) \
845 DEFINE_EVENT(smb3_open_err_class, smb3_##name, \
846 TP_PROTO(unsigned int xid, \
849 int create_options, \
850 int desired_access, \
852 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc))
854 DEFINE_SMB3_OPEN_ERR_EVENT(open_err);
855 DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err);
857 DECLARE_EVENT_CLASS(smb3_open_done_class,
858 TP_PROTO(unsigned int xid,
864 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access),
866 __field(unsigned int, xid)
869 __field(__u64, sesid)
870 __field(int, create_options)
871 __field(int, desired_access)
877 __entry->sesid = sesid;
878 __entry->create_options = create_options;
879 __entry->desired_access = desired_access;
881 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x",
882 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
883 __entry->create_options, __entry->desired_access)
886 #define DEFINE_SMB3_OPEN_DONE_EVENT(name) \
887 DEFINE_EVENT(smb3_open_done_class, smb3_##name, \
888 TP_PROTO(unsigned int xid, \
892 int create_options, \
893 int desired_access), \
894 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access))
896 DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
897 DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);
900 DECLARE_EVENT_CLASS(smb3_lease_done_class,
901 TP_PROTO(__u32 lease_state,
905 __u64 lease_key_high),
906 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high),
908 __field(__u32, lease_state)
910 __field(__u64, sesid)
911 __field(__u64, lease_key_low)
912 __field(__u64, lease_key_high)
915 __entry->lease_state = lease_state;
917 __entry->sesid = sesid;
918 __entry->lease_key_low = lease_key_low;
919 __entry->lease_key_high = lease_key_high;
921 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x",
922 __entry->sesid, __entry->tid, __entry->lease_key_high,
923 __entry->lease_key_low, __entry->lease_state)
926 #define DEFINE_SMB3_LEASE_DONE_EVENT(name) \
927 DEFINE_EVENT(smb3_lease_done_class, smb3_##name, \
928 TP_PROTO(__u32 lease_state, \
931 __u64 lease_key_low, \
932 __u64 lease_key_high), \
933 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high))
935 DEFINE_SMB3_LEASE_DONE_EVENT(lease_done);
936 DEFINE_SMB3_LEASE_DONE_EVENT(lease_not_found);
938 DECLARE_EVENT_CLASS(smb3_lease_err_class,
939 TP_PROTO(__u32 lease_state,
943 __u64 lease_key_high,
945 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc),
947 __field(__u32, lease_state)
949 __field(__u64, sesid)
950 __field(__u64, lease_key_low)
951 __field(__u64, lease_key_high)
955 __entry->lease_state = lease_state;
957 __entry->sesid = sesid;
958 __entry->lease_key_low = lease_key_low;
959 __entry->lease_key_high = lease_key_high;
962 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d",
963 __entry->sesid, __entry->tid, __entry->lease_key_high,
964 __entry->lease_key_low, __entry->lease_state, __entry->rc)
967 #define DEFINE_SMB3_LEASE_ERR_EVENT(name) \
968 DEFINE_EVENT(smb3_lease_err_class, smb3_##name, \
969 TP_PROTO(__u32 lease_state, \
972 __u64 lease_key_low, \
973 __u64 lease_key_high, \
975 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc))
977 DEFINE_SMB3_LEASE_ERR_EVENT(lease_err);
979 DECLARE_EVENT_CLASS(smb3_connect_class,
980 TP_PROTO(char *hostname,
982 const struct __kernel_sockaddr_storage *dst_addr),
983 TP_ARGS(hostname, conn_id, dst_addr),
985 __string(hostname, hostname)
986 __field(__u64, conn_id)
987 __array(__u8, dst_addr, sizeof(struct sockaddr_storage))
990 struct sockaddr_storage *pss = NULL;
992 __entry->conn_id = conn_id;
993 pss = (struct sockaddr_storage *)__entry->dst_addr;
995 __assign_str(hostname, hostname);
997 TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc",
1003 #define DEFINE_SMB3_CONNECT_EVENT(name) \
1004 DEFINE_EVENT(smb3_connect_class, smb3_##name, \
1005 TP_PROTO(char *hostname, \
1007 const struct __kernel_sockaddr_storage *addr), \
1008 TP_ARGS(hostname, conn_id, addr))
1010 DEFINE_SMB3_CONNECT_EVENT(connect_done);
1011 DEFINE_SMB3_CONNECT_EVENT(smbd_connect_done);
1012 DEFINE_SMB3_CONNECT_EVENT(smbd_connect_err);
1014 DECLARE_EVENT_CLASS(smb3_connect_err_class,
1015 TP_PROTO(char *hostname, __u64 conn_id,
1016 const struct __kernel_sockaddr_storage *dst_addr, int rc),
1017 TP_ARGS(hostname, conn_id, dst_addr, rc),
1019 __string(hostname, hostname)
1020 __field(__u64, conn_id)
1021 __array(__u8, dst_addr, sizeof(struct sockaddr_storage))
1025 struct sockaddr_storage *pss = NULL;
1027 __entry->conn_id = conn_id;
1029 pss = (struct sockaddr_storage *)__entry->dst_addr;
1031 __assign_str(hostname, hostname);
1033 TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc",
1036 __get_str(hostname),
1040 #define DEFINE_SMB3_CONNECT_ERR_EVENT(name) \
1041 DEFINE_EVENT(smb3_connect_err_class, smb3_##name, \
1042 TP_PROTO(char *hostname, \
1044 const struct __kernel_sockaddr_storage *addr, \
1046 TP_ARGS(hostname, conn_id, addr, rc))
1048 DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err);
1050 DECLARE_EVENT_CLASS(smb3_reconnect_class,
1051 TP_PROTO(__u64 currmid,
1054 TP_ARGS(currmid, conn_id, hostname),
1056 __field(__u64, currmid)
1057 __field(__u64, conn_id)
1058 __string(hostname, hostname)
1061 __entry->currmid = currmid;
1062 __entry->conn_id = conn_id;
1063 __assign_str(hostname, hostname);
1065 TP_printk("conn_id=0x%llx server=%s current_mid=%llu",
1067 __get_str(hostname),
1071 #define DEFINE_SMB3_RECONNECT_EVENT(name) \
1072 DEFINE_EVENT(smb3_reconnect_class, smb3_##name, \
1073 TP_PROTO(__u64 currmid, \
1076 TP_ARGS(currmid, conn_id, hostname))
1078 DEFINE_SMB3_RECONNECT_EVENT(reconnect);
1079 DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect);
1081 DECLARE_EVENT_CLASS(smb3_ses_class,
1082 TP_PROTO(__u64 sesid),
1085 __field(__u64, sesid)
1088 __entry->sesid = sesid;
1090 TP_printk("sid=0x%llx",
1094 #define DEFINE_SMB3_SES_EVENT(name) \
1095 DEFINE_EVENT(smb3_ses_class, smb3_##name, \
1096 TP_PROTO(__u64 sesid), \
1099 DEFINE_SMB3_SES_EVENT(ses_not_found);
1101 DECLARE_EVENT_CLASS(smb3_ioctl_class,
1102 TP_PROTO(unsigned int xid,
1104 unsigned int command),
1105 TP_ARGS(xid, fid, command),
1107 __field(unsigned int, xid)
1109 __field(unsigned int, command)
1114 __entry->command = command;
1116 TP_printk("xid=%u fid=0x%llx ioctl cmd=0x%x",
1117 __entry->xid, __entry->fid, __entry->command)
1120 #define DEFINE_SMB3_IOCTL_EVENT(name) \
1121 DEFINE_EVENT(smb3_ioctl_class, smb3_##name, \
1122 TP_PROTO(unsigned int xid, \
1124 unsigned int command), \
1125 TP_ARGS(xid, fid, command))
1127 DEFINE_SMB3_IOCTL_EVENT(ioctl);
1133 DECLARE_EVENT_CLASS(smb3_credit_class,
1134 TP_PROTO(__u64 currmid,
1140 TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight),
1142 __field(__u64, currmid)
1143 __field(__u64, conn_id)
1144 __string(hostname, hostname)
1145 __field(int, credits)
1146 __field(int, credits_to_add)
1147 __field(int, in_flight)
1150 __entry->currmid = currmid;
1151 __entry->conn_id = conn_id;
1152 __assign_str(hostname, hostname);
1153 __entry->credits = credits;
1154 __entry->credits_to_add = credits_to_add;
1155 __entry->in_flight = in_flight;
1157 TP_printk("conn_id=0x%llx server=%s current_mid=%llu "
1158 "credits=%d credit_change=%d in_flight=%d",
1160 __get_str(hostname),
1163 __entry->credits_to_add,
1167 #define DEFINE_SMB3_CREDIT_EVENT(name) \
1168 DEFINE_EVENT(smb3_credit_class, smb3_##name, \
1169 TP_PROTO(__u64 currmid, \
1173 int credits_to_add, \
1175 TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight))
1177 DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits);
1178 DEFINE_SMB3_CREDIT_EVENT(reconnect_detected);
1179 DEFINE_SMB3_CREDIT_EVENT(credit_timeout);
1180 DEFINE_SMB3_CREDIT_EVENT(insufficient_credits);
1181 DEFINE_SMB3_CREDIT_EVENT(too_many_credits);
1182 DEFINE_SMB3_CREDIT_EVENT(add_credits);
1183 DEFINE_SMB3_CREDIT_EVENT(adj_credits);
1184 DEFINE_SMB3_CREDIT_EVENT(hdr_credits);
1185 DEFINE_SMB3_CREDIT_EVENT(nblk_credits);
1186 DEFINE_SMB3_CREDIT_EVENT(pend_credits);
1187 DEFINE_SMB3_CREDIT_EVENT(wait_credits);
1188 DEFINE_SMB3_CREDIT_EVENT(waitff_credits);
1189 DEFINE_SMB3_CREDIT_EVENT(overflow_credits);
1190 DEFINE_SMB3_CREDIT_EVENT(set_credits);
1193 TRACE_EVENT(smb3_tcon_ref,
1194 TP_PROTO(unsigned int tcon_debug_id, int ref,
1195 enum smb3_tcon_ref_trace trace),
1196 TP_ARGS(tcon_debug_id, ref, trace),
1198 __field(unsigned int, tcon)
1200 __field(enum smb3_tcon_ref_trace, trace)
1203 __entry->tcon = tcon_debug_id;
1205 __entry->trace = trace;
1207 TP_printk("TC=%08x %s r=%u",
1209 __print_symbolic(__entry->trace, smb3_tcon_ref_traces),
1216 #endif /* _CIFS_TRACE_H */
1218 #undef TRACE_INCLUDE_PATH
1219 #define TRACE_INCLUDE_PATH .
1220 #define TRACE_INCLUDE_FILE trace
1221 #include <trace/define_trace.h>