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_rw_credits_traces \
24 EM(cifs_trace_rw_credits_call_readv_adjust, "rd-call-adj") \
25 EM(cifs_trace_rw_credits_call_writev_adjust, "wr-call-adj") \
26 EM(cifs_trace_rw_credits_free_subreq, "free-subreq") \
27 EM(cifs_trace_rw_credits_issue_read_adjust, "rd-issu-adj") \
28 EM(cifs_trace_rw_credits_issue_write_adjust, "wr-issu-adj") \
29 EM(cifs_trace_rw_credits_no_adjust_up, "no-adj-up ") \
30 EM(cifs_trace_rw_credits_old_session, "old-session") \
31 EM(cifs_trace_rw_credits_read_response_add, "rd-resp-add") \
32 EM(cifs_trace_rw_credits_read_response_clear, "rd-resp-clr") \
33 EM(cifs_trace_rw_credits_read_resubmit, "rd-resubmit") \
34 EM(cifs_trace_rw_credits_read_submit, "rd-submit ") \
35 EM(cifs_trace_rw_credits_write_prepare, "wr-prepare ") \
36 EM(cifs_trace_rw_credits_write_response_add, "wr-resp-add") \
37 EM(cifs_trace_rw_credits_write_response_clear, "wr-resp-clr") \
38 E_(cifs_trace_rw_credits_zero_in_flight, "ZERO-IN-FLT")
40 #define smb3_tcon_ref_traces \
41 EM(netfs_trace_tcon_ref_dec_dfs_refer, "DEC DfsRef") \
42 EM(netfs_trace_tcon_ref_free, "FRE ") \
43 EM(netfs_trace_tcon_ref_free_fail, "FRE Fail ") \
44 EM(netfs_trace_tcon_ref_free_ipc, "FRE Ipc ") \
45 EM(netfs_trace_tcon_ref_free_ipc_fail, "FRE Ipc-F ") \
46 EM(netfs_trace_tcon_ref_free_reconnect_server, "FRE Reconn") \
47 EM(netfs_trace_tcon_ref_get_cached_laundromat, "GET Ch-Lau") \
48 EM(netfs_trace_tcon_ref_get_cached_lease_break, "GET Ch-Lea") \
49 EM(netfs_trace_tcon_ref_get_cancelled_close, "GET Cn-Cls") \
50 EM(netfs_trace_tcon_ref_get_dfs_refer, "GET DfsRef") \
51 EM(netfs_trace_tcon_ref_get_find, "GET Find ") \
52 EM(netfs_trace_tcon_ref_get_find_sess_tcon, "GET FndSes") \
53 EM(netfs_trace_tcon_ref_get_reconnect_server, "GET Reconn") \
54 EM(netfs_trace_tcon_ref_new, "NEW ") \
55 EM(netfs_trace_tcon_ref_new_ipc, "NEW Ipc ") \
56 EM(netfs_trace_tcon_ref_new_reconnect_server, "NEW Reconn") \
57 EM(netfs_trace_tcon_ref_put_cached_close, "PUT Ch-Cls") \
58 EM(netfs_trace_tcon_ref_put_cancelled_close, "PUT Cn-Cls") \
59 EM(netfs_trace_tcon_ref_put_cancelled_close_fid, "PUT Cn-Fid") \
60 EM(netfs_trace_tcon_ref_put_cancelled_mid, "PUT Cn-Mid") \
61 EM(netfs_trace_tcon_ref_put_mnt_ctx, "PUT MntCtx") \
62 EM(netfs_trace_tcon_ref_put_reconnect_server, "PUT Reconn") \
63 EM(netfs_trace_tcon_ref_put_tlink, "PUT Tlink ") \
64 EM(netfs_trace_tcon_ref_see_cancelled_close, "SEE Cn-Cls") \
65 EM(netfs_trace_tcon_ref_see_fscache_collision, "SEE FV-CO!") \
66 EM(netfs_trace_tcon_ref_see_fscache_okay, "SEE FV-Ok ") \
67 EM(netfs_trace_tcon_ref_see_fscache_relinq, "SEE FV-Rlq") \
68 E_(netfs_trace_tcon_ref_see_umount, "SEE Umount")
74 * Define those tracing enums.
76 #ifndef __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY
77 #define __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY
82 enum smb3_rw_credits_trace
{ smb3_rw_credits_traces
} __mode(byte
);
83 enum smb3_tcon_ref_trace
{ smb3_tcon_ref_traces
} __mode(byte
);
90 * Export enum symbols via userspace.
92 #define EM(a, b) TRACE_DEFINE_ENUM(a);
93 #define E_(a, b) TRACE_DEFINE_ENUM(a);
95 smb3_rw_credits_traces
;
102 * Now redefine the EM() and E_() macros to map the enums to the strings that
103 * will be printed in the output.
105 #define EM(a, b) { a, b },
106 #define E_(a, b) { a, b }
108 /* For logging errors in read or write */
109 DECLARE_EVENT_CLASS(smb3_rw_err_class
,
110 TP_PROTO(unsigned int rreq_debug_id
,
111 unsigned int rreq_debug_index
,
119 TP_ARGS(rreq_debug_id
, rreq_debug_index
,
120 xid
, fid
, tid
, sesid
, offset
, len
, rc
),
122 __field(unsigned int, rreq_debug_id
)
123 __field(unsigned int, rreq_debug_index
)
124 __field(unsigned int, xid
)
127 __field(__u64
, sesid
)
128 __field(__u64
, offset
)
133 __entry
->rreq_debug_id
= rreq_debug_id
;
134 __entry
->rreq_debug_index
= rreq_debug_index
;
138 __entry
->sesid
= sesid
;
139 __entry
->offset
= offset
;
143 TP_printk("\tR=%08x[%x] xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d",
144 __entry
->rreq_debug_id
, __entry
->rreq_debug_index
,
145 __entry
->xid
, __entry
->sesid
, __entry
->tid
, __entry
->fid
,
146 __entry
->offset
, __entry
->len
, __entry
->rc
)
149 #define DEFINE_SMB3_RW_ERR_EVENT(name) \
150 DEFINE_EVENT(smb3_rw_err_class, smb3_##name, \
151 TP_PROTO(unsigned int rreq_debug_id, \
152 unsigned int rreq_debug_index, \
160 TP_ARGS(rreq_debug_id, rreq_debug_index, xid, fid, tid, sesid, offset, len, rc))
162 DEFINE_SMB3_RW_ERR_EVENT(read_err
);
163 DEFINE_SMB3_RW_ERR_EVENT(write_err
);
165 /* For logging errors in other file I/O ops */
166 DECLARE_EVENT_CLASS(smb3_other_err_class
,
167 TP_PROTO(unsigned int xid
,
174 TP_ARGS(xid
, fid
, tid
, sesid
, offset
, len
, rc
),
176 __field(unsigned int, xid
)
179 __field(__u64
, sesid
)
180 __field(__u64
, offset
)
188 __entry
->sesid
= sesid
;
189 __entry
->offset
= offset
;
193 TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d",
194 __entry
->xid
, __entry
->sesid
, __entry
->tid
, __entry
->fid
,
195 __entry
->offset
, __entry
->len
, __entry
->rc
)
198 #define DEFINE_SMB3_OTHER_ERR_EVENT(name) \
199 DEFINE_EVENT(smb3_other_err_class, smb3_##name, \
200 TP_PROTO(unsigned int xid, \
207 TP_ARGS(xid, fid, tid, sesid, offset, len, rc))
209 DEFINE_SMB3_OTHER_ERR_EVENT(query_dir_err
);
210 DEFINE_SMB3_OTHER_ERR_EVENT(zero_err
);
211 DEFINE_SMB3_OTHER_ERR_EVENT(falloc_err
);
214 * For logging errors in reflink and copy_range ops e.g. smb2_copychunk_range
215 * and smb2_duplicate_extents
217 DECLARE_EVENT_CLASS(smb3_copy_range_err_class
,
218 TP_PROTO(unsigned int xid
,
227 TP_ARGS(xid
, src_fid
, target_fid
, tid
, sesid
, src_offset
, target_offset
, len
, rc
),
229 __field(unsigned int, xid
)
230 __field(__u64
, src_fid
)
231 __field(__u64
, target_fid
)
233 __field(__u64
, sesid
)
234 __field(__u64
, src_offset
)
235 __field(__u64
, target_offset
)
241 __entry
->src_fid
= src_fid
;
242 __entry
->target_fid
= target_fid
;
244 __entry
->sesid
= sesid
;
245 __entry
->src_offset
= src_offset
;
246 __entry
->target_offset
= target_offset
;
250 TP_printk("\txid=%u sid=0x%llx tid=0x%x source fid=0x%llx source offset=0x%llx target fid=0x%llx target offset=0x%llx len=0x%x rc=%d",
251 __entry
->xid
, __entry
->sesid
, __entry
->tid
, __entry
->target_fid
,
252 __entry
->src_offset
, __entry
->target_fid
, __entry
->target_offset
, __entry
->len
, __entry
->rc
)
255 #define DEFINE_SMB3_COPY_RANGE_ERR_EVENT(name) \
256 DEFINE_EVENT(smb3_copy_range_err_class, smb3_##name, \
257 TP_PROTO(unsigned int xid, \
263 __u64 target_offset, \
266 TP_ARGS(xid, src_fid, target_fid, tid, sesid, src_offset, target_offset, len, rc))
268 DEFINE_SMB3_COPY_RANGE_ERR_EVENT(clone_err
);
269 /* TODO: Add SMB3_COPY_RANGE_ERR_EVENT(copychunk_err) */
271 DECLARE_EVENT_CLASS(smb3_copy_range_done_class
,
272 TP_PROTO(unsigned int xid
,
280 TP_ARGS(xid
, src_fid
, target_fid
, tid
, sesid
, src_offset
, target_offset
, len
),
282 __field(unsigned int, xid
)
283 __field(__u64
, src_fid
)
284 __field(__u64
, target_fid
)
286 __field(__u64
, sesid
)
287 __field(__u64
, src_offset
)
288 __field(__u64
, target_offset
)
293 __entry
->src_fid
= src_fid
;
294 __entry
->target_fid
= target_fid
;
296 __entry
->sesid
= sesid
;
297 __entry
->src_offset
= src_offset
;
298 __entry
->target_offset
= target_offset
;
301 TP_printk("\txid=%u sid=0x%llx tid=0x%x source fid=0x%llx source offset=0x%llx target fid=0x%llx target offset=0x%llx len=0x%x",
302 __entry
->xid
, __entry
->sesid
, __entry
->tid
, __entry
->target_fid
,
303 __entry
->src_offset
, __entry
->target_fid
, __entry
->target_offset
, __entry
->len
)
306 #define DEFINE_SMB3_COPY_RANGE_DONE_EVENT(name) \
307 DEFINE_EVENT(smb3_copy_range_done_class, smb3_##name, \
308 TP_PROTO(unsigned int xid, \
314 __u64 target_offset, \
316 TP_ARGS(xid, src_fid, target_fid, tid, sesid, src_offset, target_offset, len))
318 DEFINE_SMB3_COPY_RANGE_DONE_EVENT(copychunk_enter
);
319 DEFINE_SMB3_COPY_RANGE_DONE_EVENT(clone_enter
);
320 DEFINE_SMB3_COPY_RANGE_DONE_EVENT(copychunk_done
);
321 DEFINE_SMB3_COPY_RANGE_DONE_EVENT(clone_done
);
324 /* For logging successful read or write */
325 DECLARE_EVENT_CLASS(smb3_rw_done_class
,
326 TP_PROTO(unsigned int rreq_debug_id
,
327 unsigned int rreq_debug_index
,
334 TP_ARGS(rreq_debug_id
, rreq_debug_index
,
335 xid
, fid
, tid
, sesid
, offset
, len
),
337 __field(unsigned int, rreq_debug_id
)
338 __field(unsigned int, rreq_debug_index
)
339 __field(unsigned int, xid
)
342 __field(__u64
, sesid
)
343 __field(__u64
, offset
)
347 __entry
->rreq_debug_id
= rreq_debug_id
;
348 __entry
->rreq_debug_index
= rreq_debug_index
;
352 __entry
->sesid
= sesid
;
353 __entry
->offset
= offset
;
356 TP_printk("R=%08x[%x] xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x",
357 __entry
->rreq_debug_id
, __entry
->rreq_debug_index
,
358 __entry
->xid
, __entry
->sesid
, __entry
->tid
, __entry
->fid
,
359 __entry
->offset
, __entry
->len
)
362 #define DEFINE_SMB3_RW_DONE_EVENT(name) \
363 DEFINE_EVENT(smb3_rw_done_class, smb3_##name, \
364 TP_PROTO(unsigned int rreq_debug_id, \
365 unsigned int rreq_debug_index, \
372 TP_ARGS(rreq_debug_id, rreq_debug_index, xid, fid, tid, sesid, offset, len))
374 DEFINE_SMB3_RW_DONE_EVENT(read_enter
);
375 DEFINE_SMB3_RW_DONE_EVENT(read_done
);
376 DEFINE_SMB3_RW_DONE_EVENT(write_enter
);
377 DEFINE_SMB3_RW_DONE_EVENT(write_done
);
379 /* For logging successful other op */
380 DECLARE_EVENT_CLASS(smb3_other_done_class
,
381 TP_PROTO(unsigned int xid
,
387 TP_ARGS(xid
, fid
, tid
, sesid
, offset
, len
),
389 __field(unsigned int, xid
)
392 __field(__u64
, sesid
)
393 __field(__u64
, offset
)
400 __entry
->sesid
= sesid
;
401 __entry
->offset
= offset
;
404 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x",
405 __entry
->xid
, __entry
->sesid
, __entry
->tid
, __entry
->fid
,
406 __entry
->offset
, __entry
->len
)
409 #define DEFINE_SMB3_OTHER_DONE_EVENT(name) \
410 DEFINE_EVENT(smb3_other_done_class, smb3_##name, \
411 TP_PROTO(unsigned int xid, \
417 TP_ARGS(xid, fid, tid, sesid, offset, len))
419 DEFINE_SMB3_OTHER_DONE_EVENT(query_dir_enter
);
420 DEFINE_SMB3_OTHER_DONE_EVENT(zero_enter
);
421 DEFINE_SMB3_OTHER_DONE_EVENT(falloc_enter
);
422 DEFINE_SMB3_OTHER_DONE_EVENT(query_dir_done
);
423 DEFINE_SMB3_OTHER_DONE_EVENT(zero_done
);
424 DEFINE_SMB3_OTHER_DONE_EVENT(falloc_done
);
426 /* For logging successful set EOF (truncate) */
427 DECLARE_EVENT_CLASS(smb3_eof_class
,
428 TP_PROTO(unsigned int xid
,
433 TP_ARGS(xid
, fid
, tid
, sesid
, offset
),
435 __field(unsigned int, xid
)
438 __field(__u64
, sesid
)
439 __field(__u64
, offset
)
445 __entry
->sesid
= sesid
;
446 __entry
->offset
= offset
;
448 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx",
449 __entry
->xid
, __entry
->sesid
, __entry
->tid
, __entry
->fid
,
453 #define DEFINE_SMB3_EOF_EVENT(name) \
454 DEFINE_EVENT(smb3_eof_class, smb3_##name, \
455 TP_PROTO(unsigned int xid, \
460 TP_ARGS(xid, fid, tid, sesid, offset))
462 DEFINE_SMB3_EOF_EVENT(set_eof
);
465 * For handle based calls other than read and write, and get/set info
467 DECLARE_EVENT_CLASS(smb3_fd_class
,
468 TP_PROTO(unsigned int xid
,
472 TP_ARGS(xid
, fid
, tid
, sesid
),
474 __field(unsigned int, xid
)
477 __field(__u64
, sesid
)
483 __entry
->sesid
= sesid
;
485 TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx",
486 __entry
->xid
, __entry
->sesid
, __entry
->tid
, __entry
->fid
)
489 #define DEFINE_SMB3_FD_EVENT(name) \
490 DEFINE_EVENT(smb3_fd_class, smb3_##name, \
491 TP_PROTO(unsigned int xid, \
495 TP_ARGS(xid, fid, tid, sesid))
497 DEFINE_SMB3_FD_EVENT(flush_enter
);
498 DEFINE_SMB3_FD_EVENT(flush_done
);
499 DEFINE_SMB3_FD_EVENT(close_enter
);
500 DEFINE_SMB3_FD_EVENT(close_done
);
501 DEFINE_SMB3_FD_EVENT(oplock_not_found
);
503 DECLARE_EVENT_CLASS(smb3_fd_err_class
,
504 TP_PROTO(unsigned int xid
,
509 TP_ARGS(xid
, fid
, tid
, sesid
, rc
),
511 __field(unsigned int, xid
)
514 __field(__u64
, sesid
)
521 __entry
->sesid
= sesid
;
524 TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d",
525 __entry
->xid
, __entry
->sesid
, __entry
->tid
, __entry
->fid
,
529 #define DEFINE_SMB3_FD_ERR_EVENT(name) \
530 DEFINE_EVENT(smb3_fd_err_class, smb3_##name, \
531 TP_PROTO(unsigned int xid, \
536 TP_ARGS(xid, fid, tid, sesid, rc))
538 DEFINE_SMB3_FD_ERR_EVENT(flush_err
);
539 DEFINE_SMB3_FD_ERR_EVENT(lock_err
);
540 DEFINE_SMB3_FD_ERR_EVENT(close_err
);
543 * For handle based query/set info calls
545 DECLARE_EVENT_CLASS(smb3_inf_enter_class
,
546 TP_PROTO(unsigned int xid
,
552 TP_ARGS(xid
, fid
, tid
, sesid
, infclass
, type
),
554 __field(unsigned int, xid
)
557 __field(__u64
, sesid
)
558 __field(__u8
, infclass
)
565 __entry
->sesid
= sesid
;
566 __entry
->infclass
= infclass
;
567 __entry
->type
= type
;
569 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x",
570 __entry
->xid
, __entry
->sesid
, __entry
->tid
, __entry
->fid
,
571 __entry
->infclass
, __entry
->type
)
574 #define DEFINE_SMB3_INF_ENTER_EVENT(name) \
575 DEFINE_EVENT(smb3_inf_enter_class, smb3_##name, \
576 TP_PROTO(unsigned int xid, \
582 TP_ARGS(xid, fid, tid, sesid, infclass, type))
584 DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter
);
585 DEFINE_SMB3_INF_ENTER_EVENT(query_info_done
);
586 DEFINE_SMB3_INF_ENTER_EVENT(notify_enter
);
587 DEFINE_SMB3_INF_ENTER_EVENT(notify_done
);
589 DECLARE_EVENT_CLASS(smb3_inf_err_class
,
590 TP_PROTO(unsigned int xid
,
597 TP_ARGS(xid
, fid
, tid
, sesid
, infclass
, type
, rc
),
599 __field(unsigned int, xid
)
602 __field(__u64
, sesid
)
603 __field(__u8
, infclass
)
611 __entry
->sesid
= sesid
;
612 __entry
->infclass
= infclass
;
613 __entry
->type
= type
;
616 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d",
617 __entry
->xid
, __entry
->sesid
, __entry
->tid
, __entry
->fid
,
618 __entry
->infclass
, __entry
->type
, __entry
->rc
)
621 #define DEFINE_SMB3_INF_ERR_EVENT(name) \
622 DEFINE_EVENT(smb3_inf_err_class, smb3_##name, \
623 TP_PROTO(unsigned int xid, \
630 TP_ARGS(xid, fid, tid, sesid, infclass, type, rc))
632 DEFINE_SMB3_INF_ERR_EVENT(query_info_err
);
633 DEFINE_SMB3_INF_ERR_EVENT(set_info_err
);
634 DEFINE_SMB3_INF_ERR_EVENT(notify_err
);
635 DEFINE_SMB3_INF_ERR_EVENT(fsctl_err
);
637 DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class
,
638 TP_PROTO(unsigned int xid
,
641 const char *full_path
),
642 TP_ARGS(xid
, tid
, sesid
, full_path
),
644 __field(unsigned int, xid
)
646 __field(__u64
, sesid
)
647 __string(path
, full_path
)
652 __entry
->sesid
= sesid
;
655 TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s",
656 __entry
->xid
, __entry
->sesid
, __entry
->tid
,
660 #define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name) \
661 DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name, \
662 TP_PROTO(unsigned int xid, \
665 const char *full_path), \
666 TP_ARGS(xid, tid, sesid, full_path))
668 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter
);
669 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter
);
670 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter
);
671 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter
);
672 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter
);
673 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter
);
674 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter
);
675 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_reparse_compound_enter
);
676 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(get_reparse_compound_enter
);
677 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter
);
678 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter
);
679 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(tdis_enter
);
680 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mknod_enter
);
682 DECLARE_EVENT_CLASS(smb3_inf_compound_done_class
,
683 TP_PROTO(unsigned int xid
,
686 TP_ARGS(xid
, tid
, sesid
),
688 __field(unsigned int, xid
)
690 __field(__u64
, sesid
)
695 __entry
->sesid
= sesid
;
697 TP_printk("xid=%u sid=0x%llx tid=0x%x",
698 __entry
->xid
, __entry
->sesid
, __entry
->tid
)
701 #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name) \
702 DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name, \
703 TP_PROTO(unsigned int xid, \
706 TP_ARGS(xid, tid, sesid))
708 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done
);
709 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done
);
710 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done
);
711 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done
);
712 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done
);
713 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done
);
714 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done
);
715 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_reparse_compound_done
);
716 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(get_reparse_compound_done
);
717 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_wsl_ea_compound_done
);
718 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done
);
719 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done
);
720 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(tdis_done
);
721 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mknod_done
);
723 DECLARE_EVENT_CLASS(smb3_inf_compound_err_class
,
724 TP_PROTO(unsigned int xid
,
728 TP_ARGS(xid
, tid
, sesid
, rc
),
730 __field(unsigned int, xid
)
732 __field(__u64
, sesid
)
738 __entry
->sesid
= sesid
;
741 TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d",
742 __entry
->xid
, __entry
->sesid
, __entry
->tid
,
746 #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name) \
747 DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name, \
748 TP_PROTO(unsigned int xid, \
752 TP_ARGS(xid, tid, sesid, rc))
754 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err
);
755 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err
);
756 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err
);
757 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err
);
758 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err
);
759 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err
);
760 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err
);
761 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_reparse_compound_err
);
762 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(get_reparse_compound_err
);
763 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_wsl_ea_compound_err
);
764 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err
);
765 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err
);
766 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(tdis_err
);
767 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mknod_err
);
770 * For logging SMB3 Status code and Command for responses which return errors
772 DECLARE_EVENT_CLASS(smb3_cmd_err_class
,
779 TP_ARGS(tid
, sesid
, cmd
, mid
, status
, rc
),
782 __field(__u64
, sesid
)
785 __field(__u32
, status
)
790 __entry
->sesid
= sesid
;
793 __entry
->status
= status
;
796 TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d",
797 __entry
->sesid
, __entry
->tid
, __entry
->cmd
, __entry
->mid
,
798 __entry
->status
, __entry
->rc
)
801 #define DEFINE_SMB3_CMD_ERR_EVENT(name) \
802 DEFINE_EVENT(smb3_cmd_err_class, smb3_##name, \
803 TP_PROTO(__u32 tid, \
809 TP_ARGS(tid, sesid, cmd, mid, status, rc))
811 DEFINE_SMB3_CMD_ERR_EVENT(cmd_err
);
813 DECLARE_EVENT_CLASS(smb3_cmd_done_class
,
818 TP_ARGS(tid
, sesid
, cmd
, mid
),
821 __field(__u64
, sesid
)
827 __entry
->sesid
= sesid
;
831 TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu",
832 __entry
->sesid
, __entry
->tid
,
833 __entry
->cmd
, __entry
->mid
)
836 #define DEFINE_SMB3_CMD_DONE_EVENT(name) \
837 DEFINE_EVENT(smb3_cmd_done_class, smb3_##name, \
838 TP_PROTO(__u32 tid, \
842 TP_ARGS(tid, sesid, cmd, mid))
844 DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter
);
845 DEFINE_SMB3_CMD_DONE_EVENT(cmd_done
);
846 DEFINE_SMB3_CMD_DONE_EVENT(ses_expired
);
848 DECLARE_EVENT_CLASS(smb3_mid_class
,
852 unsigned long when_sent
,
853 unsigned long when_received
),
854 TP_ARGS(cmd
, mid
, pid
, when_sent
, when_received
),
859 __field(unsigned long, when_sent
)
860 __field(unsigned long, when_received
)
866 __entry
->when_sent
= when_sent
;
867 __entry
->when_received
= when_received
;
869 TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu",
870 __entry
->cmd
, __entry
->mid
, __entry
->pid
, __entry
->when_sent
,
871 __entry
->when_received
)
874 #define DEFINE_SMB3_MID_EVENT(name) \
875 DEFINE_EVENT(smb3_mid_class, smb3_##name, \
876 TP_PROTO(__u16 cmd, \
879 unsigned long when_sent, \
880 unsigned long when_received), \
881 TP_ARGS(cmd, mid, pid, when_sent, when_received))
883 DEFINE_SMB3_MID_EVENT(slow_rsp
);
885 DECLARE_EVENT_CLASS(smb3_exit_err_class
,
886 TP_PROTO(unsigned int xid
,
887 const char *func_name
,
889 TP_ARGS(xid
, func_name
, rc
),
891 __field(unsigned int, xid
)
892 __string(func_name
, func_name
)
897 __assign_str(func_name
);
900 TP_printk("\t%s: xid=%u rc=%d",
901 __get_str(func_name
), __entry
->xid
, __entry
->rc
)
904 #define DEFINE_SMB3_EXIT_ERR_EVENT(name) \
905 DEFINE_EVENT(smb3_exit_err_class, smb3_##name, \
906 TP_PROTO(unsigned int xid, \
907 const char *func_name, \
909 TP_ARGS(xid, func_name, rc))
911 DEFINE_SMB3_EXIT_ERR_EVENT(exit_err
);
914 DECLARE_EVENT_CLASS(smb3_sync_err_class
,
915 TP_PROTO(unsigned long ino
,
919 __field(unsigned long, ino
)
926 TP_printk("\tino=%lu rc=%d",
927 __entry
->ino
, __entry
->rc
)
930 #define DEFINE_SMB3_SYNC_ERR_EVENT(name) \
931 DEFINE_EVENT(smb3_sync_err_class, cifs_##name, \
932 TP_PROTO(unsigned long ino, \
936 DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err
);
937 DEFINE_SMB3_SYNC_ERR_EVENT(flush_err
);
940 DECLARE_EVENT_CLASS(smb3_enter_exit_class
,
941 TP_PROTO(unsigned int xid
,
942 const char *func_name
),
943 TP_ARGS(xid
, func_name
),
945 __field(unsigned int, xid
)
946 __string(func_name
, func_name
)
950 __assign_str(func_name
);
952 TP_printk("\t%s: xid=%u",
953 __get_str(func_name
), __entry
->xid
)
956 #define DEFINE_SMB3_ENTER_EXIT_EVENT(name) \
957 DEFINE_EVENT(smb3_enter_exit_class, smb3_##name, \
958 TP_PROTO(unsigned int xid, \
959 const char *func_name), \
960 TP_ARGS(xid, func_name))
962 DEFINE_SMB3_ENTER_EXIT_EVENT(enter
);
963 DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done
);
966 * For SMB2/SMB3 tree connect
969 DECLARE_EVENT_CLASS(smb3_tcon_class
,
970 TP_PROTO(unsigned int xid
,
973 const char *unc_name
,
975 TP_ARGS(xid
, tid
, sesid
, unc_name
, rc
),
977 __field(unsigned int, xid
)
979 __field(__u64
, sesid
)
980 __string(name
, unc_name
)
986 __entry
->sesid
= sesid
;
990 TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d",
991 __entry
->xid
, __entry
->sesid
, __entry
->tid
,
992 __get_str(name
), __entry
->rc
)
995 #define DEFINE_SMB3_TCON_EVENT(name) \
996 DEFINE_EVENT(smb3_tcon_class, smb3_##name, \
997 TP_PROTO(unsigned int xid, \
1000 const char *unc_name, \
1002 TP_ARGS(xid, tid, sesid, unc_name, rc))
1004 DEFINE_SMB3_TCON_EVENT(tcon
);
1005 DEFINE_SMB3_TCON_EVENT(qfs_done
);
1008 * For smb2/smb3 open (including create and mkdir) calls
1011 DECLARE_EVENT_CLASS(smb3_open_enter_class
,
1012 TP_PROTO(unsigned int xid
,
1015 const char *full_path
,
1017 int desired_access
),
1018 TP_ARGS(xid
, tid
, sesid
, full_path
, create_options
, desired_access
),
1020 __field(unsigned int, xid
)
1022 __field(__u64
, sesid
)
1023 __string(path
, full_path
)
1024 __field(int, create_options
)
1025 __field(int, desired_access
)
1030 __entry
->sesid
= sesid
;
1032 __entry
->create_options
= create_options
;
1033 __entry
->desired_access
= desired_access
;
1035 TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s cr_opts=0x%x des_access=0x%x",
1036 __entry
->xid
, __entry
->sesid
, __entry
->tid
, __get_str(path
),
1037 __entry
->create_options
, __entry
->desired_access
)
1040 #define DEFINE_SMB3_OPEN_ENTER_EVENT(name) \
1041 DEFINE_EVENT(smb3_open_enter_class, smb3_##name, \
1042 TP_PROTO(unsigned int xid, \
1045 const char *full_path, \
1046 int create_options, \
1047 int desired_access), \
1048 TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access))
1050 DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter
);
1051 DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter
);
1053 DECLARE_EVENT_CLASS(smb3_open_err_class
,
1054 TP_PROTO(unsigned int xid
,
1060 TP_ARGS(xid
, tid
, sesid
, create_options
, desired_access
, rc
),
1062 __field(unsigned int, xid
)
1064 __field(__u64
, sesid
)
1065 __field(int, create_options
)
1066 __field(int, desired_access
)
1072 __entry
->sesid
= sesid
;
1073 __entry
->create_options
= create_options
;
1074 __entry
->desired_access
= desired_access
;
1077 TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d",
1078 __entry
->xid
, __entry
->sesid
, __entry
->tid
,
1079 __entry
->create_options
, __entry
->desired_access
, __entry
->rc
)
1082 #define DEFINE_SMB3_OPEN_ERR_EVENT(name) \
1083 DEFINE_EVENT(smb3_open_err_class, smb3_##name, \
1084 TP_PROTO(unsigned int xid, \
1087 int create_options, \
1088 int desired_access, \
1090 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc))
1092 DEFINE_SMB3_OPEN_ERR_EVENT(open_err
);
1093 DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err
);
1095 DECLARE_EVENT_CLASS(smb3_open_done_class
,
1096 TP_PROTO(unsigned int xid
,
1101 int desired_access
),
1102 TP_ARGS(xid
, fid
, tid
, sesid
, create_options
, desired_access
),
1104 __field(unsigned int, xid
)
1107 __field(__u64
, sesid
)
1108 __field(int, create_options
)
1109 __field(int, desired_access
)
1115 __entry
->sesid
= sesid
;
1116 __entry
->create_options
= create_options
;
1117 __entry
->desired_access
= desired_access
;
1119 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x",
1120 __entry
->xid
, __entry
->sesid
, __entry
->tid
, __entry
->fid
,
1121 __entry
->create_options
, __entry
->desired_access
)
1124 #define DEFINE_SMB3_OPEN_DONE_EVENT(name) \
1125 DEFINE_EVENT(smb3_open_done_class, smb3_##name, \
1126 TP_PROTO(unsigned int xid, \
1130 int create_options, \
1131 int desired_access), \
1132 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access))
1134 DEFINE_SMB3_OPEN_DONE_EVENT(open_done
);
1135 DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done
);
1138 DECLARE_EVENT_CLASS(smb3_lease_done_class
,
1139 TP_PROTO(__u32 lease_state
,
1142 __u64 lease_key_low
,
1143 __u64 lease_key_high
),
1144 TP_ARGS(lease_state
, tid
, sesid
, lease_key_low
, lease_key_high
),
1146 __field(__u32
, lease_state
)
1148 __field(__u64
, sesid
)
1149 __field(__u64
, lease_key_low
)
1150 __field(__u64
, lease_key_high
)
1153 __entry
->lease_state
= lease_state
;
1155 __entry
->sesid
= sesid
;
1156 __entry
->lease_key_low
= lease_key_low
;
1157 __entry
->lease_key_high
= lease_key_high
;
1159 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x",
1160 __entry
->sesid
, __entry
->tid
, __entry
->lease_key_high
,
1161 __entry
->lease_key_low
, __entry
->lease_state
)
1164 #define DEFINE_SMB3_LEASE_DONE_EVENT(name) \
1165 DEFINE_EVENT(smb3_lease_done_class, smb3_##name, \
1166 TP_PROTO(__u32 lease_state, \
1169 __u64 lease_key_low, \
1170 __u64 lease_key_high), \
1171 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high))
1173 DEFINE_SMB3_LEASE_DONE_EVENT(lease_done
);
1174 DEFINE_SMB3_LEASE_DONE_EVENT(lease_not_found
);
1176 DECLARE_EVENT_CLASS(smb3_lease_err_class
,
1177 TP_PROTO(__u32 lease_state
,
1180 __u64 lease_key_low
,
1181 __u64 lease_key_high
,
1183 TP_ARGS(lease_state
, tid
, sesid
, lease_key_low
, lease_key_high
, rc
),
1185 __field(__u32
, lease_state
)
1187 __field(__u64
, sesid
)
1188 __field(__u64
, lease_key_low
)
1189 __field(__u64
, lease_key_high
)
1193 __entry
->lease_state
= lease_state
;
1195 __entry
->sesid
= sesid
;
1196 __entry
->lease_key_low
= lease_key_low
;
1197 __entry
->lease_key_high
= lease_key_high
;
1200 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d",
1201 __entry
->sesid
, __entry
->tid
, __entry
->lease_key_high
,
1202 __entry
->lease_key_low
, __entry
->lease_state
, __entry
->rc
)
1205 #define DEFINE_SMB3_LEASE_ERR_EVENT(name) \
1206 DEFINE_EVENT(smb3_lease_err_class, smb3_##name, \
1207 TP_PROTO(__u32 lease_state, \
1210 __u64 lease_key_low, \
1211 __u64 lease_key_high, \
1213 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc))
1215 DEFINE_SMB3_LEASE_ERR_EVENT(lease_err
);
1217 DECLARE_EVENT_CLASS(smb3_connect_class
,
1218 TP_PROTO(char *hostname
,
1220 const struct __kernel_sockaddr_storage
*dst_addr
),
1221 TP_ARGS(hostname
, conn_id
, dst_addr
),
1223 __string(hostname
, hostname
)
1224 __field(__u64
, conn_id
)
1225 __array(__u8
, dst_addr
, sizeof(struct sockaddr_storage
))
1228 struct sockaddr_storage
*pss
= NULL
;
1230 __entry
->conn_id
= conn_id
;
1231 pss
= (struct sockaddr_storage
*)__entry
->dst_addr
;
1233 __assign_str(hostname
);
1235 TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc",
1237 __get_str(hostname
),
1241 #define DEFINE_SMB3_CONNECT_EVENT(name) \
1242 DEFINE_EVENT(smb3_connect_class, smb3_##name, \
1243 TP_PROTO(char *hostname, \
1245 const struct __kernel_sockaddr_storage *addr), \
1246 TP_ARGS(hostname, conn_id, addr))
1248 DEFINE_SMB3_CONNECT_EVENT(connect_done
);
1249 DEFINE_SMB3_CONNECT_EVENT(smbd_connect_done
);
1250 DEFINE_SMB3_CONNECT_EVENT(smbd_connect_err
);
1252 DECLARE_EVENT_CLASS(smb3_connect_err_class
,
1253 TP_PROTO(char *hostname
, __u64 conn_id
,
1254 const struct __kernel_sockaddr_storage
*dst_addr
, int rc
),
1255 TP_ARGS(hostname
, conn_id
, dst_addr
, rc
),
1257 __string(hostname
, hostname
)
1258 __field(__u64
, conn_id
)
1259 __array(__u8
, dst_addr
, sizeof(struct sockaddr_storage
))
1263 struct sockaddr_storage
*pss
= NULL
;
1265 __entry
->conn_id
= conn_id
;
1267 pss
= (struct sockaddr_storage
*)__entry
->dst_addr
;
1269 __assign_str(hostname
);
1271 TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc",
1274 __get_str(hostname
),
1278 #define DEFINE_SMB3_CONNECT_ERR_EVENT(name) \
1279 DEFINE_EVENT(smb3_connect_err_class, smb3_##name, \
1280 TP_PROTO(char *hostname, \
1282 const struct __kernel_sockaddr_storage *addr, \
1284 TP_ARGS(hostname, conn_id, addr, rc))
1286 DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err
);
1288 DECLARE_EVENT_CLASS(smb3_sess_setup_err_class
,
1289 TP_PROTO(char *hostname
, char *username
, __u64 conn_id
,
1290 const struct __kernel_sockaddr_storage
*dst_addr
, int rc
),
1291 TP_ARGS(hostname
, username
, conn_id
, dst_addr
, rc
),
1293 __string(hostname
, hostname
)
1294 __string(username
, username
)
1295 __field(__u64
, conn_id
)
1296 __array(__u8
, dst_addr
, sizeof(struct sockaddr_storage
))
1300 struct sockaddr_storage
*pss
= NULL
;
1302 __entry
->conn_id
= conn_id
;
1304 pss
= (struct sockaddr_storage
*)__entry
->dst_addr
;
1306 __assign_str(hostname
);
1307 __assign_str(username
);
1309 TP_printk("rc=%d user=%s conn_id=0x%llx server=%s addr=%pISpsfc",
1311 __get_str(username
),
1313 __get_str(hostname
),
1317 #define DEFINE_SMB3_SES_SETUP_ERR_EVENT(name) \
1318 DEFINE_EVENT(smb3_sess_setup_err_class, smb3_##name, \
1319 TP_PROTO(char *hostname, \
1322 const struct __kernel_sockaddr_storage *addr, \
1324 TP_ARGS(hostname, username, conn_id, addr, rc))
1326 DEFINE_SMB3_SES_SETUP_ERR_EVENT(key_expired
);
1328 DECLARE_EVENT_CLASS(smb3_reconnect_class
,
1329 TP_PROTO(__u64 currmid
,
1332 TP_ARGS(currmid
, conn_id
, hostname
),
1334 __field(__u64
, currmid
)
1335 __field(__u64
, conn_id
)
1336 __string(hostname
, hostname
)
1339 __entry
->currmid
= currmid
;
1340 __entry
->conn_id
= conn_id
;
1341 __assign_str(hostname
);
1343 TP_printk("conn_id=0x%llx server=%s current_mid=%llu",
1345 __get_str(hostname
),
1349 #define DEFINE_SMB3_RECONNECT_EVENT(name) \
1350 DEFINE_EVENT(smb3_reconnect_class, smb3_##name, \
1351 TP_PROTO(__u64 currmid, \
1354 TP_ARGS(currmid, conn_id, hostname))
1356 DEFINE_SMB3_RECONNECT_EVENT(reconnect
);
1357 DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect
);
1359 DECLARE_EVENT_CLASS(smb3_ses_class
,
1360 TP_PROTO(__u64 sesid
),
1363 __field(__u64
, sesid
)
1366 __entry
->sesid
= sesid
;
1368 TP_printk("sid=0x%llx",
1372 #define DEFINE_SMB3_SES_EVENT(name) \
1373 DEFINE_EVENT(smb3_ses_class, smb3_##name, \
1374 TP_PROTO(__u64 sesid), \
1377 DEFINE_SMB3_SES_EVENT(ses_not_found
);
1379 DECLARE_EVENT_CLASS(smb3_ioctl_class
,
1380 TP_PROTO(unsigned int xid
,
1382 unsigned int command
),
1383 TP_ARGS(xid
, fid
, command
),
1385 __field(unsigned int, xid
)
1387 __field(unsigned int, command
)
1392 __entry
->command
= command
;
1394 TP_printk("xid=%u fid=0x%llx ioctl cmd=0x%x",
1395 __entry
->xid
, __entry
->fid
, __entry
->command
)
1398 #define DEFINE_SMB3_IOCTL_EVENT(name) \
1399 DEFINE_EVENT(smb3_ioctl_class, smb3_##name, \
1400 TP_PROTO(unsigned int xid, \
1402 unsigned int command), \
1403 TP_ARGS(xid, fid, command))
1405 DEFINE_SMB3_IOCTL_EVENT(ioctl
);
1407 DECLARE_EVENT_CLASS(smb3_shutdown_class
,
1408 TP_PROTO(__u32 flags
,
1410 TP_ARGS(flags
, tid
),
1412 __field(__u32
, flags
)
1416 __entry
->flags
= flags
;
1419 TP_printk("flags=0x%x tid=0x%x",
1420 __entry
->flags
, __entry
->tid
)
1423 #define DEFINE_SMB3_SHUTDOWN_EVENT(name) \
1424 DEFINE_EVENT(smb3_shutdown_class, smb3_##name, \
1425 TP_PROTO(__u32 flags, \
1427 TP_ARGS(flags, tid))
1429 DEFINE_SMB3_SHUTDOWN_EVENT(shutdown_enter
);
1430 DEFINE_SMB3_SHUTDOWN_EVENT(shutdown_done
);
1432 DECLARE_EVENT_CLASS(smb3_shutdown_err_class
,
1436 TP_ARGS(rc
, flags
, tid
),
1439 __field(__u32
, flags
)
1444 __entry
->flags
= flags
;
1447 TP_printk("rc=%d flags=0x%x tid=0x%x",
1448 __entry
->rc
, __entry
->flags
, __entry
->tid
)
1451 #define DEFINE_SMB3_SHUTDOWN_ERR_EVENT(name) \
1452 DEFINE_EVENT(smb3_shutdown_err_class, smb3_##name, \
1456 TP_ARGS(rc, flags, tid))
1458 DEFINE_SMB3_SHUTDOWN_ERR_EVENT(shutdown_err
);
1460 DECLARE_EVENT_CLASS(smb3_credit_class
,
1461 TP_PROTO(__u64 currmid
,
1467 TP_ARGS(currmid
, conn_id
, hostname
, credits
, credits_to_add
, in_flight
),
1469 __field(__u64
, currmid
)
1470 __field(__u64
, conn_id
)
1471 __string(hostname
, hostname
)
1472 __field(int, credits
)
1473 __field(int, credits_to_add
)
1474 __field(int, in_flight
)
1477 __entry
->currmid
= currmid
;
1478 __entry
->conn_id
= conn_id
;
1479 __assign_str(hostname
);
1480 __entry
->credits
= credits
;
1481 __entry
->credits_to_add
= credits_to_add
;
1482 __entry
->in_flight
= in_flight
;
1484 TP_printk("conn_id=0x%llx server=%s current_mid=%llu "
1485 "credits=%d credit_change=%d in_flight=%d",
1487 __get_str(hostname
),
1490 __entry
->credits_to_add
,
1494 #define DEFINE_SMB3_CREDIT_EVENT(name) \
1495 DEFINE_EVENT(smb3_credit_class, smb3_##name, \
1496 TP_PROTO(__u64 currmid, \
1500 int credits_to_add, \
1502 TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight))
1504 DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits
);
1505 DEFINE_SMB3_CREDIT_EVENT(reconnect_detected
);
1506 DEFINE_SMB3_CREDIT_EVENT(credit_timeout
);
1507 DEFINE_SMB3_CREDIT_EVENT(insufficient_credits
);
1508 DEFINE_SMB3_CREDIT_EVENT(too_many_credits
);
1509 DEFINE_SMB3_CREDIT_EVENT(add_credits
);
1510 DEFINE_SMB3_CREDIT_EVENT(adj_credits
);
1511 DEFINE_SMB3_CREDIT_EVENT(hdr_credits
);
1512 DEFINE_SMB3_CREDIT_EVENT(nblk_credits
);
1513 DEFINE_SMB3_CREDIT_EVENT(pend_credits
);
1514 DEFINE_SMB3_CREDIT_EVENT(wait_credits
);
1515 DEFINE_SMB3_CREDIT_EVENT(waitff_credits
);
1516 DEFINE_SMB3_CREDIT_EVENT(overflow_credits
);
1517 DEFINE_SMB3_CREDIT_EVENT(set_credits
);
1520 TRACE_EVENT(smb3_tcon_ref
,
1521 TP_PROTO(unsigned int tcon_debug_id
, int ref
,
1522 enum smb3_tcon_ref_trace trace
),
1523 TP_ARGS(tcon_debug_id
, ref
, trace
),
1525 __field(unsigned int, tcon
)
1527 __field(enum smb3_tcon_ref_trace
, trace
)
1530 __entry
->tcon
= tcon_debug_id
;
1532 __entry
->trace
= trace
;
1534 TP_printk("TC=%08x %s r=%u",
1536 __print_symbolic(__entry
->trace
, smb3_tcon_ref_traces
),
1540 TRACE_EVENT(smb3_rw_credits
,
1541 TP_PROTO(unsigned int rreq_debug_id
,
1542 unsigned int subreq_debug_index
,
1543 unsigned int subreq_credits
,
1544 unsigned int server_credits
,
1545 int server_in_flight
,
1547 enum smb3_rw_credits_trace trace
),
1548 TP_ARGS(rreq_debug_id
, subreq_debug_index
, subreq_credits
,
1549 server_credits
, server_in_flight
, credit_change
, trace
),
1551 __field(unsigned int, rreq_debug_id
)
1552 __field(unsigned int, subreq_debug_index
)
1553 __field(unsigned int, subreq_credits
)
1554 __field(unsigned int, server_credits
)
1555 __field(int, in_flight
)
1556 __field(int, credit_change
)
1557 __field(enum smb3_rw_credits_trace
, trace
)
1560 __entry
->rreq_debug_id
= rreq_debug_id
;
1561 __entry
->subreq_debug_index
= subreq_debug_index
;
1562 __entry
->subreq_credits
= subreq_credits
;
1563 __entry
->server_credits
= server_credits
;
1564 __entry
->in_flight
= server_in_flight
;
1565 __entry
->credit_change
= credit_change
;
1566 __entry
->trace
= trace
;
1568 TP_printk("R=%08x[%x] %s cred=%u chg=%d pool=%u ifl=%d",
1569 __entry
->rreq_debug_id
, __entry
->subreq_debug_index
,
1570 __print_symbolic(__entry
->trace
, smb3_rw_credits_traces
),
1571 __entry
->subreq_credits
, __entry
->credit_change
,
1572 __entry
->server_credits
, __entry
->in_flight
)
1578 #endif /* _CIFS_TRACE_H */
1580 #undef TRACE_INCLUDE_PATH
1581 #define TRACE_INCLUDE_PATH .
1582 #define TRACE_INCLUDE_FILE trace
1583 #include <trace/define_trace.h>