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> 638c8a9a5SSteve French */ 738c8a9a5SSteve French #undef TRACE_SYSTEM 838c8a9a5SSteve French #define TRACE_SYSTEM cifs 938c8a9a5SSteve French 1038c8a9a5SSteve French #if !defined(_CIFS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 1138c8a9a5SSteve French #define _CIFS_TRACE_H 1238c8a9a5SSteve French 1338c8a9a5SSteve French #include <linux/tracepoint.h> 1438c8a9a5SSteve French #include <linux/net.h> 1538c8a9a5SSteve French #include <linux/inet.h> 1638c8a9a5SSteve French 1738c8a9a5SSteve French /* 1838c8a9a5SSteve French * Please use this 3-part article as a reference for writing new tracepoints: 1938c8a9a5SSteve French * https://lwn.net/Articles/379903/ 2038c8a9a5SSteve French */ 2138c8a9a5SSteve French 2238c8a9a5SSteve French /* For logging errors in read or write */ 2338c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_rw_err_class, 2438c8a9a5SSteve French TP_PROTO(unsigned int xid, 2538c8a9a5SSteve French __u64 fid, 2638c8a9a5SSteve French __u32 tid, 2738c8a9a5SSteve French __u64 sesid, 2838c8a9a5SSteve French __u64 offset, 2938c8a9a5SSteve French __u32 len, 3038c8a9a5SSteve French int rc), 3138c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, offset, len, rc), 3238c8a9a5SSteve French TP_STRUCT__entry( 3338c8a9a5SSteve French __field(unsigned int, xid) 3438c8a9a5SSteve French __field(__u64, fid) 3538c8a9a5SSteve French __field(__u32, tid) 3638c8a9a5SSteve French __field(__u64, sesid) 3738c8a9a5SSteve French __field(__u64, offset) 3838c8a9a5SSteve French __field(__u32, len) 3938c8a9a5SSteve French __field(int, rc) 4038c8a9a5SSteve French ), 4138c8a9a5SSteve French TP_fast_assign( 4238c8a9a5SSteve French __entry->xid = xid; 4338c8a9a5SSteve French __entry->fid = fid; 4438c8a9a5SSteve French __entry->tid = tid; 4538c8a9a5SSteve French __entry->sesid = sesid; 4638c8a9a5SSteve French __entry->offset = offset; 4738c8a9a5SSteve French __entry->len = len; 4838c8a9a5SSteve French __entry->rc = rc; 4938c8a9a5SSteve French ), 5038c8a9a5SSteve French TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d", 5138c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 5238c8a9a5SSteve French __entry->offset, __entry->len, __entry->rc) 5338c8a9a5SSteve French ) 5438c8a9a5SSteve French 5538c8a9a5SSteve French #define DEFINE_SMB3_RW_ERR_EVENT(name) \ 5638c8a9a5SSteve French DEFINE_EVENT(smb3_rw_err_class, smb3_##name, \ 5738c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 5838c8a9a5SSteve French __u64 fid, \ 5938c8a9a5SSteve French __u32 tid, \ 6038c8a9a5SSteve French __u64 sesid, \ 6138c8a9a5SSteve French __u64 offset, \ 6238c8a9a5SSteve French __u32 len, \ 6338c8a9a5SSteve French int rc), \ 6438c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, offset, len, rc)) 6538c8a9a5SSteve French 6638c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(write_err); 6738c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(read_err); 6838c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(query_dir_err); 6938c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(zero_err); 7038c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(falloc_err); 7138c8a9a5SSteve French 7238c8a9a5SSteve French 7338c8a9a5SSteve French /* For logging successful read or write */ 7438c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_rw_done_class, 7538c8a9a5SSteve French TP_PROTO(unsigned int xid, 7638c8a9a5SSteve French __u64 fid, 7738c8a9a5SSteve French __u32 tid, 7838c8a9a5SSteve French __u64 sesid, 7938c8a9a5SSteve French __u64 offset, 8038c8a9a5SSteve French __u32 len), 8138c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, offset, len), 8238c8a9a5SSteve French TP_STRUCT__entry( 8338c8a9a5SSteve French __field(unsigned int, xid) 8438c8a9a5SSteve French __field(__u64, fid) 8538c8a9a5SSteve French __field(__u32, tid) 8638c8a9a5SSteve French __field(__u64, sesid) 8738c8a9a5SSteve French __field(__u64, offset) 8838c8a9a5SSteve French __field(__u32, len) 8938c8a9a5SSteve French ), 9038c8a9a5SSteve French TP_fast_assign( 9138c8a9a5SSteve French __entry->xid = xid; 9238c8a9a5SSteve French __entry->fid = fid; 9338c8a9a5SSteve French __entry->tid = tid; 9438c8a9a5SSteve French __entry->sesid = sesid; 9538c8a9a5SSteve French __entry->offset = offset; 9638c8a9a5SSteve French __entry->len = len; 9738c8a9a5SSteve French ), 9838c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x", 9938c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 10038c8a9a5SSteve French __entry->offset, __entry->len) 10138c8a9a5SSteve French ) 10238c8a9a5SSteve French 10338c8a9a5SSteve French #define DEFINE_SMB3_RW_DONE_EVENT(name) \ 10438c8a9a5SSteve French DEFINE_EVENT(smb3_rw_done_class, smb3_##name, \ 10538c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 10638c8a9a5SSteve French __u64 fid, \ 10738c8a9a5SSteve French __u32 tid, \ 10838c8a9a5SSteve French __u64 sesid, \ 10938c8a9a5SSteve French __u64 offset, \ 11038c8a9a5SSteve French __u32 len), \ 11138c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, offset, len)) 11238c8a9a5SSteve French 11338c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(write_enter); 11438c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(read_enter); 11538c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(query_dir_enter); 11638c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(zero_enter); 11738c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(falloc_enter); 11838c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(write_done); 11938c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(read_done); 12038c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(query_dir_done); 12138c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(zero_done); 12238c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(falloc_done); 12338c8a9a5SSteve French 12438c8a9a5SSteve French /* For logging successful set EOF (truncate) */ 12538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_eof_class, 12638c8a9a5SSteve French TP_PROTO(unsigned int xid, 12738c8a9a5SSteve French __u64 fid, 12838c8a9a5SSteve French __u32 tid, 12938c8a9a5SSteve French __u64 sesid, 13038c8a9a5SSteve French __u64 offset), 13138c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, offset), 13238c8a9a5SSteve French TP_STRUCT__entry( 13338c8a9a5SSteve French __field(unsigned int, xid) 13438c8a9a5SSteve French __field(__u64, fid) 13538c8a9a5SSteve French __field(__u32, tid) 13638c8a9a5SSteve French __field(__u64, sesid) 13738c8a9a5SSteve French __field(__u64, offset) 13838c8a9a5SSteve French ), 13938c8a9a5SSteve French TP_fast_assign( 14038c8a9a5SSteve French __entry->xid = xid; 14138c8a9a5SSteve French __entry->fid = fid; 14238c8a9a5SSteve French __entry->tid = tid; 14338c8a9a5SSteve French __entry->sesid = sesid; 14438c8a9a5SSteve French __entry->offset = offset; 14538c8a9a5SSteve French ), 14638c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx", 14738c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 14838c8a9a5SSteve French __entry->offset) 14938c8a9a5SSteve French ) 15038c8a9a5SSteve French 15138c8a9a5SSteve French #define DEFINE_SMB3_EOF_EVENT(name) \ 15238c8a9a5SSteve French DEFINE_EVENT(smb3_eof_class, smb3_##name, \ 15338c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 15438c8a9a5SSteve French __u64 fid, \ 15538c8a9a5SSteve French __u32 tid, \ 15638c8a9a5SSteve French __u64 sesid, \ 15738c8a9a5SSteve French __u64 offset), \ 15838c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, offset)) 15938c8a9a5SSteve French 16038c8a9a5SSteve French DEFINE_SMB3_EOF_EVENT(set_eof); 16138c8a9a5SSteve French 16238c8a9a5SSteve French /* 16338c8a9a5SSteve French * For handle based calls other than read and write, and get/set info 16438c8a9a5SSteve French */ 16538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_fd_class, 16638c8a9a5SSteve French TP_PROTO(unsigned int xid, 16738c8a9a5SSteve French __u64 fid, 16838c8a9a5SSteve French __u32 tid, 16938c8a9a5SSteve French __u64 sesid), 17038c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid), 17138c8a9a5SSteve French TP_STRUCT__entry( 17238c8a9a5SSteve French __field(unsigned int, xid) 17338c8a9a5SSteve French __field(__u64, fid) 17438c8a9a5SSteve French __field(__u32, tid) 17538c8a9a5SSteve French __field(__u64, sesid) 17638c8a9a5SSteve French ), 17738c8a9a5SSteve French TP_fast_assign( 17838c8a9a5SSteve French __entry->xid = xid; 17938c8a9a5SSteve French __entry->fid = fid; 18038c8a9a5SSteve French __entry->tid = tid; 18138c8a9a5SSteve French __entry->sesid = sesid; 18238c8a9a5SSteve French ), 18338c8a9a5SSteve French TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx", 18438c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __entry->fid) 18538c8a9a5SSteve French ) 18638c8a9a5SSteve French 18738c8a9a5SSteve French #define DEFINE_SMB3_FD_EVENT(name) \ 18838c8a9a5SSteve French DEFINE_EVENT(smb3_fd_class, smb3_##name, \ 18938c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 19038c8a9a5SSteve French __u64 fid, \ 19138c8a9a5SSteve French __u32 tid, \ 19238c8a9a5SSteve French __u64 sesid), \ 19338c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid)) 19438c8a9a5SSteve French 19538c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(flush_enter); 19638c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(flush_done); 19738c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(close_enter); 19838c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(close_done); 19938c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(oplock_not_found); 20038c8a9a5SSteve French 20138c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_fd_err_class, 20238c8a9a5SSteve French TP_PROTO(unsigned int xid, 20338c8a9a5SSteve French __u64 fid, 20438c8a9a5SSteve French __u32 tid, 20538c8a9a5SSteve French __u64 sesid, 20638c8a9a5SSteve French int rc), 20738c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, rc), 20838c8a9a5SSteve French TP_STRUCT__entry( 20938c8a9a5SSteve French __field(unsigned int, xid) 21038c8a9a5SSteve French __field(__u64, fid) 21138c8a9a5SSteve French __field(__u32, tid) 21238c8a9a5SSteve French __field(__u64, sesid) 21338c8a9a5SSteve French __field(int, rc) 21438c8a9a5SSteve French ), 21538c8a9a5SSteve French TP_fast_assign( 21638c8a9a5SSteve French __entry->xid = xid; 21738c8a9a5SSteve French __entry->fid = fid; 21838c8a9a5SSteve French __entry->tid = tid; 21938c8a9a5SSteve French __entry->sesid = sesid; 22038c8a9a5SSteve French __entry->rc = rc; 22138c8a9a5SSteve French ), 22238c8a9a5SSteve French TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d", 22338c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 22438c8a9a5SSteve French __entry->rc) 22538c8a9a5SSteve French ) 22638c8a9a5SSteve French 22738c8a9a5SSteve French #define DEFINE_SMB3_FD_ERR_EVENT(name) \ 22838c8a9a5SSteve French DEFINE_EVENT(smb3_fd_err_class, smb3_##name, \ 22938c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 23038c8a9a5SSteve French __u64 fid, \ 23138c8a9a5SSteve French __u32 tid, \ 23238c8a9a5SSteve French __u64 sesid, \ 23338c8a9a5SSteve French int rc), \ 23438c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, rc)) 23538c8a9a5SSteve French 23638c8a9a5SSteve French DEFINE_SMB3_FD_ERR_EVENT(flush_err); 23738c8a9a5SSteve French DEFINE_SMB3_FD_ERR_EVENT(lock_err); 23838c8a9a5SSteve French DEFINE_SMB3_FD_ERR_EVENT(close_err); 23938c8a9a5SSteve French 24038c8a9a5SSteve French /* 24138c8a9a5SSteve French * For handle based query/set info calls 24238c8a9a5SSteve French */ 24338c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_enter_class, 24438c8a9a5SSteve French TP_PROTO(unsigned int xid, 24538c8a9a5SSteve French __u64 fid, 24638c8a9a5SSteve French __u32 tid, 24738c8a9a5SSteve French __u64 sesid, 24838c8a9a5SSteve French __u8 infclass, 24938c8a9a5SSteve French __u32 type), 25038c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, infclass, type), 25138c8a9a5SSteve French TP_STRUCT__entry( 25238c8a9a5SSteve French __field(unsigned int, xid) 25338c8a9a5SSteve French __field(__u64, fid) 25438c8a9a5SSteve French __field(__u32, tid) 25538c8a9a5SSteve French __field(__u64, sesid) 25638c8a9a5SSteve French __field(__u8, infclass) 25738c8a9a5SSteve French __field(__u32, type) 25838c8a9a5SSteve French ), 25938c8a9a5SSteve French TP_fast_assign( 26038c8a9a5SSteve French __entry->xid = xid; 26138c8a9a5SSteve French __entry->fid = fid; 26238c8a9a5SSteve French __entry->tid = tid; 26338c8a9a5SSteve French __entry->sesid = sesid; 26438c8a9a5SSteve French __entry->infclass = infclass; 26538c8a9a5SSteve French __entry->type = type; 26638c8a9a5SSteve French ), 26738c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x", 26838c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 26938c8a9a5SSteve French __entry->infclass, __entry->type) 27038c8a9a5SSteve French ) 27138c8a9a5SSteve French 27238c8a9a5SSteve French #define DEFINE_SMB3_INF_ENTER_EVENT(name) \ 27338c8a9a5SSteve French DEFINE_EVENT(smb3_inf_enter_class, smb3_##name, \ 27438c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 27538c8a9a5SSteve French __u64 fid, \ 27638c8a9a5SSteve French __u32 tid, \ 27738c8a9a5SSteve French __u64 sesid, \ 27838c8a9a5SSteve French __u8 infclass, \ 27938c8a9a5SSteve French __u32 type), \ 28038c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, infclass, type)) 28138c8a9a5SSteve French 28238c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter); 28338c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(query_info_done); 28438c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(notify_enter); 28538c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(notify_done); 28638c8a9a5SSteve French 28738c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_err_class, 28838c8a9a5SSteve French TP_PROTO(unsigned int xid, 28938c8a9a5SSteve French __u64 fid, 29038c8a9a5SSteve French __u32 tid, 29138c8a9a5SSteve French __u64 sesid, 29238c8a9a5SSteve French __u8 infclass, 29338c8a9a5SSteve French __u32 type, 29438c8a9a5SSteve French int rc), 29538c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, infclass, type, rc), 29638c8a9a5SSteve French TP_STRUCT__entry( 29738c8a9a5SSteve French __field(unsigned int, xid) 29838c8a9a5SSteve French __field(__u64, fid) 29938c8a9a5SSteve French __field(__u32, tid) 30038c8a9a5SSteve French __field(__u64, sesid) 30138c8a9a5SSteve French __field(__u8, infclass) 30238c8a9a5SSteve French __field(__u32, type) 30338c8a9a5SSteve French __field(int, rc) 30438c8a9a5SSteve French ), 30538c8a9a5SSteve French TP_fast_assign( 30638c8a9a5SSteve French __entry->xid = xid; 30738c8a9a5SSteve French __entry->fid = fid; 30838c8a9a5SSteve French __entry->tid = tid; 30938c8a9a5SSteve French __entry->sesid = sesid; 31038c8a9a5SSteve French __entry->infclass = infclass; 31138c8a9a5SSteve French __entry->type = type; 31238c8a9a5SSteve French __entry->rc = rc; 31338c8a9a5SSteve French ), 31438c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d", 31538c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 31638c8a9a5SSteve French __entry->infclass, __entry->type, __entry->rc) 31738c8a9a5SSteve French ) 31838c8a9a5SSteve French 31938c8a9a5SSteve French #define DEFINE_SMB3_INF_ERR_EVENT(name) \ 32038c8a9a5SSteve French DEFINE_EVENT(smb3_inf_err_class, smb3_##name, \ 32138c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 32238c8a9a5SSteve French __u64 fid, \ 32338c8a9a5SSteve French __u32 tid, \ 32438c8a9a5SSteve French __u64 sesid, \ 32538c8a9a5SSteve French __u8 infclass, \ 32638c8a9a5SSteve French __u32 type, \ 32738c8a9a5SSteve French int rc), \ 32838c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, infclass, type, rc)) 32938c8a9a5SSteve French 33038c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(query_info_err); 33138c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(set_info_err); 33238c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(notify_err); 33338c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(fsctl_err); 33438c8a9a5SSteve French 33538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class, 33638c8a9a5SSteve French TP_PROTO(unsigned int xid, 33738c8a9a5SSteve French __u32 tid, 33838c8a9a5SSteve French __u64 sesid, 33938c8a9a5SSteve French const char *full_path), 34038c8a9a5SSteve French TP_ARGS(xid, tid, sesid, full_path), 34138c8a9a5SSteve French TP_STRUCT__entry( 34238c8a9a5SSteve French __field(unsigned int, xid) 34338c8a9a5SSteve French __field(__u32, tid) 34438c8a9a5SSteve French __field(__u64, sesid) 34538c8a9a5SSteve French __string(path, full_path) 34638c8a9a5SSteve French ), 34738c8a9a5SSteve French TP_fast_assign( 34838c8a9a5SSteve French __entry->xid = xid; 34938c8a9a5SSteve French __entry->tid = tid; 35038c8a9a5SSteve French __entry->sesid = sesid; 35138c8a9a5SSteve French __assign_str(path, full_path); 35238c8a9a5SSteve French ), 35338c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s", 35438c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, 35538c8a9a5SSteve French __get_str(path)) 35638c8a9a5SSteve French ) 35738c8a9a5SSteve French 35838c8a9a5SSteve French #define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name) \ 35938c8a9a5SSteve French DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name, \ 36038c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 36138c8a9a5SSteve French __u32 tid, \ 36238c8a9a5SSteve French __u64 sesid, \ 36338c8a9a5SSteve French const char *full_path), \ 36438c8a9a5SSteve French TP_ARGS(xid, tid, sesid, full_path)) 36538c8a9a5SSteve French 36638c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter); 36738c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter); 36838c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter); 36938c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter); 37038c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter); 37138c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter); 37238c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter); 37338c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter); 37438c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter); 37538c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(tdis_enter); 37638c8a9a5SSteve French 37738c8a9a5SSteve French 37838c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_compound_done_class, 37938c8a9a5SSteve French TP_PROTO(unsigned int xid, 38038c8a9a5SSteve French __u32 tid, 38138c8a9a5SSteve French __u64 sesid), 38238c8a9a5SSteve French TP_ARGS(xid, tid, sesid), 38338c8a9a5SSteve French TP_STRUCT__entry( 38438c8a9a5SSteve French __field(unsigned int, xid) 38538c8a9a5SSteve French __field(__u32, tid) 38638c8a9a5SSteve French __field(__u64, sesid) 38738c8a9a5SSteve French ), 38838c8a9a5SSteve French TP_fast_assign( 38938c8a9a5SSteve French __entry->xid = xid; 39038c8a9a5SSteve French __entry->tid = tid; 39138c8a9a5SSteve French __entry->sesid = sesid; 39238c8a9a5SSteve French ), 39338c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x", 39438c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid) 39538c8a9a5SSteve French ) 39638c8a9a5SSteve French 39738c8a9a5SSteve French #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name) \ 39838c8a9a5SSteve French DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name, \ 39938c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 40038c8a9a5SSteve French __u32 tid, \ 40138c8a9a5SSteve French __u64 sesid), \ 40238c8a9a5SSteve French TP_ARGS(xid, tid, sesid)) 40338c8a9a5SSteve French 40438c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done); 40538c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done); 40638c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done); 40738c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done); 40838c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done); 40938c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done); 41038c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done); 41138c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done); 41238c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done); 41338c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(tdis_done); 41438c8a9a5SSteve French 41538c8a9a5SSteve French 41638c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_compound_err_class, 41738c8a9a5SSteve French TP_PROTO(unsigned int xid, 41838c8a9a5SSteve French __u32 tid, 41938c8a9a5SSteve French __u64 sesid, 42038c8a9a5SSteve French int rc), 42138c8a9a5SSteve French TP_ARGS(xid, tid, sesid, rc), 42238c8a9a5SSteve French TP_STRUCT__entry( 42338c8a9a5SSteve French __field(unsigned int, xid) 42438c8a9a5SSteve French __field(__u32, tid) 42538c8a9a5SSteve French __field(__u64, sesid) 42638c8a9a5SSteve French __field(int, rc) 42738c8a9a5SSteve French ), 42838c8a9a5SSteve French TP_fast_assign( 42938c8a9a5SSteve French __entry->xid = xid; 43038c8a9a5SSteve French __entry->tid = tid; 43138c8a9a5SSteve French __entry->sesid = sesid; 43238c8a9a5SSteve French __entry->rc = rc; 43338c8a9a5SSteve French ), 43438c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d", 43538c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, 43638c8a9a5SSteve French __entry->rc) 43738c8a9a5SSteve French ) 43838c8a9a5SSteve French 43938c8a9a5SSteve French #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name) \ 44038c8a9a5SSteve French DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name, \ 44138c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 44238c8a9a5SSteve French __u32 tid, \ 44338c8a9a5SSteve French __u64 sesid, \ 44438c8a9a5SSteve French int rc), \ 44538c8a9a5SSteve French TP_ARGS(xid, tid, sesid, rc)) 44638c8a9a5SSteve French 44738c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err); 44838c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err); 44938c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err); 45038c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err); 45138c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err); 45238c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err); 45338c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err); 45438c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err); 45538c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err); 45638c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(tdis_err); 45738c8a9a5SSteve French 45838c8a9a5SSteve French /* 45938c8a9a5SSteve French * For logging SMB3 Status code and Command for responses which return errors 46038c8a9a5SSteve French */ 46138c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_cmd_err_class, 46238c8a9a5SSteve French TP_PROTO(__u32 tid, 46338c8a9a5SSteve French __u64 sesid, 46438c8a9a5SSteve French __u16 cmd, 46538c8a9a5SSteve French __u64 mid, 46638c8a9a5SSteve French __u32 status, 46738c8a9a5SSteve French int rc), 46838c8a9a5SSteve French TP_ARGS(tid, sesid, cmd, mid, status, rc), 46938c8a9a5SSteve French TP_STRUCT__entry( 47038c8a9a5SSteve French __field(__u32, tid) 47138c8a9a5SSteve French __field(__u64, sesid) 47238c8a9a5SSteve French __field(__u16, cmd) 47338c8a9a5SSteve French __field(__u64, mid) 47438c8a9a5SSteve French __field(__u32, status) 47538c8a9a5SSteve French __field(int, rc) 47638c8a9a5SSteve French ), 47738c8a9a5SSteve French TP_fast_assign( 47838c8a9a5SSteve French __entry->tid = tid; 47938c8a9a5SSteve French __entry->sesid = sesid; 48038c8a9a5SSteve French __entry->cmd = cmd; 48138c8a9a5SSteve French __entry->mid = mid; 48238c8a9a5SSteve French __entry->status = status; 48338c8a9a5SSteve French __entry->rc = rc; 48438c8a9a5SSteve French ), 48538c8a9a5SSteve French TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d", 48638c8a9a5SSteve French __entry->sesid, __entry->tid, __entry->cmd, __entry->mid, 48738c8a9a5SSteve French __entry->status, __entry->rc) 48838c8a9a5SSteve French ) 48938c8a9a5SSteve French 49038c8a9a5SSteve French #define DEFINE_SMB3_CMD_ERR_EVENT(name) \ 49138c8a9a5SSteve French DEFINE_EVENT(smb3_cmd_err_class, smb3_##name, \ 49238c8a9a5SSteve French TP_PROTO(__u32 tid, \ 49338c8a9a5SSteve French __u64 sesid, \ 49438c8a9a5SSteve French __u16 cmd, \ 49538c8a9a5SSteve French __u64 mid, \ 49638c8a9a5SSteve French __u32 status, \ 49738c8a9a5SSteve French int rc), \ 49838c8a9a5SSteve French TP_ARGS(tid, sesid, cmd, mid, status, rc)) 49938c8a9a5SSteve French 50038c8a9a5SSteve French DEFINE_SMB3_CMD_ERR_EVENT(cmd_err); 50138c8a9a5SSteve French 50238c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_cmd_done_class, 50338c8a9a5SSteve French TP_PROTO(__u32 tid, 50438c8a9a5SSteve French __u64 sesid, 50538c8a9a5SSteve French __u16 cmd, 50638c8a9a5SSteve French __u64 mid), 50738c8a9a5SSteve French TP_ARGS(tid, sesid, cmd, mid), 50838c8a9a5SSteve French TP_STRUCT__entry( 50938c8a9a5SSteve French __field(__u32, tid) 51038c8a9a5SSteve French __field(__u64, sesid) 51138c8a9a5SSteve French __field(__u16, cmd) 51238c8a9a5SSteve French __field(__u64, mid) 51338c8a9a5SSteve French ), 51438c8a9a5SSteve French TP_fast_assign( 51538c8a9a5SSteve French __entry->tid = tid; 51638c8a9a5SSteve French __entry->sesid = sesid; 51738c8a9a5SSteve French __entry->cmd = cmd; 51838c8a9a5SSteve French __entry->mid = mid; 51938c8a9a5SSteve French ), 52038c8a9a5SSteve French TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu", 52138c8a9a5SSteve French __entry->sesid, __entry->tid, 52238c8a9a5SSteve French __entry->cmd, __entry->mid) 52338c8a9a5SSteve French ) 52438c8a9a5SSteve French 52538c8a9a5SSteve French #define DEFINE_SMB3_CMD_DONE_EVENT(name) \ 52638c8a9a5SSteve French DEFINE_EVENT(smb3_cmd_done_class, smb3_##name, \ 52738c8a9a5SSteve French TP_PROTO(__u32 tid, \ 52838c8a9a5SSteve French __u64 sesid, \ 52938c8a9a5SSteve French __u16 cmd, \ 53038c8a9a5SSteve French __u64 mid), \ 53138c8a9a5SSteve French TP_ARGS(tid, sesid, cmd, mid)) 53238c8a9a5SSteve French 53338c8a9a5SSteve French DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter); 53438c8a9a5SSteve French DEFINE_SMB3_CMD_DONE_EVENT(cmd_done); 53538c8a9a5SSteve French DEFINE_SMB3_CMD_DONE_EVENT(ses_expired); 53638c8a9a5SSteve French 53738c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_mid_class, 53838c8a9a5SSteve French TP_PROTO(__u16 cmd, 53938c8a9a5SSteve French __u64 mid, 54038c8a9a5SSteve French __u32 pid, 54138c8a9a5SSteve French unsigned long when_sent, 54238c8a9a5SSteve French unsigned long when_received), 54338c8a9a5SSteve French TP_ARGS(cmd, mid, pid, when_sent, when_received), 54438c8a9a5SSteve French TP_STRUCT__entry( 54538c8a9a5SSteve French __field(__u16, cmd) 54638c8a9a5SSteve French __field(__u64, mid) 54738c8a9a5SSteve French __field(__u32, pid) 54838c8a9a5SSteve French __field(unsigned long, when_sent) 54938c8a9a5SSteve French __field(unsigned long, when_received) 55038c8a9a5SSteve French ), 55138c8a9a5SSteve French TP_fast_assign( 55238c8a9a5SSteve French __entry->cmd = cmd; 55338c8a9a5SSteve French __entry->mid = mid; 55438c8a9a5SSteve French __entry->pid = pid; 55538c8a9a5SSteve French __entry->when_sent = when_sent; 55638c8a9a5SSteve French __entry->when_received = when_received; 55738c8a9a5SSteve French ), 55838c8a9a5SSteve French TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu", 55938c8a9a5SSteve French __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent, 56038c8a9a5SSteve French __entry->when_received) 56138c8a9a5SSteve French ) 56238c8a9a5SSteve French 56338c8a9a5SSteve French #define DEFINE_SMB3_MID_EVENT(name) \ 56438c8a9a5SSteve French DEFINE_EVENT(smb3_mid_class, smb3_##name, \ 56538c8a9a5SSteve French TP_PROTO(__u16 cmd, \ 56638c8a9a5SSteve French __u64 mid, \ 56738c8a9a5SSteve French __u32 pid, \ 56838c8a9a5SSteve French unsigned long when_sent, \ 56938c8a9a5SSteve French unsigned long when_received), \ 57038c8a9a5SSteve French TP_ARGS(cmd, mid, pid, when_sent, when_received)) 57138c8a9a5SSteve French 57238c8a9a5SSteve French DEFINE_SMB3_MID_EVENT(slow_rsp); 57338c8a9a5SSteve French 57438c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_exit_err_class, 57538c8a9a5SSteve French TP_PROTO(unsigned int xid, 57638c8a9a5SSteve French const char *func_name, 57738c8a9a5SSteve French int rc), 57838c8a9a5SSteve French TP_ARGS(xid, func_name, rc), 57938c8a9a5SSteve French TP_STRUCT__entry( 58038c8a9a5SSteve French __field(unsigned int, xid) 58138c8a9a5SSteve French __string(func_name, func_name) 58238c8a9a5SSteve French __field(int, rc) 58338c8a9a5SSteve French ), 58438c8a9a5SSteve French TP_fast_assign( 58538c8a9a5SSteve French __entry->xid = xid; 58638c8a9a5SSteve French __assign_str(func_name, func_name); 58738c8a9a5SSteve French __entry->rc = rc; 58838c8a9a5SSteve French ), 58938c8a9a5SSteve French TP_printk("\t%s: xid=%u rc=%d", 59038c8a9a5SSteve French __get_str(func_name), __entry->xid, __entry->rc) 59138c8a9a5SSteve French ) 59238c8a9a5SSteve French 59338c8a9a5SSteve French #define DEFINE_SMB3_EXIT_ERR_EVENT(name) \ 59438c8a9a5SSteve French DEFINE_EVENT(smb3_exit_err_class, smb3_##name, \ 59538c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 59638c8a9a5SSteve French const char *func_name, \ 59738c8a9a5SSteve French int rc), \ 59838c8a9a5SSteve French TP_ARGS(xid, func_name, rc)) 59938c8a9a5SSteve French 60038c8a9a5SSteve French DEFINE_SMB3_EXIT_ERR_EVENT(exit_err); 60138c8a9a5SSteve French 60238c8a9a5SSteve French 60338c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_sync_err_class, 60438c8a9a5SSteve French TP_PROTO(unsigned long ino, 60538c8a9a5SSteve French int rc), 60638c8a9a5SSteve French TP_ARGS(ino, rc), 60738c8a9a5SSteve French TP_STRUCT__entry( 60838c8a9a5SSteve French __field(unsigned long, ino) 60938c8a9a5SSteve French __field(int, rc) 61038c8a9a5SSteve French ), 61138c8a9a5SSteve French TP_fast_assign( 61238c8a9a5SSteve French __entry->ino = ino; 61338c8a9a5SSteve French __entry->rc = rc; 61438c8a9a5SSteve French ), 61538c8a9a5SSteve French TP_printk("\tino=%lu rc=%d", 61638c8a9a5SSteve French __entry->ino, __entry->rc) 61738c8a9a5SSteve French ) 61838c8a9a5SSteve French 61938c8a9a5SSteve French #define DEFINE_SMB3_SYNC_ERR_EVENT(name) \ 62038c8a9a5SSteve French DEFINE_EVENT(smb3_sync_err_class, cifs_##name, \ 62138c8a9a5SSteve French TP_PROTO(unsigned long ino, \ 62238c8a9a5SSteve French int rc), \ 62338c8a9a5SSteve French TP_ARGS(ino, rc)) 62438c8a9a5SSteve French 62538c8a9a5SSteve French DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err); 62638c8a9a5SSteve French DEFINE_SMB3_SYNC_ERR_EVENT(flush_err); 62738c8a9a5SSteve French 62838c8a9a5SSteve French 62938c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_enter_exit_class, 63038c8a9a5SSteve French TP_PROTO(unsigned int xid, 63138c8a9a5SSteve French const char *func_name), 63238c8a9a5SSteve French TP_ARGS(xid, func_name), 63338c8a9a5SSteve French TP_STRUCT__entry( 63438c8a9a5SSteve French __field(unsigned int, xid) 63538c8a9a5SSteve French __string(func_name, func_name) 63638c8a9a5SSteve French ), 63738c8a9a5SSteve French TP_fast_assign( 63838c8a9a5SSteve French __entry->xid = xid; 63938c8a9a5SSteve French __assign_str(func_name, func_name); 64038c8a9a5SSteve French ), 64138c8a9a5SSteve French TP_printk("\t%s: xid=%u", 64238c8a9a5SSteve French __get_str(func_name), __entry->xid) 64338c8a9a5SSteve French ) 64438c8a9a5SSteve French 64538c8a9a5SSteve French #define DEFINE_SMB3_ENTER_EXIT_EVENT(name) \ 64638c8a9a5SSteve French DEFINE_EVENT(smb3_enter_exit_class, smb3_##name, \ 64738c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 64838c8a9a5SSteve French const char *func_name), \ 64938c8a9a5SSteve French TP_ARGS(xid, func_name)) 65038c8a9a5SSteve French 65138c8a9a5SSteve French DEFINE_SMB3_ENTER_EXIT_EVENT(enter); 65238c8a9a5SSteve French DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done); 65338c8a9a5SSteve French 65438c8a9a5SSteve French /* 65538c8a9a5SSteve French * For SMB2/SMB3 tree connect 65638c8a9a5SSteve French */ 65738c8a9a5SSteve French 65838c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_tcon_class, 65938c8a9a5SSteve French TP_PROTO(unsigned int xid, 66038c8a9a5SSteve French __u32 tid, 66138c8a9a5SSteve French __u64 sesid, 66238c8a9a5SSteve French const char *unc_name, 66338c8a9a5SSteve French int rc), 66438c8a9a5SSteve French TP_ARGS(xid, tid, sesid, unc_name, rc), 66538c8a9a5SSteve French TP_STRUCT__entry( 66638c8a9a5SSteve French __field(unsigned int, xid) 66738c8a9a5SSteve French __field(__u32, tid) 66838c8a9a5SSteve French __field(__u64, sesid) 66938c8a9a5SSteve French __string(name, unc_name) 67038c8a9a5SSteve French __field(int, rc) 67138c8a9a5SSteve French ), 67238c8a9a5SSteve French TP_fast_assign( 67338c8a9a5SSteve French __entry->xid = xid; 67438c8a9a5SSteve French __entry->tid = tid; 67538c8a9a5SSteve French __entry->sesid = sesid; 67638c8a9a5SSteve French __assign_str(name, unc_name); 67738c8a9a5SSteve French __entry->rc = rc; 67838c8a9a5SSteve French ), 67938c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d", 68038c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, 68138c8a9a5SSteve French __get_str(name), __entry->rc) 68238c8a9a5SSteve French ) 68338c8a9a5SSteve French 68438c8a9a5SSteve French #define DEFINE_SMB3_TCON_EVENT(name) \ 68538c8a9a5SSteve French DEFINE_EVENT(smb3_tcon_class, smb3_##name, \ 68638c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 68738c8a9a5SSteve French __u32 tid, \ 68838c8a9a5SSteve French __u64 sesid, \ 68938c8a9a5SSteve French const char *unc_name, \ 69038c8a9a5SSteve French int rc), \ 69138c8a9a5SSteve French TP_ARGS(xid, tid, sesid, unc_name, rc)) 69238c8a9a5SSteve French 69338c8a9a5SSteve French DEFINE_SMB3_TCON_EVENT(tcon); 69438c8a9a5SSteve French 69538c8a9a5SSteve French 69638c8a9a5SSteve French /* 69738c8a9a5SSteve French * For smb2/smb3 open (including create and mkdir) calls 69838c8a9a5SSteve French */ 69938c8a9a5SSteve French 70038c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_open_enter_class, 70138c8a9a5SSteve French TP_PROTO(unsigned int xid, 70238c8a9a5SSteve French __u32 tid, 70338c8a9a5SSteve French __u64 sesid, 70438c8a9a5SSteve French const char *full_path, 70538c8a9a5SSteve French int create_options, 70638c8a9a5SSteve French int desired_access), 70738c8a9a5SSteve French TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access), 70838c8a9a5SSteve French TP_STRUCT__entry( 70938c8a9a5SSteve French __field(unsigned int, xid) 71038c8a9a5SSteve French __field(__u32, tid) 71138c8a9a5SSteve French __field(__u64, sesid) 71238c8a9a5SSteve French __string(path, full_path) 71338c8a9a5SSteve French __field(int, create_options) 71438c8a9a5SSteve French __field(int, desired_access) 71538c8a9a5SSteve French ), 71638c8a9a5SSteve French TP_fast_assign( 71738c8a9a5SSteve French __entry->xid = xid; 71838c8a9a5SSteve French __entry->tid = tid; 71938c8a9a5SSteve French __entry->sesid = sesid; 72038c8a9a5SSteve French __assign_str(path, full_path); 72138c8a9a5SSteve French __entry->create_options = create_options; 72238c8a9a5SSteve French __entry->desired_access = desired_access; 72338c8a9a5SSteve French ), 72438c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s cr_opts=0x%x des_access=0x%x", 72538c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __get_str(path), 72638c8a9a5SSteve French __entry->create_options, __entry->desired_access) 72738c8a9a5SSteve French ) 72838c8a9a5SSteve French 72938c8a9a5SSteve French #define DEFINE_SMB3_OPEN_ENTER_EVENT(name) \ 73038c8a9a5SSteve French DEFINE_EVENT(smb3_open_enter_class, smb3_##name, \ 73138c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 73238c8a9a5SSteve French __u32 tid, \ 73338c8a9a5SSteve French __u64 sesid, \ 73438c8a9a5SSteve French const char *full_path, \ 73538c8a9a5SSteve French int create_options, \ 73638c8a9a5SSteve French int desired_access), \ 73738c8a9a5SSteve French TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access)) 73838c8a9a5SSteve French 73938c8a9a5SSteve French DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter); 74038c8a9a5SSteve French DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter); 74138c8a9a5SSteve French 74238c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_open_err_class, 74338c8a9a5SSteve French TP_PROTO(unsigned int xid, 74438c8a9a5SSteve French __u32 tid, 74538c8a9a5SSteve French __u64 sesid, 74638c8a9a5SSteve French int create_options, 74738c8a9a5SSteve French int desired_access, 74838c8a9a5SSteve French int rc), 74938c8a9a5SSteve French TP_ARGS(xid, tid, sesid, create_options, desired_access, rc), 75038c8a9a5SSteve French TP_STRUCT__entry( 75138c8a9a5SSteve French __field(unsigned int, xid) 75238c8a9a5SSteve French __field(__u32, tid) 75338c8a9a5SSteve French __field(__u64, sesid) 75438c8a9a5SSteve French __field(int, create_options) 75538c8a9a5SSteve French __field(int, desired_access) 75638c8a9a5SSteve French __field(int, rc) 75738c8a9a5SSteve French ), 75838c8a9a5SSteve French TP_fast_assign( 75938c8a9a5SSteve French __entry->xid = xid; 76038c8a9a5SSteve French __entry->tid = tid; 76138c8a9a5SSteve French __entry->sesid = sesid; 76238c8a9a5SSteve French __entry->create_options = create_options; 76338c8a9a5SSteve French __entry->desired_access = desired_access; 76438c8a9a5SSteve French __entry->rc = rc; 76538c8a9a5SSteve French ), 76638c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d", 76738c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, 76838c8a9a5SSteve French __entry->create_options, __entry->desired_access, __entry->rc) 76938c8a9a5SSteve French ) 77038c8a9a5SSteve French 77138c8a9a5SSteve French #define DEFINE_SMB3_OPEN_ERR_EVENT(name) \ 77238c8a9a5SSteve French DEFINE_EVENT(smb3_open_err_class, smb3_##name, \ 77338c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 77438c8a9a5SSteve French __u32 tid, \ 77538c8a9a5SSteve French __u64 sesid, \ 77638c8a9a5SSteve French int create_options, \ 77738c8a9a5SSteve French int desired_access, \ 77838c8a9a5SSteve French int rc), \ 77938c8a9a5SSteve French TP_ARGS(xid, tid, sesid, create_options, desired_access, rc)) 78038c8a9a5SSteve French 78138c8a9a5SSteve French DEFINE_SMB3_OPEN_ERR_EVENT(open_err); 78238c8a9a5SSteve French DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err); 78338c8a9a5SSteve French 78438c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_open_done_class, 78538c8a9a5SSteve French TP_PROTO(unsigned int xid, 78638c8a9a5SSteve French __u64 fid, 78738c8a9a5SSteve French __u32 tid, 78838c8a9a5SSteve French __u64 sesid, 78938c8a9a5SSteve French int create_options, 79038c8a9a5SSteve French int desired_access), 79138c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, create_options, desired_access), 79238c8a9a5SSteve French TP_STRUCT__entry( 79338c8a9a5SSteve French __field(unsigned int, xid) 79438c8a9a5SSteve French __field(__u64, fid) 79538c8a9a5SSteve French __field(__u32, tid) 79638c8a9a5SSteve French __field(__u64, sesid) 79738c8a9a5SSteve French __field(int, create_options) 79838c8a9a5SSteve French __field(int, desired_access) 79938c8a9a5SSteve French ), 80038c8a9a5SSteve French TP_fast_assign( 80138c8a9a5SSteve French __entry->xid = xid; 80238c8a9a5SSteve French __entry->fid = fid; 80338c8a9a5SSteve French __entry->tid = tid; 80438c8a9a5SSteve French __entry->sesid = sesid; 80538c8a9a5SSteve French __entry->create_options = create_options; 80638c8a9a5SSteve French __entry->desired_access = desired_access; 80738c8a9a5SSteve French ), 80838c8a9a5SSteve French TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x", 80938c8a9a5SSteve French __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 81038c8a9a5SSteve French __entry->create_options, __entry->desired_access) 81138c8a9a5SSteve French ) 81238c8a9a5SSteve French 81338c8a9a5SSteve French #define DEFINE_SMB3_OPEN_DONE_EVENT(name) \ 81438c8a9a5SSteve French DEFINE_EVENT(smb3_open_done_class, smb3_##name, \ 81538c8a9a5SSteve French TP_PROTO(unsigned int xid, \ 81638c8a9a5SSteve French __u64 fid, \ 81738c8a9a5SSteve French __u32 tid, \ 81838c8a9a5SSteve French __u64 sesid, \ 81938c8a9a5SSteve French int create_options, \ 82038c8a9a5SSteve French int desired_access), \ 82138c8a9a5SSteve French TP_ARGS(xid, fid, tid, sesid, create_options, desired_access)) 82238c8a9a5SSteve French 82338c8a9a5SSteve French DEFINE_SMB3_OPEN_DONE_EVENT(open_done); 82438c8a9a5SSteve French DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done); 82538c8a9a5SSteve French 82638c8a9a5SSteve French 82738c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_lease_done_class, 82838c8a9a5SSteve French TP_PROTO(__u32 lease_state, 82938c8a9a5SSteve French __u32 tid, 83038c8a9a5SSteve French __u64 sesid, 83138c8a9a5SSteve French __u64 lease_key_low, 83238c8a9a5SSteve French __u64 lease_key_high), 83338c8a9a5SSteve French TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high), 83438c8a9a5SSteve French TP_STRUCT__entry( 83538c8a9a5SSteve French __field(__u32, lease_state) 83638c8a9a5SSteve French __field(__u32, tid) 83738c8a9a5SSteve French __field(__u64, sesid) 83838c8a9a5SSteve French __field(__u64, lease_key_low) 83938c8a9a5SSteve French __field(__u64, lease_key_high) 84038c8a9a5SSteve French ), 84138c8a9a5SSteve French TP_fast_assign( 84238c8a9a5SSteve French __entry->lease_state = lease_state; 84338c8a9a5SSteve French __entry->tid = tid; 84438c8a9a5SSteve French __entry->sesid = sesid; 84538c8a9a5SSteve French __entry->lease_key_low = lease_key_low; 84638c8a9a5SSteve French __entry->lease_key_high = lease_key_high; 84738c8a9a5SSteve French ), 84838c8a9a5SSteve French TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x", 84938c8a9a5SSteve French __entry->sesid, __entry->tid, __entry->lease_key_high, 85038c8a9a5SSteve French __entry->lease_key_low, __entry->lease_state) 85138c8a9a5SSteve French ) 85238c8a9a5SSteve French 85338c8a9a5SSteve French #define DEFINE_SMB3_LEASE_DONE_EVENT(name) \ 85438c8a9a5SSteve French DEFINE_EVENT(smb3_lease_done_class, smb3_##name, \ 85538c8a9a5SSteve French TP_PROTO(__u32 lease_state, \ 85638c8a9a5SSteve French __u32 tid, \ 85738c8a9a5SSteve French __u64 sesid, \ 85838c8a9a5SSteve French __u64 lease_key_low, \ 85938c8a9a5SSteve French __u64 lease_key_high), \ 86038c8a9a5SSteve French TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high)) 86138c8a9a5SSteve French 86238c8a9a5SSteve French DEFINE_SMB3_LEASE_DONE_EVENT(lease_done); 86338c8a9a5SSteve French DEFINE_SMB3_LEASE_DONE_EVENT(lease_not_found); 86438c8a9a5SSteve French 86538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_lease_err_class, 86638c8a9a5SSteve French TP_PROTO(__u32 lease_state, 86738c8a9a5SSteve French __u32 tid, 86838c8a9a5SSteve French __u64 sesid, 86938c8a9a5SSteve French __u64 lease_key_low, 87038c8a9a5SSteve French __u64 lease_key_high, 87138c8a9a5SSteve French int rc), 87238c8a9a5SSteve French TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc), 87338c8a9a5SSteve French TP_STRUCT__entry( 87438c8a9a5SSteve French __field(__u32, lease_state) 87538c8a9a5SSteve French __field(__u32, tid) 87638c8a9a5SSteve French __field(__u64, sesid) 87738c8a9a5SSteve French __field(__u64, lease_key_low) 87838c8a9a5SSteve French __field(__u64, lease_key_high) 87938c8a9a5SSteve French __field(int, rc) 88038c8a9a5SSteve French ), 88138c8a9a5SSteve French TP_fast_assign( 88238c8a9a5SSteve French __entry->lease_state = lease_state; 88338c8a9a5SSteve French __entry->tid = tid; 88438c8a9a5SSteve French __entry->sesid = sesid; 88538c8a9a5SSteve French __entry->lease_key_low = lease_key_low; 88638c8a9a5SSteve French __entry->lease_key_high = lease_key_high; 88738c8a9a5SSteve French __entry->rc = rc; 88838c8a9a5SSteve French ), 88938c8a9a5SSteve French TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d", 89038c8a9a5SSteve French __entry->sesid, __entry->tid, __entry->lease_key_high, 89138c8a9a5SSteve French __entry->lease_key_low, __entry->lease_state, __entry->rc) 89238c8a9a5SSteve French ) 89338c8a9a5SSteve French 89438c8a9a5SSteve French #define DEFINE_SMB3_LEASE_ERR_EVENT(name) \ 89538c8a9a5SSteve French DEFINE_EVENT(smb3_lease_err_class, smb3_##name, \ 89638c8a9a5SSteve French TP_PROTO(__u32 lease_state, \ 89738c8a9a5SSteve French __u32 tid, \ 89838c8a9a5SSteve French __u64 sesid, \ 89938c8a9a5SSteve French __u64 lease_key_low, \ 90038c8a9a5SSteve French __u64 lease_key_high, \ 90138c8a9a5SSteve French int rc), \ 90238c8a9a5SSteve French TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc)) 90338c8a9a5SSteve French 90438c8a9a5SSteve French DEFINE_SMB3_LEASE_ERR_EVENT(lease_err); 90538c8a9a5SSteve French 90638c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_connect_class, 90738c8a9a5SSteve French TP_PROTO(char *hostname, 90838c8a9a5SSteve French __u64 conn_id, 90938c8a9a5SSteve French const struct __kernel_sockaddr_storage *dst_addr), 91038c8a9a5SSteve French TP_ARGS(hostname, conn_id, dst_addr), 91138c8a9a5SSteve French TP_STRUCT__entry( 91238c8a9a5SSteve French __string(hostname, hostname) 91338c8a9a5SSteve French __field(__u64, conn_id) 91438c8a9a5SSteve French __array(__u8, dst_addr, sizeof(struct sockaddr_storage)) 91538c8a9a5SSteve French ), 91638c8a9a5SSteve French TP_fast_assign( 91738c8a9a5SSteve French struct sockaddr_storage *pss = NULL; 91838c8a9a5SSteve French 91938c8a9a5SSteve French __entry->conn_id = conn_id; 92038c8a9a5SSteve French pss = (struct sockaddr_storage *)__entry->dst_addr; 92138c8a9a5SSteve French *pss = *dst_addr; 92238c8a9a5SSteve French __assign_str(hostname, hostname); 92338c8a9a5SSteve French ), 92438c8a9a5SSteve French TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc", 92538c8a9a5SSteve French __entry->conn_id, 92638c8a9a5SSteve French __get_str(hostname), 92738c8a9a5SSteve French __entry->dst_addr) 92838c8a9a5SSteve French ) 92938c8a9a5SSteve French 93038c8a9a5SSteve French #define DEFINE_SMB3_CONNECT_EVENT(name) \ 93138c8a9a5SSteve French DEFINE_EVENT(smb3_connect_class, smb3_##name, \ 93238c8a9a5SSteve French TP_PROTO(char *hostname, \ 93338c8a9a5SSteve French __u64 conn_id, \ 93438c8a9a5SSteve French const struct __kernel_sockaddr_storage *addr), \ 93538c8a9a5SSteve French TP_ARGS(hostname, conn_id, addr)) 93638c8a9a5SSteve French 93738c8a9a5SSteve French DEFINE_SMB3_CONNECT_EVENT(connect_done); 93838c8a9a5SSteve French 93938c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_connect_err_class, 94038c8a9a5SSteve French TP_PROTO(char *hostname, __u64 conn_id, 94138c8a9a5SSteve French const struct __kernel_sockaddr_storage *dst_addr, int rc), 94238c8a9a5SSteve French TP_ARGS(hostname, conn_id, dst_addr, rc), 94338c8a9a5SSteve French TP_STRUCT__entry( 94438c8a9a5SSteve French __string(hostname, hostname) 94538c8a9a5SSteve French __field(__u64, conn_id) 94638c8a9a5SSteve French __array(__u8, dst_addr, sizeof(struct sockaddr_storage)) 94738c8a9a5SSteve French __field(int, rc) 94838c8a9a5SSteve French ), 94938c8a9a5SSteve French TP_fast_assign( 95038c8a9a5SSteve French struct sockaddr_storage *pss = NULL; 95138c8a9a5SSteve French 95238c8a9a5SSteve French __entry->conn_id = conn_id; 95338c8a9a5SSteve French __entry->rc = rc; 95438c8a9a5SSteve French pss = (struct sockaddr_storage *)__entry->dst_addr; 95538c8a9a5SSteve French *pss = *dst_addr; 95638c8a9a5SSteve French __assign_str(hostname, hostname); 95738c8a9a5SSteve French ), 95838c8a9a5SSteve French TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc", 95938c8a9a5SSteve French __entry->rc, 96038c8a9a5SSteve French __entry->conn_id, 96138c8a9a5SSteve French __get_str(hostname), 96238c8a9a5SSteve French __entry->dst_addr) 96338c8a9a5SSteve French ) 96438c8a9a5SSteve French 96538c8a9a5SSteve French #define DEFINE_SMB3_CONNECT_ERR_EVENT(name) \ 96638c8a9a5SSteve French DEFINE_EVENT(smb3_connect_err_class, smb3_##name, \ 96738c8a9a5SSteve French TP_PROTO(char *hostname, \ 96838c8a9a5SSteve French __u64 conn_id, \ 96938c8a9a5SSteve French const struct __kernel_sockaddr_storage *addr, \ 97038c8a9a5SSteve French int rc), \ 97138c8a9a5SSteve French TP_ARGS(hostname, conn_id, addr, rc)) 97238c8a9a5SSteve French 97338c8a9a5SSteve French DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err); 97438c8a9a5SSteve French 97538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_reconnect_class, 97638c8a9a5SSteve French TP_PROTO(__u64 currmid, 97738c8a9a5SSteve French __u64 conn_id, 97838c8a9a5SSteve French char *hostname), 97938c8a9a5SSteve French TP_ARGS(currmid, conn_id, hostname), 98038c8a9a5SSteve French TP_STRUCT__entry( 98138c8a9a5SSteve French __field(__u64, currmid) 98238c8a9a5SSteve French __field(__u64, conn_id) 98338c8a9a5SSteve French __string(hostname, hostname) 98438c8a9a5SSteve French ), 98538c8a9a5SSteve French TP_fast_assign( 98638c8a9a5SSteve French __entry->currmid = currmid; 98738c8a9a5SSteve French __entry->conn_id = conn_id; 98838c8a9a5SSteve French __assign_str(hostname, hostname); 98938c8a9a5SSteve French ), 99038c8a9a5SSteve French TP_printk("conn_id=0x%llx server=%s current_mid=%llu", 99138c8a9a5SSteve French __entry->conn_id, 99238c8a9a5SSteve French __get_str(hostname), 99338c8a9a5SSteve French __entry->currmid) 99438c8a9a5SSteve French ) 99538c8a9a5SSteve French 99638c8a9a5SSteve French #define DEFINE_SMB3_RECONNECT_EVENT(name) \ 99738c8a9a5SSteve French DEFINE_EVENT(smb3_reconnect_class, smb3_##name, \ 99838c8a9a5SSteve French TP_PROTO(__u64 currmid, \ 99938c8a9a5SSteve French __u64 conn_id, \ 100038c8a9a5SSteve French char *hostname), \ 100138c8a9a5SSteve French TP_ARGS(currmid, conn_id, hostname)) 100238c8a9a5SSteve French 100338c8a9a5SSteve French DEFINE_SMB3_RECONNECT_EVENT(reconnect); 100438c8a9a5SSteve French DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect); 100538c8a9a5SSteve French 1006*61986a58SShyam Prasad N DECLARE_EVENT_CLASS(smb3_ses_class, 1007*61986a58SShyam Prasad N TP_PROTO(__u64 sesid), 1008*61986a58SShyam Prasad N TP_ARGS(sesid), 1009*61986a58SShyam Prasad N TP_STRUCT__entry( 1010*61986a58SShyam Prasad N __field(__u64, sesid) 1011*61986a58SShyam Prasad N ), 1012*61986a58SShyam Prasad N TP_fast_assign( 1013*61986a58SShyam Prasad N __entry->sesid = sesid; 1014*61986a58SShyam Prasad N ), 1015*61986a58SShyam Prasad N TP_printk("sid=0x%llx", 1016*61986a58SShyam Prasad N __entry->sesid) 1017*61986a58SShyam Prasad N ) 1018*61986a58SShyam Prasad N 1019*61986a58SShyam Prasad N #define DEFINE_SMB3_SES_EVENT(name) \ 1020*61986a58SShyam Prasad N DEFINE_EVENT(smb3_ses_class, smb3_##name, \ 1021*61986a58SShyam Prasad N TP_PROTO(__u64 sesid), \ 1022*61986a58SShyam Prasad N TP_ARGS(sesid)) 1023*61986a58SShyam Prasad N 1024*61986a58SShyam Prasad N DEFINE_SMB3_SES_EVENT(ses_not_found); 1025*61986a58SShyam Prasad N 102638c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_credit_class, 102738c8a9a5SSteve French TP_PROTO(__u64 currmid, 102838c8a9a5SSteve French __u64 conn_id, 102938c8a9a5SSteve French char *hostname, 103038c8a9a5SSteve French int credits, 103138c8a9a5SSteve French int credits_to_add, 103238c8a9a5SSteve French int in_flight), 103338c8a9a5SSteve French TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight), 103438c8a9a5SSteve French TP_STRUCT__entry( 103538c8a9a5SSteve French __field(__u64, currmid) 103638c8a9a5SSteve French __field(__u64, conn_id) 103738c8a9a5SSteve French __string(hostname, hostname) 103838c8a9a5SSteve French __field(int, credits) 103938c8a9a5SSteve French __field(int, credits_to_add) 104038c8a9a5SSteve French __field(int, in_flight) 104138c8a9a5SSteve French ), 104238c8a9a5SSteve French TP_fast_assign( 104338c8a9a5SSteve French __entry->currmid = currmid; 104438c8a9a5SSteve French __entry->conn_id = conn_id; 104538c8a9a5SSteve French __assign_str(hostname, hostname); 104638c8a9a5SSteve French __entry->credits = credits; 104738c8a9a5SSteve French __entry->credits_to_add = credits_to_add; 104838c8a9a5SSteve French __entry->in_flight = in_flight; 104938c8a9a5SSteve French ), 105038c8a9a5SSteve French TP_printk("conn_id=0x%llx server=%s current_mid=%llu " 105138c8a9a5SSteve French "credits=%d credit_change=%d in_flight=%d", 105238c8a9a5SSteve French __entry->conn_id, 105338c8a9a5SSteve French __get_str(hostname), 105438c8a9a5SSteve French __entry->currmid, 105538c8a9a5SSteve French __entry->credits, 105638c8a9a5SSteve French __entry->credits_to_add, 105738c8a9a5SSteve French __entry->in_flight) 105838c8a9a5SSteve French ) 105938c8a9a5SSteve French 106038c8a9a5SSteve French #define DEFINE_SMB3_CREDIT_EVENT(name) \ 106138c8a9a5SSteve French DEFINE_EVENT(smb3_credit_class, smb3_##name, \ 106238c8a9a5SSteve French TP_PROTO(__u64 currmid, \ 106338c8a9a5SSteve French __u64 conn_id, \ 106438c8a9a5SSteve French char *hostname, \ 106538c8a9a5SSteve French int credits, \ 106638c8a9a5SSteve French int credits_to_add, \ 106738c8a9a5SSteve French int in_flight), \ 106838c8a9a5SSteve French TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight)) 106938c8a9a5SSteve French 107038c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits); 107138c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(reconnect_detected); 107238c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(credit_timeout); 107338c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(insufficient_credits); 107438c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(too_many_credits); 107538c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(add_credits); 107638c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(adj_credits); 107738c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(hdr_credits); 107838c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(nblk_credits); 107938c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(pend_credits); 108038c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(wait_credits); 108138c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(waitff_credits); 108238c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(overflow_credits); 108338c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(set_credits); 108438c8a9a5SSteve French 108538c8a9a5SSteve French #endif /* _CIFS_TRACE_H */ 108638c8a9a5SSteve French 108738c8a9a5SSteve French #undef TRACE_INCLUDE_PATH 108838c8a9a5SSteve French #define TRACE_INCLUDE_PATH . 108938c8a9a5SSteve French #define TRACE_INCLUDE_FILE trace 109038c8a9a5SSteve French #include <trace/define_trace.h> 1091