1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Copyright (C) 2018, Microsoft Corporation.
5 * Author(s): Steve French <stfrench@microsoft.com>
8 #define TRACE_SYSTEM cifs
10 #if !defined(_CIFS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
13 #include <linux/tracepoint.h>
14 #include <linux/net.h>
15 #include <linux/inet.h>
18 * Please use this 3-part article as a reference for writing new tracepoints:
19 * https://lwn.net/Articles/379903/
22 /* For logging errors in read or write */
23 DECLARE_EVENT_CLASS(smb3_rw_err_class,
24 TP_PROTO(unsigned int xid,
31 TP_ARGS(xid, fid, tid, sesid, offset, len, rc),
33 __field(unsigned int, xid)
37 __field(__u64, offset)
45 __entry->sesid = sesid;
46 __entry->offset = offset;
50 TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d",
51 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
52 __entry->offset, __entry->len, __entry->rc)
55 #define DEFINE_SMB3_RW_ERR_EVENT(name) \
56 DEFINE_EVENT(smb3_rw_err_class, smb3_##name, \
57 TP_PROTO(unsigned int xid, \
64 TP_ARGS(xid, fid, tid, sesid, offset, len, rc))
66 DEFINE_SMB3_RW_ERR_EVENT(write_err);
67 DEFINE_SMB3_RW_ERR_EVENT(read_err);
68 DEFINE_SMB3_RW_ERR_EVENT(query_dir_err);
69 DEFINE_SMB3_RW_ERR_EVENT(zero_err);
70 DEFINE_SMB3_RW_ERR_EVENT(falloc_err);
73 /* For logging successful read or write */
74 DECLARE_EVENT_CLASS(smb3_rw_done_class,
75 TP_PROTO(unsigned int xid,
81 TP_ARGS(xid, fid, tid, sesid, offset, len),
83 __field(unsigned int, xid)
87 __field(__u64, offset)
94 __entry->sesid = sesid;
95 __entry->offset = offset;
98 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x",
99 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
100 __entry->offset, __entry->len)
103 #define DEFINE_SMB3_RW_DONE_EVENT(name) \
104 DEFINE_EVENT(smb3_rw_done_class, smb3_##name, \
105 TP_PROTO(unsigned int xid, \
111 TP_ARGS(xid, fid, tid, sesid, offset, len))
113 DEFINE_SMB3_RW_DONE_EVENT(write_enter);
114 DEFINE_SMB3_RW_DONE_EVENT(read_enter);
115 DEFINE_SMB3_RW_DONE_EVENT(query_dir_enter);
116 DEFINE_SMB3_RW_DONE_EVENT(zero_enter);
117 DEFINE_SMB3_RW_DONE_EVENT(falloc_enter);
118 DEFINE_SMB3_RW_DONE_EVENT(write_done);
119 DEFINE_SMB3_RW_DONE_EVENT(read_done);
120 DEFINE_SMB3_RW_DONE_EVENT(query_dir_done);
121 DEFINE_SMB3_RW_DONE_EVENT(zero_done);
122 DEFINE_SMB3_RW_DONE_EVENT(falloc_done);
124 /* For logging successful set EOF (truncate) */
125 DECLARE_EVENT_CLASS(smb3_eof_class,
126 TP_PROTO(unsigned int xid,
131 TP_ARGS(xid, fid, tid, sesid, offset),
133 __field(unsigned int, xid)
136 __field(__u64, sesid)
137 __field(__u64, offset)
143 __entry->sesid = sesid;
144 __entry->offset = offset;
146 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx",
147 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
151 #define DEFINE_SMB3_EOF_EVENT(name) \
152 DEFINE_EVENT(smb3_eof_class, smb3_##name, \
153 TP_PROTO(unsigned int xid, \
158 TP_ARGS(xid, fid, tid, sesid, offset))
160 DEFINE_SMB3_EOF_EVENT(set_eof);
163 * For handle based calls other than read and write, and get/set info
165 DECLARE_EVENT_CLASS(smb3_fd_class,
166 TP_PROTO(unsigned int xid,
170 TP_ARGS(xid, fid, tid, sesid),
172 __field(unsigned int, xid)
175 __field(__u64, sesid)
181 __entry->sesid = sesid;
183 TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx",
184 __entry->xid, __entry->sesid, __entry->tid, __entry->fid)
187 #define DEFINE_SMB3_FD_EVENT(name) \
188 DEFINE_EVENT(smb3_fd_class, smb3_##name, \
189 TP_PROTO(unsigned int xid, \
193 TP_ARGS(xid, fid, tid, sesid))
195 DEFINE_SMB3_FD_EVENT(flush_enter);
196 DEFINE_SMB3_FD_EVENT(flush_done);
197 DEFINE_SMB3_FD_EVENT(close_enter);
198 DEFINE_SMB3_FD_EVENT(close_done);
199 DEFINE_SMB3_FD_EVENT(oplock_not_found);
201 DECLARE_EVENT_CLASS(smb3_fd_err_class,
202 TP_PROTO(unsigned int xid,
207 TP_ARGS(xid, fid, tid, sesid, rc),
209 __field(unsigned int, xid)
212 __field(__u64, sesid)
219 __entry->sesid = sesid;
222 TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d",
223 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
227 #define DEFINE_SMB3_FD_ERR_EVENT(name) \
228 DEFINE_EVENT(smb3_fd_err_class, smb3_##name, \
229 TP_PROTO(unsigned int xid, \
234 TP_ARGS(xid, fid, tid, sesid, rc))
236 DEFINE_SMB3_FD_ERR_EVENT(flush_err);
237 DEFINE_SMB3_FD_ERR_EVENT(lock_err);
238 DEFINE_SMB3_FD_ERR_EVENT(close_err);
241 * For handle based query/set info calls
243 DECLARE_EVENT_CLASS(smb3_inf_enter_class,
244 TP_PROTO(unsigned int xid,
250 TP_ARGS(xid, fid, tid, sesid, infclass, type),
252 __field(unsigned int, xid)
255 __field(__u64, sesid)
256 __field(__u8, infclass)
263 __entry->sesid = sesid;
264 __entry->infclass = infclass;
265 __entry->type = type;
267 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x",
268 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
269 __entry->infclass, __entry->type)
272 #define DEFINE_SMB3_INF_ENTER_EVENT(name) \
273 DEFINE_EVENT(smb3_inf_enter_class, smb3_##name, \
274 TP_PROTO(unsigned int xid, \
280 TP_ARGS(xid, fid, tid, sesid, infclass, type))
282 DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter);
283 DEFINE_SMB3_INF_ENTER_EVENT(query_info_done);
284 DEFINE_SMB3_INF_ENTER_EVENT(notify_enter);
285 DEFINE_SMB3_INF_ENTER_EVENT(notify_done);
287 DECLARE_EVENT_CLASS(smb3_inf_err_class,
288 TP_PROTO(unsigned int xid,
295 TP_ARGS(xid, fid, tid, sesid, infclass, type, rc),
297 __field(unsigned int, xid)
300 __field(__u64, sesid)
301 __field(__u8, infclass)
309 __entry->sesid = sesid;
310 __entry->infclass = infclass;
311 __entry->type = type;
314 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d",
315 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
316 __entry->infclass, __entry->type, __entry->rc)
319 #define DEFINE_SMB3_INF_ERR_EVENT(name) \
320 DEFINE_EVENT(smb3_inf_err_class, smb3_##name, \
321 TP_PROTO(unsigned int xid, \
328 TP_ARGS(xid, fid, tid, sesid, infclass, type, rc))
330 DEFINE_SMB3_INF_ERR_EVENT(query_info_err);
331 DEFINE_SMB3_INF_ERR_EVENT(set_info_err);
332 DEFINE_SMB3_INF_ERR_EVENT(notify_err);
333 DEFINE_SMB3_INF_ERR_EVENT(fsctl_err);
335 DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class,
336 TP_PROTO(unsigned int xid,
339 const char *full_path),
340 TP_ARGS(xid, tid, sesid, full_path),
342 __field(unsigned int, xid)
344 __field(__u64, sesid)
345 __string(path, full_path)
350 __entry->sesid = sesid;
351 __assign_str(path, full_path);
353 TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s",
354 __entry->xid, __entry->sesid, __entry->tid,
358 #define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name) \
359 DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name, \
360 TP_PROTO(unsigned int xid, \
363 const char *full_path), \
364 TP_ARGS(xid, tid, sesid, full_path))
366 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter);
367 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter);
368 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter);
369 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter);
370 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter);
371 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter);
372 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter);
373 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_reparse_compound_enter);
374 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(get_reparse_compound_enter);
375 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter);
376 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter);
377 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(tdis_enter);
379 DECLARE_EVENT_CLASS(smb3_inf_compound_done_class,
380 TP_PROTO(unsigned int xid,
383 TP_ARGS(xid, tid, sesid),
385 __field(unsigned int, xid)
387 __field(__u64, sesid)
392 __entry->sesid = sesid;
394 TP_printk("xid=%u sid=0x%llx tid=0x%x",
395 __entry->xid, __entry->sesid, __entry->tid)
398 #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name) \
399 DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name, \
400 TP_PROTO(unsigned int xid, \
403 TP_ARGS(xid, tid, sesid))
405 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done);
406 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done);
407 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done);
408 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done);
409 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done);
410 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done);
411 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done);
412 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_reparse_compound_done);
413 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(get_reparse_compound_done);
414 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_wsl_ea_compound_done);
415 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done);
416 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done);
417 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(tdis_done);
420 DECLARE_EVENT_CLASS(smb3_inf_compound_err_class,
421 TP_PROTO(unsigned int xid,
425 TP_ARGS(xid, tid, sesid, rc),
427 __field(unsigned int, xid)
429 __field(__u64, sesid)
435 __entry->sesid = sesid;
438 TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d",
439 __entry->xid, __entry->sesid, __entry->tid,
443 #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name) \
444 DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name, \
445 TP_PROTO(unsigned int xid, \
449 TP_ARGS(xid, tid, sesid, rc))
451 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err);
452 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err);
453 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err);
454 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err);
455 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err);
456 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err);
457 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err);
458 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_reparse_compound_err);
459 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(get_reparse_compound_err);
460 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_wsl_ea_compound_err);
461 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err);
462 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err);
463 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(tdis_err);
466 * For logging SMB3 Status code and Command for responses which return errors
468 DECLARE_EVENT_CLASS(smb3_cmd_err_class,
475 TP_ARGS(tid, sesid, cmd, mid, status, rc),
478 __field(__u64, sesid)
481 __field(__u32, status)
486 __entry->sesid = sesid;
489 __entry->status = status;
492 TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d",
493 __entry->sesid, __entry->tid, __entry->cmd, __entry->mid,
494 __entry->status, __entry->rc)
497 #define DEFINE_SMB3_CMD_ERR_EVENT(name) \
498 DEFINE_EVENT(smb3_cmd_err_class, smb3_##name, \
499 TP_PROTO(__u32 tid, \
505 TP_ARGS(tid, sesid, cmd, mid, status, rc))
507 DEFINE_SMB3_CMD_ERR_EVENT(cmd_err);
509 DECLARE_EVENT_CLASS(smb3_cmd_done_class,
514 TP_ARGS(tid, sesid, cmd, mid),
517 __field(__u64, sesid)
523 __entry->sesid = sesid;
527 TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu",
528 __entry->sesid, __entry->tid,
529 __entry->cmd, __entry->mid)
532 #define DEFINE_SMB3_CMD_DONE_EVENT(name) \
533 DEFINE_EVENT(smb3_cmd_done_class, smb3_##name, \
534 TP_PROTO(__u32 tid, \
538 TP_ARGS(tid, sesid, cmd, mid))
540 DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter);
541 DEFINE_SMB3_CMD_DONE_EVENT(cmd_done);
542 DEFINE_SMB3_CMD_DONE_EVENT(ses_expired);
544 DECLARE_EVENT_CLASS(smb3_mid_class,
548 unsigned long when_sent,
549 unsigned long when_received),
550 TP_ARGS(cmd, mid, pid, when_sent, when_received),
555 __field(unsigned long, when_sent)
556 __field(unsigned long, when_received)
562 __entry->when_sent = when_sent;
563 __entry->when_received = when_received;
565 TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu",
566 __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent,
567 __entry->when_received)
570 #define DEFINE_SMB3_MID_EVENT(name) \
571 DEFINE_EVENT(smb3_mid_class, smb3_##name, \
572 TP_PROTO(__u16 cmd, \
575 unsigned long when_sent, \
576 unsigned long when_received), \
577 TP_ARGS(cmd, mid, pid, when_sent, when_received))
579 DEFINE_SMB3_MID_EVENT(slow_rsp);
581 DECLARE_EVENT_CLASS(smb3_exit_err_class,
582 TP_PROTO(unsigned int xid,
583 const char *func_name,
585 TP_ARGS(xid, func_name, rc),
587 __field(unsigned int, xid)
588 __string(func_name, func_name)
593 __assign_str(func_name, func_name);
596 TP_printk("\t%s: xid=%u rc=%d",
597 __get_str(func_name), __entry->xid, __entry->rc)
600 #define DEFINE_SMB3_EXIT_ERR_EVENT(name) \
601 DEFINE_EVENT(smb3_exit_err_class, smb3_##name, \
602 TP_PROTO(unsigned int xid, \
603 const char *func_name, \
605 TP_ARGS(xid, func_name, rc))
607 DEFINE_SMB3_EXIT_ERR_EVENT(exit_err);
610 DECLARE_EVENT_CLASS(smb3_sync_err_class,
611 TP_PROTO(unsigned long ino,
615 __field(unsigned long, ino)
622 TP_printk("\tino=%lu rc=%d",
623 __entry->ino, __entry->rc)
626 #define DEFINE_SMB3_SYNC_ERR_EVENT(name) \
627 DEFINE_EVENT(smb3_sync_err_class, cifs_##name, \
628 TP_PROTO(unsigned long ino, \
632 DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err);
633 DEFINE_SMB3_SYNC_ERR_EVENT(flush_err);
636 DECLARE_EVENT_CLASS(smb3_enter_exit_class,
637 TP_PROTO(unsigned int xid,
638 const char *func_name),
639 TP_ARGS(xid, func_name),
641 __field(unsigned int, xid)
642 __string(func_name, func_name)
646 __assign_str(func_name, func_name);
648 TP_printk("\t%s: xid=%u",
649 __get_str(func_name), __entry->xid)
652 #define DEFINE_SMB3_ENTER_EXIT_EVENT(name) \
653 DEFINE_EVENT(smb3_enter_exit_class, smb3_##name, \
654 TP_PROTO(unsigned int xid, \
655 const char *func_name), \
656 TP_ARGS(xid, func_name))
658 DEFINE_SMB3_ENTER_EXIT_EVENT(enter);
659 DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done);
662 * For SMB2/SMB3 tree connect
665 DECLARE_EVENT_CLASS(smb3_tcon_class,
666 TP_PROTO(unsigned int xid,
669 const char *unc_name,
671 TP_ARGS(xid, tid, sesid, unc_name, rc),
673 __field(unsigned int, xid)
675 __field(__u64, sesid)
676 __string(name, unc_name)
682 __entry->sesid = sesid;
683 __assign_str(name, unc_name);
686 TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d",
687 __entry->xid, __entry->sesid, __entry->tid,
688 __get_str(name), __entry->rc)
691 #define DEFINE_SMB3_TCON_EVENT(name) \
692 DEFINE_EVENT(smb3_tcon_class, smb3_##name, \
693 TP_PROTO(unsigned int xid, \
696 const char *unc_name, \
698 TP_ARGS(xid, tid, sesid, unc_name, rc))
700 DEFINE_SMB3_TCON_EVENT(tcon);
701 DEFINE_SMB3_TCON_EVENT(qfs_done);
704 * For smb2/smb3 open (including create and mkdir) calls
707 DECLARE_EVENT_CLASS(smb3_open_enter_class,
708 TP_PROTO(unsigned int xid,
711 const char *full_path,
714 TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access),
716 __field(unsigned int, xid)
718 __field(__u64, sesid)
719 __string(path, full_path)
720 __field(int, create_options)
721 __field(int, desired_access)
726 __entry->sesid = sesid;
727 __assign_str(path, full_path);
728 __entry->create_options = create_options;
729 __entry->desired_access = desired_access;
731 TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s cr_opts=0x%x des_access=0x%x",
732 __entry->xid, __entry->sesid, __entry->tid, __get_str(path),
733 __entry->create_options, __entry->desired_access)
736 #define DEFINE_SMB3_OPEN_ENTER_EVENT(name) \
737 DEFINE_EVENT(smb3_open_enter_class, smb3_##name, \
738 TP_PROTO(unsigned int xid, \
741 const char *full_path, \
742 int create_options, \
743 int desired_access), \
744 TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access))
746 DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter);
747 DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter);
749 DECLARE_EVENT_CLASS(smb3_open_err_class,
750 TP_PROTO(unsigned int xid,
756 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc),
758 __field(unsigned int, xid)
760 __field(__u64, sesid)
761 __field(int, create_options)
762 __field(int, desired_access)
768 __entry->sesid = sesid;
769 __entry->create_options = create_options;
770 __entry->desired_access = desired_access;
773 TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d",
774 __entry->xid, __entry->sesid, __entry->tid,
775 __entry->create_options, __entry->desired_access, __entry->rc)
778 #define DEFINE_SMB3_OPEN_ERR_EVENT(name) \
779 DEFINE_EVENT(smb3_open_err_class, smb3_##name, \
780 TP_PROTO(unsigned int xid, \
783 int create_options, \
784 int desired_access, \
786 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc))
788 DEFINE_SMB3_OPEN_ERR_EVENT(open_err);
789 DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err);
791 DECLARE_EVENT_CLASS(smb3_open_done_class,
792 TP_PROTO(unsigned int xid,
798 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access),
800 __field(unsigned int, xid)
803 __field(__u64, sesid)
804 __field(int, create_options)
805 __field(int, desired_access)
811 __entry->sesid = sesid;
812 __entry->create_options = create_options;
813 __entry->desired_access = desired_access;
815 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x",
816 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
817 __entry->create_options, __entry->desired_access)
820 #define DEFINE_SMB3_OPEN_DONE_EVENT(name) \
821 DEFINE_EVENT(smb3_open_done_class, smb3_##name, \
822 TP_PROTO(unsigned int xid, \
826 int create_options, \
827 int desired_access), \
828 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access))
830 DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
831 DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);
834 DECLARE_EVENT_CLASS(smb3_lease_done_class,
835 TP_PROTO(__u32 lease_state,
839 __u64 lease_key_high),
840 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high),
842 __field(__u32, lease_state)
844 __field(__u64, sesid)
845 __field(__u64, lease_key_low)
846 __field(__u64, lease_key_high)
849 __entry->lease_state = lease_state;
851 __entry->sesid = sesid;
852 __entry->lease_key_low = lease_key_low;
853 __entry->lease_key_high = lease_key_high;
855 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x",
856 __entry->sesid, __entry->tid, __entry->lease_key_high,
857 __entry->lease_key_low, __entry->lease_state)
860 #define DEFINE_SMB3_LEASE_DONE_EVENT(name) \
861 DEFINE_EVENT(smb3_lease_done_class, smb3_##name, \
862 TP_PROTO(__u32 lease_state, \
865 __u64 lease_key_low, \
866 __u64 lease_key_high), \
867 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high))
869 DEFINE_SMB3_LEASE_DONE_EVENT(lease_done);
870 DEFINE_SMB3_LEASE_DONE_EVENT(lease_not_found);
872 DECLARE_EVENT_CLASS(smb3_lease_err_class,
873 TP_PROTO(__u32 lease_state,
877 __u64 lease_key_high,
879 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc),
881 __field(__u32, lease_state)
883 __field(__u64, sesid)
884 __field(__u64, lease_key_low)
885 __field(__u64, lease_key_high)
889 __entry->lease_state = lease_state;
891 __entry->sesid = sesid;
892 __entry->lease_key_low = lease_key_low;
893 __entry->lease_key_high = lease_key_high;
896 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d",
897 __entry->sesid, __entry->tid, __entry->lease_key_high,
898 __entry->lease_key_low, __entry->lease_state, __entry->rc)
901 #define DEFINE_SMB3_LEASE_ERR_EVENT(name) \
902 DEFINE_EVENT(smb3_lease_err_class, smb3_##name, \
903 TP_PROTO(__u32 lease_state, \
906 __u64 lease_key_low, \
907 __u64 lease_key_high, \
909 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc))
911 DEFINE_SMB3_LEASE_ERR_EVENT(lease_err);
913 DECLARE_EVENT_CLASS(smb3_connect_class,
914 TP_PROTO(char *hostname,
916 const struct __kernel_sockaddr_storage *dst_addr),
917 TP_ARGS(hostname, conn_id, dst_addr),
919 __string(hostname, hostname)
920 __field(__u64, conn_id)
921 __array(__u8, dst_addr, sizeof(struct sockaddr_storage))
924 struct sockaddr_storage *pss = NULL;
926 __entry->conn_id = conn_id;
927 pss = (struct sockaddr_storage *)__entry->dst_addr;
929 __assign_str(hostname, hostname);
931 TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc",
937 #define DEFINE_SMB3_CONNECT_EVENT(name) \
938 DEFINE_EVENT(smb3_connect_class, smb3_##name, \
939 TP_PROTO(char *hostname, \
941 const struct __kernel_sockaddr_storage *addr), \
942 TP_ARGS(hostname, conn_id, addr))
944 DEFINE_SMB3_CONNECT_EVENT(connect_done);
945 DEFINE_SMB3_CONNECT_EVENT(smbd_connect_done);
946 DEFINE_SMB3_CONNECT_EVENT(smbd_connect_err);
948 DECLARE_EVENT_CLASS(smb3_connect_err_class,
949 TP_PROTO(char *hostname, __u64 conn_id,
950 const struct __kernel_sockaddr_storage *dst_addr, int rc),
951 TP_ARGS(hostname, conn_id, dst_addr, rc),
953 __string(hostname, hostname)
954 __field(__u64, conn_id)
955 __array(__u8, dst_addr, sizeof(struct sockaddr_storage))
959 struct sockaddr_storage *pss = NULL;
961 __entry->conn_id = conn_id;
963 pss = (struct sockaddr_storage *)__entry->dst_addr;
965 __assign_str(hostname, hostname);
967 TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc",
974 #define DEFINE_SMB3_CONNECT_ERR_EVENT(name) \
975 DEFINE_EVENT(smb3_connect_err_class, smb3_##name, \
976 TP_PROTO(char *hostname, \
978 const struct __kernel_sockaddr_storage *addr, \
980 TP_ARGS(hostname, conn_id, addr, rc))
982 DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err);
984 DECLARE_EVENT_CLASS(smb3_reconnect_class,
985 TP_PROTO(__u64 currmid,
988 TP_ARGS(currmid, conn_id, hostname),
990 __field(__u64, currmid)
991 __field(__u64, conn_id)
992 __string(hostname, hostname)
995 __entry->currmid = currmid;
996 __entry->conn_id = conn_id;
997 __assign_str(hostname, hostname);
999 TP_printk("conn_id=0x%llx server=%s current_mid=%llu",
1001 __get_str(hostname),
1005 #define DEFINE_SMB3_RECONNECT_EVENT(name) \
1006 DEFINE_EVENT(smb3_reconnect_class, smb3_##name, \
1007 TP_PROTO(__u64 currmid, \
1010 TP_ARGS(currmid, conn_id, hostname))
1012 DEFINE_SMB3_RECONNECT_EVENT(reconnect);
1013 DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect);
1015 DECLARE_EVENT_CLASS(smb3_ses_class,
1016 TP_PROTO(__u64 sesid),
1019 __field(__u64, sesid)
1022 __entry->sesid = sesid;
1024 TP_printk("sid=0x%llx",
1028 #define DEFINE_SMB3_SES_EVENT(name) \
1029 DEFINE_EVENT(smb3_ses_class, smb3_##name, \
1030 TP_PROTO(__u64 sesid), \
1033 DEFINE_SMB3_SES_EVENT(ses_not_found);
1035 DECLARE_EVENT_CLASS(smb3_ioctl_class,
1036 TP_PROTO(unsigned int xid,
1038 unsigned int command),
1039 TP_ARGS(xid, fid, command),
1041 __field(unsigned int, xid)
1043 __field(unsigned int, command)
1048 __entry->command = command;
1050 TP_printk("xid=%u fid=0x%llx ioctl cmd=0x%x",
1051 __entry->xid, __entry->fid, __entry->command)
1054 #define DEFINE_SMB3_IOCTL_EVENT(name) \
1055 DEFINE_EVENT(smb3_ioctl_class, smb3_##name, \
1056 TP_PROTO(unsigned int xid, \
1058 unsigned int command), \
1059 TP_ARGS(xid, fid, command))
1061 DEFINE_SMB3_IOCTL_EVENT(ioctl);
1067 DECLARE_EVENT_CLASS(smb3_credit_class,
1068 TP_PROTO(__u64 currmid,
1074 TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight),
1076 __field(__u64, currmid)
1077 __field(__u64, conn_id)
1078 __string(hostname, hostname)
1079 __field(int, credits)
1080 __field(int, credits_to_add)
1081 __field(int, in_flight)
1084 __entry->currmid = currmid;
1085 __entry->conn_id = conn_id;
1086 __assign_str(hostname, hostname);
1087 __entry->credits = credits;
1088 __entry->credits_to_add = credits_to_add;
1089 __entry->in_flight = in_flight;
1091 TP_printk("conn_id=0x%llx server=%s current_mid=%llu "
1092 "credits=%d credit_change=%d in_flight=%d",
1094 __get_str(hostname),
1097 __entry->credits_to_add,
1101 #define DEFINE_SMB3_CREDIT_EVENT(name) \
1102 DEFINE_EVENT(smb3_credit_class, smb3_##name, \
1103 TP_PROTO(__u64 currmid, \
1107 int credits_to_add, \
1109 TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight))
1111 DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits);
1112 DEFINE_SMB3_CREDIT_EVENT(reconnect_detected);
1113 DEFINE_SMB3_CREDIT_EVENT(credit_timeout);
1114 DEFINE_SMB3_CREDIT_EVENT(insufficient_credits);
1115 DEFINE_SMB3_CREDIT_EVENT(too_many_credits);
1116 DEFINE_SMB3_CREDIT_EVENT(add_credits);
1117 DEFINE_SMB3_CREDIT_EVENT(adj_credits);
1118 DEFINE_SMB3_CREDIT_EVENT(hdr_credits);
1119 DEFINE_SMB3_CREDIT_EVENT(nblk_credits);
1120 DEFINE_SMB3_CREDIT_EVENT(pend_credits);
1121 DEFINE_SMB3_CREDIT_EVENT(wait_credits);
1122 DEFINE_SMB3_CREDIT_EVENT(waitff_credits);
1123 DEFINE_SMB3_CREDIT_EVENT(overflow_credits);
1124 DEFINE_SMB3_CREDIT_EVENT(set_credits);
1126 #endif /* _CIFS_TRACE_H */
1128 #undef TRACE_INCLUDE_PATH
1129 #define TRACE_INCLUDE_PATH .
1130 #define TRACE_INCLUDE_FILE trace
1131 #include <trace/define_trace.h>