138c8a9a5SSteve French /* SPDX-License-Identifier: GPL-2.0 */ 238c8a9a5SSteve French /* 338c8a9a5SSteve French * Copyright (C) 2018, Microsoft Corporation. 438c8a9a5SSteve French * 538c8a9a5SSteve French * Author(s): Steve French <stfrench@microsoft.com> 607e76ea1SDavid Howells * 707e76ea1SDavid Howells * Please use this 3-part article as a reference for writing new tracepoints: 807e76ea1SDavid Howells * https://lwn.net/Articles/379903/ 938c8a9a5SSteve French */ 1038c8a9a5SSteve French #undef TRACE_SYSTEM 1138c8a9a5SSteve French #define TRACE_SYSTEM cifs 1238c8a9a5SSteve French 1338c8a9a5SSteve French #if !defined(_CIFS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 1438c8a9a5SSteve French #define _CIFS_TRACE_H 1538c8a9a5SSteve French 1638c8a9a5SSteve French #include <linux/tracepoint.h> 1738c8a9a5SSteve French #include <linux/net.h> 1838c8a9a5SSteve French #include <linux/inet.h> 1938c8a9a5SSteve French 2038c8a9a5SSteve French /* 2107e76ea1SDavid Howells * Specify enums for tracing information. 2238c8a9a5SSteve French */ 2307e76ea1SDavid Howells #define smb3_tcon_ref_traces \ 2407e76ea1SDavid Howells EM(netfs_trace_tcon_ref_dec_dfs_refer, "DEC DfsRef") \ 2507e76ea1SDavid Howells EM(netfs_trace_tcon_ref_free, "FRE ") \ 2607e76ea1SDavid Howells EM(netfs_trace_tcon_ref_free_fail, "FRE Fail ") \ 2707e76ea1SDavid Howells EM(netfs_trace_tcon_ref_free_ipc, "FRE Ipc ") \ 2807e76ea1SDavid Howells EM(netfs_trace_tcon_ref_free_ipc_fail, "FRE Ipc-F ") \ 2907e76ea1SDavid Howells EM(netfs_trace_tcon_ref_free_reconnect_server, "FRE Reconn") \ 3007e76ea1SDavid Howells EM(netfs_trace_tcon_ref_get_cancelled_close, "GET Cn-Cls") \ 3107e76ea1SDavid Howells EM(netfs_trace_tcon_ref_get_dfs_refer, "GET DfsRef") \ 3207e76ea1SDavid Howells EM(netfs_trace_tcon_ref_get_find, "GET Find ") \ 3307e76ea1SDavid Howells EM(netfs_trace_tcon_ref_get_find_sess_tcon, "GET FndSes") \ 3407e76ea1SDavid Howells EM(netfs_trace_tcon_ref_get_reconnect_server, "GET Reconn") \ 3507e76ea1SDavid Howells EM(netfs_trace_tcon_ref_new, "NEW ") \ 3607e76ea1SDavid Howells EM(netfs_trace_tcon_ref_new_ipc, "NEW Ipc ") \ 3707e76ea1SDavid Howells EM(netfs_trace_tcon_ref_new_reconnect_server, "NEW Reconn") \ 3807e76ea1SDavid Howells EM(netfs_trace_tcon_ref_put_cancelled_close, "PUT Cn-Cls") \ 3907e76ea1SDavid Howells EM(netfs_trace_tcon_ref_put_cancelled_close_fid, "PUT Cn-Fid") \ 4007e76ea1SDavid Howells EM(netfs_trace_tcon_ref_put_cancelled_mid, "PUT Cn-Mid") \ 4107e76ea1SDavid Howells EM(netfs_trace_tcon_ref_put_mnt_ctx, "PUT MntCtx") \ 4207e76ea1SDavid Howells EM(netfs_trace_tcon_ref_put_reconnect_server, "PUT Reconn") \ 4307e76ea1SDavid Howells EM(netfs_trace_tcon_ref_put_tlink, "PUT Tlink ") \ 4407e76ea1SDavid Howells EM(netfs_trace_tcon_ref_see_cancelled_close, "SEE Cn-Cls") \ 4507e76ea1SDavid Howells EM(netfs_trace_tcon_ref_see_fscache_collision, "SEE FV-CO!") \ 4607e76ea1SDavid Howells EM(netfs_trace_tcon_ref_see_fscache_okay, "SEE FV-Ok ") \ 4707e76ea1SDavid Howells EM(netfs_trace_tcon_ref_see_fscache_relinq, "SEE FV-Rlq") \ 4807e76ea1SDavid Howells E_(netfs_trace_tcon_ref_see_umount, "SEE Umount") 4907e76ea1SDavid Howells 5007e76ea1SDavid Howells #undef EM 5107e76ea1SDavid Howells #undef E_ 5207e76ea1SDavid Howells 5307e76ea1SDavid Howells /* 5407e76ea1SDavid Howells * Define those tracing enums. 5507e76ea1SDavid Howells */ 5607e76ea1SDavid Howells #ifndef __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY 5707e76ea1SDavid Howells #define __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY 5807e76ea1SDavid Howells 5907e76ea1SDavid Howells #define EM(a, b) a, 6007e76ea1SDavid Howells #define E_(a, b) a 6107e76ea1SDavid Howells 6207e76ea1SDavid Howells enum smb3_tcon_ref_trace { smb3_tcon_ref_traces } __mode(byte); 6307e76ea1SDavid Howells 6407e76ea1SDavid Howells #undef EM 6507e76ea1SDavid Howells #undef E_ 6607e76ea1SDavid Howells #endif 6707e76ea1SDavid Howells 6807e76ea1SDavid Howells /* 6907e76ea1SDavid Howells * Export enum symbols via userspace. 7007e76ea1SDavid Howells */ 7107e76ea1SDavid Howells #define EM(a, b) TRACE_DEFINE_ENUM(a); 7207e76ea1SDavid Howells #define E_(a, b) TRACE_DEFINE_ENUM(a); 7307e76ea1SDavid Howells 7407e76ea1SDavid Howells smb3_tcon_ref_traces; 7507e76ea1SDavid Howells 7607e76ea1SDavid Howells #undef EM 7707e76ea1SDavid Howells #undef E_ 7807e76ea1SDavid Howells 7907e76ea1SDavid Howells /* 8007e76ea1SDavid Howells * Now redefine the EM() and E_() macros to map the enums to the strings that 8107e76ea1SDavid Howells * will be printed in the output. 8207e76ea1SDavid Howells */ 8307e76ea1SDavid Howells #define EM(a, b) { a, b }, 8407e76ea1SDavid Howells #define E_(a, b) { a, b } 8538c8a9a5SSteve French 8638c8a9a5SSteve French /* For logging errors in read or write */ 8738c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_rw_err_class, 8838c8a9a5SSteve French TP_PROTO(unsigned int xid, 8938c8a9a5SSteve French __u64 fid, 9038c8a9a5SSteve French __u32 tid, 9138c8a9a5SSteve French __u64 sesid, 9238c8a9a5SSteve French __u64 offset, 9338c8a9a5SSteve French __u32 len, 9438c8a9a5SSteve French int rc), 9538c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, offset, len, rc), 9638c8a9a5SSteve French TP_STRUCT__entry( 9738c8a9a5SSteve French __field(unsigned int, xid) 9838c8a9a5SSteve French __field(__u64, fid) 9938c8a9a5SSteve French __field(__u32, tid) 10038c8a9a5SSteve French __field(__u64, sesid) 10138c8a9a5SSteve French __field(__u64, offset) 10238c8a9a5SSteve French __field(__u32, len) 10338c8a9a5SSteve French __field(int, rc) 10438c8a9a5SSteve French ), 10538c8a9a5SSteve French TP_fast_assign( 10638c8a9a5SSteve French __entry->xid = xid; 10738c8a9a5SSteve French __entry->fid = fid; 10838c8a9a5SSteve French __entry->tid = tid; 10938c8a9a5SSteve French __entry->sesid = sesid; 11038c8a9a5SSteve French __entry->offset = offset; 11138c8a9a5SSteve French __entry->len = len; 11238c8a9a5SSteve French __entry->rc = rc; 11338c8a9a5SSteve French ), 11438c8a9a5SSteve French TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d", 11538c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 11638c8a9a5SSteve French __entry->offset, __entry->len, __entry->rc) 11738c8a9a5SSteve French ) 11838c8a9a5SSteve French 11938c8a9a5SSteve French #define DEFINE_SMB3_RW_ERR_EVENT(name) \ 12038c8a9a5SSteve French DEFINE_EVENT(smb3_rw_err_class, smb3_##name, \ 12138c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 12238c8a9a5SSteve French __u64 fid, \ 12338c8a9a5SSteve French __u32 tid, \ 12438c8a9a5SSteve French __u64 sesid, \ 12538c8a9a5SSteve French __u64 offset, \ 12638c8a9a5SSteve French __u32 len, \ 12738c8a9a5SSteve French int rc), \ 12838c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, offset, len, rc)) 12938c8a9a5SSteve French 13038c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(write_err); 13138c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(read_err); 13238c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(query_dir_err); 13338c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(zero_err); 13438c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(falloc_err); 13538c8a9a5SSteve French 13638c8a9a5SSteve French 13738c8a9a5SSteve French /* For logging successful read or write */ 13838c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_rw_done_class, 13938c8a9a5SSteve French TP_PROTO(unsigned int xid, 14038c8a9a5SSteve French __u64 fid, 14138c8a9a5SSteve French __u32 tid, 14238c8a9a5SSteve French __u64 sesid, 14338c8a9a5SSteve French __u64 offset, 14438c8a9a5SSteve French __u32 len), 14538c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, offset, len), 14638c8a9a5SSteve French TP_STRUCT__entry( 14738c8a9a5SSteve French __field(unsigned int, xid) 14838c8a9a5SSteve French __field(__u64, fid) 14938c8a9a5SSteve French __field(__u32, tid) 15038c8a9a5SSteve French __field(__u64, sesid) 15138c8a9a5SSteve French __field(__u64, offset) 15238c8a9a5SSteve French __field(__u32, len) 15338c8a9a5SSteve French ), 15438c8a9a5SSteve French TP_fast_assign( 15538c8a9a5SSteve French __entry->xid = xid; 15638c8a9a5SSteve French __entry->fid = fid; 15738c8a9a5SSteve French __entry->tid = tid; 15838c8a9a5SSteve French __entry->sesid = sesid; 15938c8a9a5SSteve French __entry->offset = offset; 16038c8a9a5SSteve French __entry->len = len; 16138c8a9a5SSteve French ), 16238c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x", 16338c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 16438c8a9a5SSteve French __entry->offset, __entry->len) 16538c8a9a5SSteve French ) 16638c8a9a5SSteve French 16738c8a9a5SSteve French #define DEFINE_SMB3_RW_DONE_EVENT(name) \ 16838c8a9a5SSteve French DEFINE_EVENT(smb3_rw_done_class, smb3_##name, \ 16938c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 17038c8a9a5SSteve French __u64 fid, \ 17138c8a9a5SSteve French __u32 tid, \ 17238c8a9a5SSteve French __u64 sesid, \ 17338c8a9a5SSteve French __u64 offset, \ 17438c8a9a5SSteve French __u32 len), \ 17538c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, offset, len)) 17638c8a9a5SSteve French 17738c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(write_enter); 17838c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(read_enter); 17938c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(query_dir_enter); 18038c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(zero_enter); 18138c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(falloc_enter); 18238c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(write_done); 18338c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(read_done); 18438c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(query_dir_done); 18538c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(zero_done); 18638c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(falloc_done); 18738c8a9a5SSteve French 18838c8a9a5SSteve French /* For logging successful set EOF (truncate) */ 18938c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_eof_class, 19038c8a9a5SSteve French TP_PROTO(unsigned int xid, 19138c8a9a5SSteve French __u64 fid, 19238c8a9a5SSteve French __u32 tid, 19338c8a9a5SSteve French __u64 sesid, 19438c8a9a5SSteve French __u64 offset), 19538c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, offset), 19638c8a9a5SSteve French TP_STRUCT__entry( 19738c8a9a5SSteve French __field(unsigned int, xid) 19838c8a9a5SSteve French __field(__u64, fid) 19938c8a9a5SSteve French __field(__u32, tid) 20038c8a9a5SSteve French __field(__u64, sesid) 20138c8a9a5SSteve French __field(__u64, offset) 20238c8a9a5SSteve French ), 20338c8a9a5SSteve French TP_fast_assign( 20438c8a9a5SSteve French __entry->xid = xid; 20538c8a9a5SSteve French __entry->fid = fid; 20638c8a9a5SSteve French __entry->tid = tid; 20738c8a9a5SSteve French __entry->sesid = sesid; 20838c8a9a5SSteve French __entry->offset = offset; 20938c8a9a5SSteve French ), 21038c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx", 21138c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 21238c8a9a5SSteve French __entry->offset) 21338c8a9a5SSteve French ) 21438c8a9a5SSteve French 21538c8a9a5SSteve French #define DEFINE_SMB3_EOF_EVENT(name) \ 21638c8a9a5SSteve French DEFINE_EVENT(smb3_eof_class, smb3_##name, \ 21738c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 21838c8a9a5SSteve French __u64 fid, \ 21938c8a9a5SSteve French __u32 tid, \ 22038c8a9a5SSteve French __u64 sesid, \ 22138c8a9a5SSteve French __u64 offset), \ 22238c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, offset)) 22338c8a9a5SSteve French 22438c8a9a5SSteve French DEFINE_SMB3_EOF_EVENT(set_eof); 22538c8a9a5SSteve French 22638c8a9a5SSteve French /* 22738c8a9a5SSteve French * For handle based calls other than read and write, and get/set info 22838c8a9a5SSteve French */ 22938c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_fd_class, 23038c8a9a5SSteve French TP_PROTO(unsigned int xid, 23138c8a9a5SSteve French __u64 fid, 23238c8a9a5SSteve French __u32 tid, 23338c8a9a5SSteve French __u64 sesid), 23438c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid), 23538c8a9a5SSteve French TP_STRUCT__entry( 23638c8a9a5SSteve French __field(unsigned int, xid) 23738c8a9a5SSteve French __field(__u64, fid) 23838c8a9a5SSteve French __field(__u32, tid) 23938c8a9a5SSteve French __field(__u64, sesid) 24038c8a9a5SSteve French ), 24138c8a9a5SSteve French TP_fast_assign( 24238c8a9a5SSteve French __entry->xid = xid; 24338c8a9a5SSteve French __entry->fid = fid; 24438c8a9a5SSteve French __entry->tid = tid; 24538c8a9a5SSteve French __entry->sesid = sesid; 24638c8a9a5SSteve French ), 24738c8a9a5SSteve French TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx", 24838c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __entry->fid) 24938c8a9a5SSteve French ) 25038c8a9a5SSteve French 25138c8a9a5SSteve French #define DEFINE_SMB3_FD_EVENT(name) \ 25238c8a9a5SSteve French DEFINE_EVENT(smb3_fd_class, smb3_##name, \ 25338c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 25438c8a9a5SSteve French __u64 fid, \ 25538c8a9a5SSteve French __u32 tid, \ 25638c8a9a5SSteve French __u64 sesid), \ 25738c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid)) 25838c8a9a5SSteve French 25938c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(flush_enter); 26038c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(flush_done); 26138c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(close_enter); 26238c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(close_done); 26338c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(oplock_not_found); 26438c8a9a5SSteve French 26538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_fd_err_class, 26638c8a9a5SSteve French TP_PROTO(unsigned int xid, 26738c8a9a5SSteve French __u64 fid, 26838c8a9a5SSteve French __u32 tid, 26938c8a9a5SSteve French __u64 sesid, 27038c8a9a5SSteve French int rc), 27138c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, rc), 27238c8a9a5SSteve French TP_STRUCT__entry( 27338c8a9a5SSteve French __field(unsigned int, xid) 27438c8a9a5SSteve French __field(__u64, fid) 27538c8a9a5SSteve French __field(__u32, tid) 27638c8a9a5SSteve French __field(__u64, sesid) 27738c8a9a5SSteve French __field(int, rc) 27838c8a9a5SSteve French ), 27938c8a9a5SSteve French TP_fast_assign( 28038c8a9a5SSteve French __entry->xid = xid; 28138c8a9a5SSteve French __entry->fid = fid; 28238c8a9a5SSteve French __entry->tid = tid; 28338c8a9a5SSteve French __entry->sesid = sesid; 28438c8a9a5SSteve French __entry->rc = rc; 28538c8a9a5SSteve French ), 28638c8a9a5SSteve French TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d", 28738c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 28838c8a9a5SSteve French __entry->rc) 28938c8a9a5SSteve French ) 29038c8a9a5SSteve French 29138c8a9a5SSteve French #define DEFINE_SMB3_FD_ERR_EVENT(name) \ 29238c8a9a5SSteve French DEFINE_EVENT(smb3_fd_err_class, smb3_##name, \ 29338c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 29438c8a9a5SSteve French __u64 fid, \ 29538c8a9a5SSteve French __u32 tid, \ 29638c8a9a5SSteve French __u64 sesid, \ 29738c8a9a5SSteve French int rc), \ 29838c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, rc)) 29938c8a9a5SSteve French 30038c8a9a5SSteve French DEFINE_SMB3_FD_ERR_EVENT(flush_err); 30138c8a9a5SSteve French DEFINE_SMB3_FD_ERR_EVENT(lock_err); 30238c8a9a5SSteve French DEFINE_SMB3_FD_ERR_EVENT(close_err); 30338c8a9a5SSteve French 30438c8a9a5SSteve French /* 30538c8a9a5SSteve French * For handle based query/set info calls 30638c8a9a5SSteve French */ 30738c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_enter_class, 30838c8a9a5SSteve French TP_PROTO(unsigned int xid, 30938c8a9a5SSteve French __u64 fid, 31038c8a9a5SSteve French __u32 tid, 31138c8a9a5SSteve French __u64 sesid, 31238c8a9a5SSteve French __u8 infclass, 31338c8a9a5SSteve French __u32 type), 31438c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, infclass, type), 31538c8a9a5SSteve French TP_STRUCT__entry( 31638c8a9a5SSteve French __field(unsigned int, xid) 31738c8a9a5SSteve French __field(__u64, fid) 31838c8a9a5SSteve French __field(__u32, tid) 31938c8a9a5SSteve French __field(__u64, sesid) 32038c8a9a5SSteve French __field(__u8, infclass) 32138c8a9a5SSteve French __field(__u32, type) 32238c8a9a5SSteve French ), 32338c8a9a5SSteve French TP_fast_assign( 32438c8a9a5SSteve French __entry->xid = xid; 32538c8a9a5SSteve French __entry->fid = fid; 32638c8a9a5SSteve French __entry->tid = tid; 32738c8a9a5SSteve French __entry->sesid = sesid; 32838c8a9a5SSteve French __entry->infclass = infclass; 32938c8a9a5SSteve French __entry->type = type; 33038c8a9a5SSteve French ), 33138c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x", 33238c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 33338c8a9a5SSteve French __entry->infclass, __entry->type) 33438c8a9a5SSteve French ) 33538c8a9a5SSteve French 33638c8a9a5SSteve French #define DEFINE_SMB3_INF_ENTER_EVENT(name) \ 33738c8a9a5SSteve French DEFINE_EVENT(smb3_inf_enter_class, smb3_##name, \ 33838c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 33938c8a9a5SSteve French __u64 fid, \ 34038c8a9a5SSteve French __u32 tid, \ 34138c8a9a5SSteve French __u64 sesid, \ 34238c8a9a5SSteve French __u8 infclass, \ 34338c8a9a5SSteve French __u32 type), \ 34438c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, infclass, type)) 34538c8a9a5SSteve French 34638c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter); 34738c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(query_info_done); 34838c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(notify_enter); 34938c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(notify_done); 35038c8a9a5SSteve French 35138c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_err_class, 35238c8a9a5SSteve French TP_PROTO(unsigned int xid, 35338c8a9a5SSteve French __u64 fid, 35438c8a9a5SSteve French __u32 tid, 35538c8a9a5SSteve French __u64 sesid, 35638c8a9a5SSteve French __u8 infclass, 35738c8a9a5SSteve French __u32 type, 35838c8a9a5SSteve French int rc), 35938c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, infclass, type, rc), 36038c8a9a5SSteve French TP_STRUCT__entry( 36138c8a9a5SSteve French __field(unsigned int, xid) 36238c8a9a5SSteve French __field(__u64, fid) 36338c8a9a5SSteve French __field(__u32, tid) 36438c8a9a5SSteve French __field(__u64, sesid) 36538c8a9a5SSteve French __field(__u8, infclass) 36638c8a9a5SSteve French __field(__u32, type) 36738c8a9a5SSteve French __field(int, rc) 36838c8a9a5SSteve French ), 36938c8a9a5SSteve French TP_fast_assign( 37038c8a9a5SSteve French __entry->xid = xid; 37138c8a9a5SSteve French __entry->fid = fid; 37238c8a9a5SSteve French __entry->tid = tid; 37338c8a9a5SSteve French __entry->sesid = sesid; 37438c8a9a5SSteve French __entry->infclass = infclass; 37538c8a9a5SSteve French __entry->type = type; 37638c8a9a5SSteve French __entry->rc = rc; 37738c8a9a5SSteve French ), 37838c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d", 37938c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 38038c8a9a5SSteve French __entry->infclass, __entry->type, __entry->rc) 38138c8a9a5SSteve French ) 38238c8a9a5SSteve French 38338c8a9a5SSteve French #define DEFINE_SMB3_INF_ERR_EVENT(name) \ 38438c8a9a5SSteve French DEFINE_EVENT(smb3_inf_err_class, smb3_##name, \ 38538c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 38638c8a9a5SSteve French __u64 fid, \ 38738c8a9a5SSteve French __u32 tid, \ 38838c8a9a5SSteve French __u64 sesid, \ 38938c8a9a5SSteve French __u8 infclass, \ 39038c8a9a5SSteve French __u32 type, \ 39138c8a9a5SSteve French int rc), \ 39238c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, infclass, type, rc)) 39338c8a9a5SSteve French 39438c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(query_info_err); 39538c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(set_info_err); 39638c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(notify_err); 39738c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(fsctl_err); 39838c8a9a5SSteve French 39938c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class, 40038c8a9a5SSteve French TP_PROTO(unsigned int xid, 40138c8a9a5SSteve French __u32 tid, 40238c8a9a5SSteve French __u64 sesid, 40338c8a9a5SSteve French const char *full_path), 40438c8a9a5SSteve French TP_ARGS(xid, tid, sesid, full_path), 40538c8a9a5SSteve French TP_STRUCT__entry( 40638c8a9a5SSteve French __field(unsigned int, xid) 40738c8a9a5SSteve French __field(__u32, tid) 40838c8a9a5SSteve French __field(__u64, sesid) 40938c8a9a5SSteve French __string(path, full_path) 41038c8a9a5SSteve French ), 41138c8a9a5SSteve French TP_fast_assign( 41238c8a9a5SSteve French __entry->xid = xid; 41338c8a9a5SSteve French __entry->tid = tid; 41438c8a9a5SSteve French __entry->sesid = sesid; 41538c8a9a5SSteve French __assign_str(path, full_path); 41638c8a9a5SSteve French ), 41738c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s", 41838c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, 41938c8a9a5SSteve French __get_str(path)) 42038c8a9a5SSteve French ) 42138c8a9a5SSteve French 42238c8a9a5SSteve French #define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name) \ 42338c8a9a5SSteve French DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name, \ 42438c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 42538c8a9a5SSteve French __u32 tid, \ 42638c8a9a5SSteve French __u64 sesid, \ 42738c8a9a5SSteve French const char *full_path), \ 42838c8a9a5SSteve French TP_ARGS(xid, tid, sesid, full_path)) 42938c8a9a5SSteve French 43038c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter); 43138c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter); 43238c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter); 43338c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter); 43438c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter); 43538c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter); 43638c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter); 43702bcf865SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_reparse_compound_enter); 438a158bb66SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(get_reparse_compound_enter); 43938c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter); 44038c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter); 44138c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(tdis_enter); 442dbd2df36SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mknod_enter); 44338c8a9a5SSteve French 44438c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_compound_done_class, 44538c8a9a5SSteve French TP_PROTO(unsigned int xid, 44638c8a9a5SSteve French __u32 tid, 44738c8a9a5SSteve French __u64 sesid), 44838c8a9a5SSteve French TP_ARGS(xid, tid, sesid), 44938c8a9a5SSteve French TP_STRUCT__entry( 45038c8a9a5SSteve French __field(unsigned int, xid) 45138c8a9a5SSteve French __field(__u32, tid) 45238c8a9a5SSteve French __field(__u64, sesid) 45338c8a9a5SSteve French ), 45438c8a9a5SSteve French TP_fast_assign( 45538c8a9a5SSteve French __entry->xid = xid; 45638c8a9a5SSteve French __entry->tid = tid; 45738c8a9a5SSteve French __entry->sesid = sesid; 45838c8a9a5SSteve French ), 45938c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x", 46038c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid) 46138c8a9a5SSteve French ) 46238c8a9a5SSteve French 46338c8a9a5SSteve French #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name) \ 46438c8a9a5SSteve French DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name, \ 46538c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 46638c8a9a5SSteve French __u32 tid, \ 46738c8a9a5SSteve French __u64 sesid), \ 46838c8a9a5SSteve French TP_ARGS(xid, tid, sesid)) 46938c8a9a5SSteve French 47038c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done); 47138c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done); 47238c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done); 47338c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done); 47438c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done); 47538c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done); 47638c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done); 47702bcf865SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_reparse_compound_done); 478a158bb66SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(get_reparse_compound_done); 4797449d736SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_wsl_ea_compound_done); 48038c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done); 48138c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done); 48238c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(tdis_done); 483dbd2df36SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mknod_done); 48438c8a9a5SSteve French 48538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_compound_err_class, 48638c8a9a5SSteve French TP_PROTO(unsigned int xid, 48738c8a9a5SSteve French __u32 tid, 48838c8a9a5SSteve French __u64 sesid, 48938c8a9a5SSteve French int rc), 49038c8a9a5SSteve French TP_ARGS(xid, tid, sesid, rc), 49138c8a9a5SSteve French TP_STRUCT__entry( 49238c8a9a5SSteve French __field(unsigned int, xid) 49338c8a9a5SSteve French __field(__u32, tid) 49438c8a9a5SSteve French __field(__u64, sesid) 49538c8a9a5SSteve French __field(int, rc) 49638c8a9a5SSteve French ), 49738c8a9a5SSteve French TP_fast_assign( 49838c8a9a5SSteve French __entry->xid = xid; 49938c8a9a5SSteve French __entry->tid = tid; 50038c8a9a5SSteve French __entry->sesid = sesid; 50138c8a9a5SSteve French __entry->rc = rc; 50238c8a9a5SSteve French ), 50338c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d", 50438c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, 50538c8a9a5SSteve French __entry->rc) 50638c8a9a5SSteve French ) 50738c8a9a5SSteve French 50838c8a9a5SSteve French #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name) \ 50938c8a9a5SSteve French DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name, \ 51038c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 51138c8a9a5SSteve French __u32 tid, \ 51238c8a9a5SSteve French __u64 sesid, \ 51338c8a9a5SSteve French int rc), \ 51438c8a9a5SSteve French TP_ARGS(xid, tid, sesid, rc)) 51538c8a9a5SSteve French 51638c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err); 51738c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err); 51838c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err); 51938c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err); 52038c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err); 52138c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err); 52238c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err); 52302bcf865SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_reparse_compound_err); 524a158bb66SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(get_reparse_compound_err); 5257449d736SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_wsl_ea_compound_err); 52638c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err); 52738c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err); 52838c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(tdis_err); 529dbd2df36SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mknod_err); 53038c8a9a5SSteve French 53138c8a9a5SSteve French /* 53238c8a9a5SSteve French * For logging SMB3 Status code and Command for responses which return errors 53338c8a9a5SSteve French */ 53438c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_cmd_err_class, 53538c8a9a5SSteve French TP_PROTO(__u32 tid, 53638c8a9a5SSteve French __u64 sesid, 53738c8a9a5SSteve French __u16 cmd, 53838c8a9a5SSteve French __u64 mid, 53938c8a9a5SSteve French __u32 status, 54038c8a9a5SSteve French int rc), 54138c8a9a5SSteve French TP_ARGS(tid, sesid, cmd, mid, status, rc), 54238c8a9a5SSteve French TP_STRUCT__entry( 54338c8a9a5SSteve French __field(__u32, tid) 54438c8a9a5SSteve French __field(__u64, sesid) 54538c8a9a5SSteve French __field(__u16, cmd) 54638c8a9a5SSteve French __field(__u64, mid) 54738c8a9a5SSteve French __field(__u32, status) 54838c8a9a5SSteve French __field(int, rc) 54938c8a9a5SSteve French ), 55038c8a9a5SSteve French TP_fast_assign( 55138c8a9a5SSteve French __entry->tid = tid; 55238c8a9a5SSteve French __entry->sesid = sesid; 55338c8a9a5SSteve French __entry->cmd = cmd; 55438c8a9a5SSteve French __entry->mid = mid; 55538c8a9a5SSteve French __entry->status = status; 55638c8a9a5SSteve French __entry->rc = rc; 55738c8a9a5SSteve French ), 55838c8a9a5SSteve French TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d", 55938c8a9a5SSteve French __entry->sesid, __entry->tid, __entry->cmd, __entry->mid, 56038c8a9a5SSteve French __entry->status, __entry->rc) 56138c8a9a5SSteve French ) 56238c8a9a5SSteve French 56338c8a9a5SSteve French #define DEFINE_SMB3_CMD_ERR_EVENT(name) \ 56438c8a9a5SSteve French DEFINE_EVENT(smb3_cmd_err_class, smb3_##name, \ 56538c8a9a5SSteve French TP_PROTO(__u32 tid, \ 56638c8a9a5SSteve French __u64 sesid, \ 56738c8a9a5SSteve French __u16 cmd, \ 56838c8a9a5SSteve French __u64 mid, \ 56938c8a9a5SSteve French __u32 status, \ 57038c8a9a5SSteve French int rc), \ 57138c8a9a5SSteve French TP_ARGS(tid, sesid, cmd, mid, status, rc)) 57238c8a9a5SSteve French 57338c8a9a5SSteve French DEFINE_SMB3_CMD_ERR_EVENT(cmd_err); 57438c8a9a5SSteve French 57538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_cmd_done_class, 57638c8a9a5SSteve French TP_PROTO(__u32 tid, 57738c8a9a5SSteve French __u64 sesid, 57838c8a9a5SSteve French __u16 cmd, 57938c8a9a5SSteve French __u64 mid), 58038c8a9a5SSteve French TP_ARGS(tid, sesid, cmd, mid), 58138c8a9a5SSteve French TP_STRUCT__entry( 58238c8a9a5SSteve French __field(__u32, tid) 58338c8a9a5SSteve French __field(__u64, sesid) 58438c8a9a5SSteve French __field(__u16, cmd) 58538c8a9a5SSteve French __field(__u64, mid) 58638c8a9a5SSteve French ), 58738c8a9a5SSteve French TP_fast_assign( 58838c8a9a5SSteve French __entry->tid = tid; 58938c8a9a5SSteve French __entry->sesid = sesid; 59038c8a9a5SSteve French __entry->cmd = cmd; 59138c8a9a5SSteve French __entry->mid = mid; 59238c8a9a5SSteve French ), 59338c8a9a5SSteve French TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu", 59438c8a9a5SSteve French __entry->sesid, __entry->tid, 59538c8a9a5SSteve French __entry->cmd, __entry->mid) 59638c8a9a5SSteve French ) 59738c8a9a5SSteve French 59838c8a9a5SSteve French #define DEFINE_SMB3_CMD_DONE_EVENT(name) \ 59938c8a9a5SSteve French DEFINE_EVENT(smb3_cmd_done_class, smb3_##name, \ 60038c8a9a5SSteve French TP_PROTO(__u32 tid, \ 60138c8a9a5SSteve French __u64 sesid, \ 60238c8a9a5SSteve French __u16 cmd, \ 60338c8a9a5SSteve French __u64 mid), \ 60438c8a9a5SSteve French TP_ARGS(tid, sesid, cmd, mid)) 60538c8a9a5SSteve French 60638c8a9a5SSteve French DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter); 60738c8a9a5SSteve French DEFINE_SMB3_CMD_DONE_EVENT(cmd_done); 60838c8a9a5SSteve French DEFINE_SMB3_CMD_DONE_EVENT(ses_expired); 60938c8a9a5SSteve French 61038c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_mid_class, 61138c8a9a5SSteve French TP_PROTO(__u16 cmd, 61238c8a9a5SSteve French __u64 mid, 61338c8a9a5SSteve French __u32 pid, 61438c8a9a5SSteve French unsigned long when_sent, 61538c8a9a5SSteve French unsigned long when_received), 61638c8a9a5SSteve French TP_ARGS(cmd, mid, pid, when_sent, when_received), 61738c8a9a5SSteve French TP_STRUCT__entry( 61838c8a9a5SSteve French __field(__u16, cmd) 61938c8a9a5SSteve French __field(__u64, mid) 62038c8a9a5SSteve French __field(__u32, pid) 62138c8a9a5SSteve French __field(unsigned long, when_sent) 62238c8a9a5SSteve French __field(unsigned long, when_received) 62338c8a9a5SSteve French ), 62438c8a9a5SSteve French TP_fast_assign( 62538c8a9a5SSteve French __entry->cmd = cmd; 62638c8a9a5SSteve French __entry->mid = mid; 62738c8a9a5SSteve French __entry->pid = pid; 62838c8a9a5SSteve French __entry->when_sent = when_sent; 62938c8a9a5SSteve French __entry->when_received = when_received; 63038c8a9a5SSteve French ), 63138c8a9a5SSteve French TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu", 63238c8a9a5SSteve French __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent, 63338c8a9a5SSteve French __entry->when_received) 63438c8a9a5SSteve French ) 63538c8a9a5SSteve French 63638c8a9a5SSteve French #define DEFINE_SMB3_MID_EVENT(name) \ 63738c8a9a5SSteve French DEFINE_EVENT(smb3_mid_class, smb3_##name, \ 63838c8a9a5SSteve French TP_PROTO(__u16 cmd, \ 63938c8a9a5SSteve French __u64 mid, \ 64038c8a9a5SSteve French __u32 pid, \ 64138c8a9a5SSteve French unsigned long when_sent, \ 64238c8a9a5SSteve French unsigned long when_received), \ 64338c8a9a5SSteve French TP_ARGS(cmd, mid, pid, when_sent, when_received)) 64438c8a9a5SSteve French 64538c8a9a5SSteve French DEFINE_SMB3_MID_EVENT(slow_rsp); 64638c8a9a5SSteve French 64738c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_exit_err_class, 64838c8a9a5SSteve French TP_PROTO(unsigned int xid, 64938c8a9a5SSteve French const char *func_name, 65038c8a9a5SSteve French int rc), 65138c8a9a5SSteve French TP_ARGS(xid, func_name, rc), 65238c8a9a5SSteve French TP_STRUCT__entry( 65338c8a9a5SSteve French __field(unsigned int, xid) 65438c8a9a5SSteve French __string(func_name, func_name) 65538c8a9a5SSteve French __field(int, rc) 65638c8a9a5SSteve French ), 65738c8a9a5SSteve French TP_fast_assign( 65838c8a9a5SSteve French __entry->xid = xid; 65938c8a9a5SSteve French __assign_str(func_name, func_name); 66038c8a9a5SSteve French __entry->rc = rc; 66138c8a9a5SSteve French ), 66238c8a9a5SSteve French TP_printk("\t%s: xid=%u rc=%d", 66338c8a9a5SSteve French __get_str(func_name), __entry->xid, __entry->rc) 66438c8a9a5SSteve French ) 66538c8a9a5SSteve French 66638c8a9a5SSteve French #define DEFINE_SMB3_EXIT_ERR_EVENT(name) \ 66738c8a9a5SSteve French DEFINE_EVENT(smb3_exit_err_class, smb3_##name, \ 66838c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 66938c8a9a5SSteve French const char *func_name, \ 67038c8a9a5SSteve French int rc), \ 67138c8a9a5SSteve French TP_ARGS(xid, func_name, rc)) 67238c8a9a5SSteve French 67338c8a9a5SSteve French DEFINE_SMB3_EXIT_ERR_EVENT(exit_err); 67438c8a9a5SSteve French 67538c8a9a5SSteve French 67638c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_sync_err_class, 67738c8a9a5SSteve French TP_PROTO(unsigned long ino, 67838c8a9a5SSteve French int rc), 67938c8a9a5SSteve French TP_ARGS(ino, rc), 68038c8a9a5SSteve French TP_STRUCT__entry( 68138c8a9a5SSteve French __field(unsigned long, ino) 68238c8a9a5SSteve French __field(int, rc) 68338c8a9a5SSteve French ), 68438c8a9a5SSteve French TP_fast_assign( 68538c8a9a5SSteve French __entry->ino = ino; 68638c8a9a5SSteve French __entry->rc = rc; 68738c8a9a5SSteve French ), 68838c8a9a5SSteve French TP_printk("\tino=%lu rc=%d", 68938c8a9a5SSteve French __entry->ino, __entry->rc) 69038c8a9a5SSteve French ) 69138c8a9a5SSteve French 69238c8a9a5SSteve French #define DEFINE_SMB3_SYNC_ERR_EVENT(name) \ 69338c8a9a5SSteve French DEFINE_EVENT(smb3_sync_err_class, cifs_##name, \ 69438c8a9a5SSteve French TP_PROTO(unsigned long ino, \ 69538c8a9a5SSteve French int rc), \ 69638c8a9a5SSteve French TP_ARGS(ino, rc)) 69738c8a9a5SSteve French 69838c8a9a5SSteve French DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err); 69938c8a9a5SSteve French DEFINE_SMB3_SYNC_ERR_EVENT(flush_err); 70038c8a9a5SSteve French 70138c8a9a5SSteve French 70238c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_enter_exit_class, 70338c8a9a5SSteve French TP_PROTO(unsigned int xid, 70438c8a9a5SSteve French const char *func_name), 70538c8a9a5SSteve French TP_ARGS(xid, func_name), 70638c8a9a5SSteve French TP_STRUCT__entry( 70738c8a9a5SSteve French __field(unsigned int, xid) 70838c8a9a5SSteve French __string(func_name, func_name) 70938c8a9a5SSteve French ), 71038c8a9a5SSteve French TP_fast_assign( 71138c8a9a5SSteve French __entry->xid = xid; 71238c8a9a5SSteve French __assign_str(func_name, func_name); 71338c8a9a5SSteve French ), 71438c8a9a5SSteve French TP_printk("\t%s: xid=%u", 71538c8a9a5SSteve French __get_str(func_name), __entry->xid) 71638c8a9a5SSteve French ) 71738c8a9a5SSteve French 71838c8a9a5SSteve French #define DEFINE_SMB3_ENTER_EXIT_EVENT(name) \ 71938c8a9a5SSteve French DEFINE_EVENT(smb3_enter_exit_class, smb3_##name, \ 72038c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 72138c8a9a5SSteve French const char *func_name), \ 72238c8a9a5SSteve French TP_ARGS(xid, func_name)) 72338c8a9a5SSteve French 72438c8a9a5SSteve French DEFINE_SMB3_ENTER_EXIT_EVENT(enter); 72538c8a9a5SSteve French DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done); 72638c8a9a5SSteve French 72738c8a9a5SSteve French /* 72838c8a9a5SSteve French * For SMB2/SMB3 tree connect 72938c8a9a5SSteve French */ 73038c8a9a5SSteve French 73138c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_tcon_class, 73238c8a9a5SSteve French TP_PROTO(unsigned int xid, 73338c8a9a5SSteve French __u32 tid, 73438c8a9a5SSteve French __u64 sesid, 73538c8a9a5SSteve French const char *unc_name, 73638c8a9a5SSteve French int rc), 73738c8a9a5SSteve French TP_ARGS(xid, tid, sesid, unc_name, rc), 73838c8a9a5SSteve French TP_STRUCT__entry( 73938c8a9a5SSteve French __field(unsigned int, xid) 74038c8a9a5SSteve French __field(__u32, tid) 74138c8a9a5SSteve French __field(__u64, sesid) 74238c8a9a5SSteve French __string(name, unc_name) 74338c8a9a5SSteve French __field(int, rc) 74438c8a9a5SSteve French ), 74538c8a9a5SSteve French TP_fast_assign( 74638c8a9a5SSteve French __entry->xid = xid; 74738c8a9a5SSteve French __entry->tid = tid; 74838c8a9a5SSteve French __entry->sesid = sesid; 74938c8a9a5SSteve French __assign_str(name, unc_name); 75038c8a9a5SSteve French __entry->rc = rc; 75138c8a9a5SSteve French ), 75238c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d", 75338c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, 75438c8a9a5SSteve French __get_str(name), __entry->rc) 75538c8a9a5SSteve French ) 75638c8a9a5SSteve French 75738c8a9a5SSteve French #define DEFINE_SMB3_TCON_EVENT(name) \ 75838c8a9a5SSteve French DEFINE_EVENT(smb3_tcon_class, smb3_##name, \ 75938c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 76038c8a9a5SSteve French __u32 tid, \ 76138c8a9a5SSteve French __u64 sesid, \ 76238c8a9a5SSteve French const char *unc_name, \ 76338c8a9a5SSteve French int rc), \ 76438c8a9a5SSteve French TP_ARGS(xid, tid, sesid, unc_name, rc)) 76538c8a9a5SSteve French 76638c8a9a5SSteve French DEFINE_SMB3_TCON_EVENT(tcon); 767feeec636SSteve French DEFINE_SMB3_TCON_EVENT(qfs_done); 76838c8a9a5SSteve French 76938c8a9a5SSteve French /* 77038c8a9a5SSteve French * For smb2/smb3 open (including create and mkdir) calls 77138c8a9a5SSteve French */ 77238c8a9a5SSteve French 77338c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_open_enter_class, 77438c8a9a5SSteve French TP_PROTO(unsigned int xid, 77538c8a9a5SSteve French __u32 tid, 77638c8a9a5SSteve French __u64 sesid, 77738c8a9a5SSteve French const char *full_path, 77838c8a9a5SSteve French int create_options, 77938c8a9a5SSteve French int desired_access), 78038c8a9a5SSteve French TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access), 78138c8a9a5SSteve French TP_STRUCT__entry( 78238c8a9a5SSteve French __field(unsigned int, xid) 78338c8a9a5SSteve French __field(__u32, tid) 78438c8a9a5SSteve French __field(__u64, sesid) 78538c8a9a5SSteve French __string(path, full_path) 78638c8a9a5SSteve French __field(int, create_options) 78738c8a9a5SSteve French __field(int, desired_access) 78838c8a9a5SSteve French ), 78938c8a9a5SSteve French TP_fast_assign( 79038c8a9a5SSteve French __entry->xid = xid; 79138c8a9a5SSteve French __entry->tid = tid; 79238c8a9a5SSteve French __entry->sesid = sesid; 79338c8a9a5SSteve French __assign_str(path, full_path); 79438c8a9a5SSteve French __entry->create_options = create_options; 79538c8a9a5SSteve French __entry->desired_access = desired_access; 79638c8a9a5SSteve French ), 79738c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s cr_opts=0x%x des_access=0x%x", 79838c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __get_str(path), 79938c8a9a5SSteve French __entry->create_options, __entry->desired_access) 80038c8a9a5SSteve French ) 80138c8a9a5SSteve French 80238c8a9a5SSteve French #define DEFINE_SMB3_OPEN_ENTER_EVENT(name) \ 80338c8a9a5SSteve French DEFINE_EVENT(smb3_open_enter_class, smb3_##name, \ 80438c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 80538c8a9a5SSteve French __u32 tid, \ 80638c8a9a5SSteve French __u64 sesid, \ 80738c8a9a5SSteve French const char *full_path, \ 80838c8a9a5SSteve French int create_options, \ 80938c8a9a5SSteve French int desired_access), \ 81038c8a9a5SSteve French TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access)) 81138c8a9a5SSteve French 81238c8a9a5SSteve French DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter); 81338c8a9a5SSteve French DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter); 81438c8a9a5SSteve French 81538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_open_err_class, 81638c8a9a5SSteve French TP_PROTO(unsigned int xid, 81738c8a9a5SSteve French __u32 tid, 81838c8a9a5SSteve French __u64 sesid, 81938c8a9a5SSteve French int create_options, 82038c8a9a5SSteve French int desired_access, 82138c8a9a5SSteve French int rc), 82238c8a9a5SSteve French TP_ARGS(xid, tid, sesid, create_options, desired_access, rc), 82338c8a9a5SSteve French TP_STRUCT__entry( 82438c8a9a5SSteve French __field(unsigned int, xid) 82538c8a9a5SSteve French __field(__u32, tid) 82638c8a9a5SSteve French __field(__u64, sesid) 82738c8a9a5SSteve French __field(int, create_options) 82838c8a9a5SSteve French __field(int, desired_access) 82938c8a9a5SSteve French __field(int, rc) 83038c8a9a5SSteve French ), 83138c8a9a5SSteve French TP_fast_assign( 83238c8a9a5SSteve French __entry->xid = xid; 83338c8a9a5SSteve French __entry->tid = tid; 83438c8a9a5SSteve French __entry->sesid = sesid; 83538c8a9a5SSteve French __entry->create_options = create_options; 83638c8a9a5SSteve French __entry->desired_access = desired_access; 83738c8a9a5SSteve French __entry->rc = rc; 83838c8a9a5SSteve French ), 83938c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d", 84038c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, 84138c8a9a5SSteve French __entry->create_options, __entry->desired_access, __entry->rc) 84238c8a9a5SSteve French ) 84338c8a9a5SSteve French 84438c8a9a5SSteve French #define DEFINE_SMB3_OPEN_ERR_EVENT(name) \ 84538c8a9a5SSteve French DEFINE_EVENT(smb3_open_err_class, smb3_##name, \ 84638c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 84738c8a9a5SSteve French __u32 tid, \ 84838c8a9a5SSteve French __u64 sesid, \ 84938c8a9a5SSteve French int create_options, \ 85038c8a9a5SSteve French int desired_access, \ 85138c8a9a5SSteve French int rc), \ 85238c8a9a5SSteve French TP_ARGS(xid, tid, sesid, create_options, desired_access, rc)) 85338c8a9a5SSteve French 85438c8a9a5SSteve French DEFINE_SMB3_OPEN_ERR_EVENT(open_err); 85538c8a9a5SSteve French DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err); 85638c8a9a5SSteve French 85738c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_open_done_class, 85838c8a9a5SSteve French TP_PROTO(unsigned int xid, 85938c8a9a5SSteve French __u64 fid, 86038c8a9a5SSteve French __u32 tid, 86138c8a9a5SSteve French __u64 sesid, 86238c8a9a5SSteve French int create_options, 86338c8a9a5SSteve French int desired_access), 86438c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, create_options, desired_access), 86538c8a9a5SSteve French TP_STRUCT__entry( 86638c8a9a5SSteve French __field(unsigned int, xid) 86738c8a9a5SSteve French __field(__u64, fid) 86838c8a9a5SSteve French __field(__u32, tid) 86938c8a9a5SSteve French __field(__u64, sesid) 87038c8a9a5SSteve French __field(int, create_options) 87138c8a9a5SSteve French __field(int, desired_access) 87238c8a9a5SSteve French ), 87338c8a9a5SSteve French TP_fast_assign( 87438c8a9a5SSteve French __entry->xid = xid; 87538c8a9a5SSteve French __entry->fid = fid; 87638c8a9a5SSteve French __entry->tid = tid; 87738c8a9a5SSteve French __entry->sesid = sesid; 87838c8a9a5SSteve French __entry->create_options = create_options; 87938c8a9a5SSteve French __entry->desired_access = desired_access; 88038c8a9a5SSteve French ), 88138c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x", 88238c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 88338c8a9a5SSteve French __entry->create_options, __entry->desired_access) 88438c8a9a5SSteve French ) 88538c8a9a5SSteve French 88638c8a9a5SSteve French #define DEFINE_SMB3_OPEN_DONE_EVENT(name) \ 88738c8a9a5SSteve French DEFINE_EVENT(smb3_open_done_class, smb3_##name, \ 88838c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 88938c8a9a5SSteve French __u64 fid, \ 89038c8a9a5SSteve French __u32 tid, \ 89138c8a9a5SSteve French __u64 sesid, \ 89238c8a9a5SSteve French int create_options, \ 89338c8a9a5SSteve French int desired_access), \ 89438c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, create_options, desired_access)) 89538c8a9a5SSteve French 89638c8a9a5SSteve French DEFINE_SMB3_OPEN_DONE_EVENT(open_done); 89738c8a9a5SSteve French DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done); 89838c8a9a5SSteve French 89938c8a9a5SSteve French 90038c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_lease_done_class, 90138c8a9a5SSteve French TP_PROTO(__u32 lease_state, 90238c8a9a5SSteve French __u32 tid, 90338c8a9a5SSteve French __u64 sesid, 90438c8a9a5SSteve French __u64 lease_key_low, 90538c8a9a5SSteve French __u64 lease_key_high), 90638c8a9a5SSteve French TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high), 90738c8a9a5SSteve French TP_STRUCT__entry( 90838c8a9a5SSteve French __field(__u32, lease_state) 90938c8a9a5SSteve French __field(__u32, tid) 91038c8a9a5SSteve French __field(__u64, sesid) 91138c8a9a5SSteve French __field(__u64, lease_key_low) 91238c8a9a5SSteve French __field(__u64, lease_key_high) 91338c8a9a5SSteve French ), 91438c8a9a5SSteve French TP_fast_assign( 91538c8a9a5SSteve French __entry->lease_state = lease_state; 91638c8a9a5SSteve French __entry->tid = tid; 91738c8a9a5SSteve French __entry->sesid = sesid; 91838c8a9a5SSteve French __entry->lease_key_low = lease_key_low; 91938c8a9a5SSteve French __entry->lease_key_high = lease_key_high; 92038c8a9a5SSteve French ), 92138c8a9a5SSteve French TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x", 92238c8a9a5SSteve French __entry->sesid, __entry->tid, __entry->lease_key_high, 92338c8a9a5SSteve French __entry->lease_key_low, __entry->lease_state) 92438c8a9a5SSteve French ) 92538c8a9a5SSteve French 92638c8a9a5SSteve French #define DEFINE_SMB3_LEASE_DONE_EVENT(name) \ 92738c8a9a5SSteve French DEFINE_EVENT(smb3_lease_done_class, smb3_##name, \ 92838c8a9a5SSteve French TP_PROTO(__u32 lease_state, \ 92938c8a9a5SSteve French __u32 tid, \ 93038c8a9a5SSteve French __u64 sesid, \ 93138c8a9a5SSteve French __u64 lease_key_low, \ 93238c8a9a5SSteve French __u64 lease_key_high), \ 93338c8a9a5SSteve French TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high)) 93438c8a9a5SSteve French 93538c8a9a5SSteve French DEFINE_SMB3_LEASE_DONE_EVENT(lease_done); 93638c8a9a5SSteve French DEFINE_SMB3_LEASE_DONE_EVENT(lease_not_found); 93738c8a9a5SSteve French 93838c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_lease_err_class, 93938c8a9a5SSteve French TP_PROTO(__u32 lease_state, 94038c8a9a5SSteve French __u32 tid, 94138c8a9a5SSteve French __u64 sesid, 94238c8a9a5SSteve French __u64 lease_key_low, 94338c8a9a5SSteve French __u64 lease_key_high, 94438c8a9a5SSteve French int rc), 94538c8a9a5SSteve French TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc), 94638c8a9a5SSteve French TP_STRUCT__entry( 94738c8a9a5SSteve French __field(__u32, lease_state) 94838c8a9a5SSteve French __field(__u32, tid) 94938c8a9a5SSteve French __field(__u64, sesid) 95038c8a9a5SSteve French __field(__u64, lease_key_low) 95138c8a9a5SSteve French __field(__u64, lease_key_high) 95238c8a9a5SSteve French __field(int, rc) 95338c8a9a5SSteve French ), 95438c8a9a5SSteve French TP_fast_assign( 95538c8a9a5SSteve French __entry->lease_state = lease_state; 95638c8a9a5SSteve French __entry->tid = tid; 95738c8a9a5SSteve French __entry->sesid = sesid; 95838c8a9a5SSteve French __entry->lease_key_low = lease_key_low; 95938c8a9a5SSteve French __entry->lease_key_high = lease_key_high; 96038c8a9a5SSteve French __entry->rc = rc; 96138c8a9a5SSteve French ), 96238c8a9a5SSteve French TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d", 96338c8a9a5SSteve French __entry->sesid, __entry->tid, __entry->lease_key_high, 96438c8a9a5SSteve French __entry->lease_key_low, __entry->lease_state, __entry->rc) 96538c8a9a5SSteve French ) 96638c8a9a5SSteve French 96738c8a9a5SSteve French #define DEFINE_SMB3_LEASE_ERR_EVENT(name) \ 96838c8a9a5SSteve French DEFINE_EVENT(smb3_lease_err_class, smb3_##name, \ 96938c8a9a5SSteve French TP_PROTO(__u32 lease_state, \ 97038c8a9a5SSteve French __u32 tid, \ 97138c8a9a5SSteve French __u64 sesid, \ 97238c8a9a5SSteve French __u64 lease_key_low, \ 97338c8a9a5SSteve French __u64 lease_key_high, \ 97438c8a9a5SSteve French int rc), \ 97538c8a9a5SSteve French TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc)) 97638c8a9a5SSteve French 97738c8a9a5SSteve French DEFINE_SMB3_LEASE_ERR_EVENT(lease_err); 97838c8a9a5SSteve French 97938c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_connect_class, 98038c8a9a5SSteve French TP_PROTO(char *hostname, 98138c8a9a5SSteve French __u64 conn_id, 98238c8a9a5SSteve French const struct __kernel_sockaddr_storage *dst_addr), 98338c8a9a5SSteve French TP_ARGS(hostname, conn_id, dst_addr), 98438c8a9a5SSteve French TP_STRUCT__entry( 98538c8a9a5SSteve French __string(hostname, hostname) 98638c8a9a5SSteve French __field(__u64, conn_id) 98738c8a9a5SSteve French __array(__u8, dst_addr, sizeof(struct sockaddr_storage)) 98838c8a9a5SSteve French ), 98938c8a9a5SSteve French TP_fast_assign( 99038c8a9a5SSteve French struct sockaddr_storage *pss = NULL; 99138c8a9a5SSteve French 99238c8a9a5SSteve French __entry->conn_id = conn_id; 99338c8a9a5SSteve French pss = (struct sockaddr_storage *)__entry->dst_addr; 99438c8a9a5SSteve French *pss = *dst_addr; 99538c8a9a5SSteve French __assign_str(hostname, hostname); 99638c8a9a5SSteve French ), 99738c8a9a5SSteve French TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc", 99838c8a9a5SSteve French __entry->conn_id, 99938c8a9a5SSteve French __get_str(hostname), 100038c8a9a5SSteve French __entry->dst_addr) 100138c8a9a5SSteve French ) 100238c8a9a5SSteve French 100338c8a9a5SSteve French #define DEFINE_SMB3_CONNECT_EVENT(name) \ 100438c8a9a5SSteve French DEFINE_EVENT(smb3_connect_class, smb3_##name, \ 100538c8a9a5SSteve French TP_PROTO(char *hostname, \ 100638c8a9a5SSteve French __u64 conn_id, \ 100738c8a9a5SSteve French const struct __kernel_sockaddr_storage *addr), \ 100838c8a9a5SSteve French TP_ARGS(hostname, conn_id, addr)) 100938c8a9a5SSteve French 101038c8a9a5SSteve French DEFINE_SMB3_CONNECT_EVENT(connect_done); 1011e3603ccfSSteve French DEFINE_SMB3_CONNECT_EVENT(smbd_connect_done); 1012e3603ccfSSteve French DEFINE_SMB3_CONNECT_EVENT(smbd_connect_err); 101338c8a9a5SSteve French 101438c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_connect_err_class, 101538c8a9a5SSteve French TP_PROTO(char *hostname, __u64 conn_id, 101638c8a9a5SSteve French const struct __kernel_sockaddr_storage *dst_addr, int rc), 101738c8a9a5SSteve French TP_ARGS(hostname, conn_id, dst_addr, rc), 101838c8a9a5SSteve French TP_STRUCT__entry( 101938c8a9a5SSteve French __string(hostname, hostname) 102038c8a9a5SSteve French __field(__u64, conn_id) 102138c8a9a5SSteve French __array(__u8, dst_addr, sizeof(struct sockaddr_storage)) 102238c8a9a5SSteve French __field(int, rc) 102338c8a9a5SSteve French ), 102438c8a9a5SSteve French TP_fast_assign( 102538c8a9a5SSteve French struct sockaddr_storage *pss = NULL; 102638c8a9a5SSteve French 102738c8a9a5SSteve French __entry->conn_id = conn_id; 102838c8a9a5SSteve French __entry->rc = rc; 102938c8a9a5SSteve French pss = (struct sockaddr_storage *)__entry->dst_addr; 103038c8a9a5SSteve French *pss = *dst_addr; 103138c8a9a5SSteve French __assign_str(hostname, hostname); 103238c8a9a5SSteve French ), 103338c8a9a5SSteve French TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc", 103438c8a9a5SSteve French __entry->rc, 103538c8a9a5SSteve French __entry->conn_id, 103638c8a9a5SSteve French __get_str(hostname), 103738c8a9a5SSteve French __entry->dst_addr) 103838c8a9a5SSteve French ) 103938c8a9a5SSteve French 104038c8a9a5SSteve French #define DEFINE_SMB3_CONNECT_ERR_EVENT(name) \ 104138c8a9a5SSteve French DEFINE_EVENT(smb3_connect_err_class, smb3_##name, \ 104238c8a9a5SSteve French TP_PROTO(char *hostname, \ 104338c8a9a5SSteve French __u64 conn_id, \ 104438c8a9a5SSteve French const struct __kernel_sockaddr_storage *addr, \ 104538c8a9a5SSteve French int rc), \ 104638c8a9a5SSteve French TP_ARGS(hostname, conn_id, addr, rc)) 104738c8a9a5SSteve French 104838c8a9a5SSteve French DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err); 104938c8a9a5SSteve French 105038c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_reconnect_class, 105138c8a9a5SSteve French TP_PROTO(__u64 currmid, 105238c8a9a5SSteve French __u64 conn_id, 105338c8a9a5SSteve French char *hostname), 105438c8a9a5SSteve French TP_ARGS(currmid, conn_id, hostname), 105538c8a9a5SSteve French TP_STRUCT__entry( 105638c8a9a5SSteve French __field(__u64, currmid) 105738c8a9a5SSteve French __field(__u64, conn_id) 105838c8a9a5SSteve French __string(hostname, hostname) 105938c8a9a5SSteve French ), 106038c8a9a5SSteve French TP_fast_assign( 106138c8a9a5SSteve French __entry->currmid = currmid; 106238c8a9a5SSteve French __entry->conn_id = conn_id; 106338c8a9a5SSteve French __assign_str(hostname, hostname); 106438c8a9a5SSteve French ), 106538c8a9a5SSteve French TP_printk("conn_id=0x%llx server=%s current_mid=%llu", 106638c8a9a5SSteve French __entry->conn_id, 106738c8a9a5SSteve French __get_str(hostname), 106838c8a9a5SSteve French __entry->currmid) 106938c8a9a5SSteve French ) 107038c8a9a5SSteve French 107138c8a9a5SSteve French #define DEFINE_SMB3_RECONNECT_EVENT(name) \ 107238c8a9a5SSteve French DEFINE_EVENT(smb3_reconnect_class, smb3_##name, \ 107338c8a9a5SSteve French TP_PROTO(__u64 currmid, \ 107438c8a9a5SSteve French __u64 conn_id, \ 107538c8a9a5SSteve French char *hostname), \ 107638c8a9a5SSteve French TP_ARGS(currmid, conn_id, hostname)) 107738c8a9a5SSteve French 107838c8a9a5SSteve French DEFINE_SMB3_RECONNECT_EVENT(reconnect); 107938c8a9a5SSteve French DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect); 108038c8a9a5SSteve French 108161986a58SShyam Prasad N DECLARE_EVENT_CLASS(smb3_ses_class, 108261986a58SShyam Prasad N TP_PROTO(__u64 sesid), 108361986a58SShyam Prasad N TP_ARGS(sesid), 108461986a58SShyam Prasad N TP_STRUCT__entry( 108561986a58SShyam Prasad N __field(__u64, sesid) 108661986a58SShyam Prasad N ), 108761986a58SShyam Prasad N TP_fast_assign( 108861986a58SShyam Prasad N __entry->sesid = sesid; 108961986a58SShyam Prasad N ), 109061986a58SShyam Prasad N TP_printk("sid=0x%llx", 109161986a58SShyam Prasad N __entry->sesid) 109261986a58SShyam Prasad N ) 109361986a58SShyam Prasad N 109461986a58SShyam Prasad N #define DEFINE_SMB3_SES_EVENT(name) \ 109561986a58SShyam Prasad N DEFINE_EVENT(smb3_ses_class, smb3_##name, \ 109661986a58SShyam Prasad N TP_PROTO(__u64 sesid), \ 109761986a58SShyam Prasad N TP_ARGS(sesid)) 109861986a58SShyam Prasad N 109961986a58SShyam Prasad N DEFINE_SMB3_SES_EVENT(ses_not_found); 110061986a58SShyam Prasad N 110125f3604fSSteve French DECLARE_EVENT_CLASS(smb3_ioctl_class, 110225f3604fSSteve French TP_PROTO(unsigned int xid, 110325f3604fSSteve French __u64 fid, 110425f3604fSSteve French unsigned int command), 110525f3604fSSteve French TP_ARGS(xid, fid, command), 110625f3604fSSteve French TP_STRUCT__entry( 110725f3604fSSteve French __field(unsigned int, xid) 110825f3604fSSteve French __field(__u64, fid) 110925f3604fSSteve French __field(unsigned int, command) 111025f3604fSSteve French ), 111125f3604fSSteve French TP_fast_assign( 111225f3604fSSteve French __entry->xid = xid; 111325f3604fSSteve French __entry->fid = fid; 111425f3604fSSteve French __entry->command = command; 111525f3604fSSteve French ), 111625f3604fSSteve French TP_printk("xid=%u fid=0x%llx ioctl cmd=0x%x", 111725f3604fSSteve French __entry->xid, __entry->fid, __entry->command) 111825f3604fSSteve French ) 111925f3604fSSteve French 112025f3604fSSteve French #define DEFINE_SMB3_IOCTL_EVENT(name) \ 112125f3604fSSteve French DEFINE_EVENT(smb3_ioctl_class, smb3_##name, \ 112225f3604fSSteve French TP_PROTO(unsigned int xid, \ 112325f3604fSSteve French __u64 fid, \ 112425f3604fSSteve French unsigned int command), \ 112525f3604fSSteve French TP_ARGS(xid, fid, command)) 112625f3604fSSteve French 112725f3604fSSteve French DEFINE_SMB3_IOCTL_EVENT(ioctl); 112825f3604fSSteve French 112925f3604fSSteve French 113025f3604fSSteve French 113125f3604fSSteve French 113225f3604fSSteve French 113338c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_credit_class, 113438c8a9a5SSteve French TP_PROTO(__u64 currmid, 113538c8a9a5SSteve French __u64 conn_id, 113638c8a9a5SSteve French char *hostname, 113738c8a9a5SSteve French int credits, 113838c8a9a5SSteve French int credits_to_add, 113938c8a9a5SSteve French int in_flight), 114038c8a9a5SSteve French TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight), 114138c8a9a5SSteve French TP_STRUCT__entry( 114238c8a9a5SSteve French __field(__u64, currmid) 114338c8a9a5SSteve French __field(__u64, conn_id) 114438c8a9a5SSteve French __string(hostname, hostname) 114538c8a9a5SSteve French __field(int, credits) 114638c8a9a5SSteve French __field(int, credits_to_add) 114738c8a9a5SSteve French __field(int, in_flight) 114838c8a9a5SSteve French ), 114938c8a9a5SSteve French TP_fast_assign( 115038c8a9a5SSteve French __entry->currmid = currmid; 115138c8a9a5SSteve French __entry->conn_id = conn_id; 115238c8a9a5SSteve French __assign_str(hostname, hostname); 115338c8a9a5SSteve French __entry->credits = credits; 115438c8a9a5SSteve French __entry->credits_to_add = credits_to_add; 115538c8a9a5SSteve French __entry->in_flight = in_flight; 115638c8a9a5SSteve French ), 115738c8a9a5SSteve French TP_printk("conn_id=0x%llx server=%s current_mid=%llu " 115838c8a9a5SSteve French "credits=%d credit_change=%d in_flight=%d", 115938c8a9a5SSteve French __entry->conn_id, 116038c8a9a5SSteve French __get_str(hostname), 116138c8a9a5SSteve French __entry->currmid, 116238c8a9a5SSteve French __entry->credits, 116338c8a9a5SSteve French __entry->credits_to_add, 116438c8a9a5SSteve French __entry->in_flight) 116538c8a9a5SSteve French ) 116638c8a9a5SSteve French 116738c8a9a5SSteve French #define DEFINE_SMB3_CREDIT_EVENT(name) \ 116838c8a9a5SSteve French DEFINE_EVENT(smb3_credit_class, smb3_##name, \ 116938c8a9a5SSteve French TP_PROTO(__u64 currmid, \ 117038c8a9a5SSteve French __u64 conn_id, \ 117138c8a9a5SSteve French char *hostname, \ 117238c8a9a5SSteve French int credits, \ 117338c8a9a5SSteve French int credits_to_add, \ 117438c8a9a5SSteve French int in_flight), \ 117538c8a9a5SSteve French TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight)) 117638c8a9a5SSteve French 117738c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits); 117838c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(reconnect_detected); 117938c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(credit_timeout); 118038c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(insufficient_credits); 118138c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(too_many_credits); 118238c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(add_credits); 118338c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(adj_credits); 118438c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(hdr_credits); 118538c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(nblk_credits); 118638c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(pend_credits); 118738c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(wait_credits); 118838c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(waitff_credits); 118938c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(overflow_credits); 119038c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(set_credits); 119138c8a9a5SSteve French 119207e76ea1SDavid Howells 119307e76ea1SDavid Howells TRACE_EVENT(smb3_tcon_ref, 119407e76ea1SDavid Howells TP_PROTO(unsigned int tcon_debug_id, int ref, 119507e76ea1SDavid Howells enum smb3_tcon_ref_trace trace), 119607e76ea1SDavid Howells TP_ARGS(tcon_debug_id, ref, trace), 119707e76ea1SDavid Howells TP_STRUCT__entry( 119807e76ea1SDavid Howells __field(unsigned int, tcon) 119907e76ea1SDavid Howells __field(int, ref) 120007e76ea1SDavid Howells __field(enum smb3_tcon_ref_trace, trace) 120107e76ea1SDavid Howells ), 120207e76ea1SDavid Howells TP_fast_assign( 120307e76ea1SDavid Howells __entry->tcon = tcon_debug_id; 120407e76ea1SDavid Howells __entry->ref = ref; 120507e76ea1SDavid Howells __entry->trace = trace; 120607e76ea1SDavid Howells ), 120707e76ea1SDavid Howells TP_printk("TC=%08x %s r=%u", 120807e76ea1SDavid Howells __entry->tcon, 120907e76ea1SDavid Howells __print_symbolic(__entry->trace, smb3_tcon_ref_traces), 121007e76ea1SDavid Howells __entry->ref) 121107e76ea1SDavid Howells ); 121207e76ea1SDavid Howells 121307e76ea1SDavid Howells 121407e76ea1SDavid Howells #undef EM 121507e76ea1SDavid Howells #undef E_ 121638c8a9a5SSteve French #endif /* _CIFS_TRACE_H */ 121738c8a9a5SSteve French 121838c8a9a5SSteve French #undef TRACE_INCLUDE_PATH 121938c8a9a5SSteve French #define TRACE_INCLUDE_PATH . 122038c8a9a5SSteve French #define TRACE_INCLUDE_FILE trace 122138c8a9a5SSteve French #include <trace/define_trace.h> 1222