1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (C) 2018, Microsoft Corporation. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Author(s): Steve French <stfrench@microsoft.com> 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun #undef TRACE_SYSTEM 8*4882a593Smuzhiyun #define TRACE_SYSTEM cifs 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #if !defined(_CIFS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 11*4882a593Smuzhiyun #define _CIFS_TRACE_H 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #include <linux/tracepoint.h> 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /* For logging errors in read or write */ 16*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_rw_err_class, 17*4882a593Smuzhiyun TP_PROTO(unsigned int xid, 18*4882a593Smuzhiyun __u64 fid, 19*4882a593Smuzhiyun __u32 tid, 20*4882a593Smuzhiyun __u64 sesid, 21*4882a593Smuzhiyun __u64 offset, 22*4882a593Smuzhiyun __u32 len, 23*4882a593Smuzhiyun int rc), 24*4882a593Smuzhiyun TP_ARGS(xid, fid, tid, sesid, offset, len, rc), 25*4882a593Smuzhiyun TP_STRUCT__entry( 26*4882a593Smuzhiyun __field(unsigned int, xid) 27*4882a593Smuzhiyun __field(__u64, fid) 28*4882a593Smuzhiyun __field(__u32, tid) 29*4882a593Smuzhiyun __field(__u64, sesid) 30*4882a593Smuzhiyun __field(__u64, offset) 31*4882a593Smuzhiyun __field(__u32, len) 32*4882a593Smuzhiyun __field(int, rc) 33*4882a593Smuzhiyun ), 34*4882a593Smuzhiyun TP_fast_assign( 35*4882a593Smuzhiyun __entry->xid = xid; 36*4882a593Smuzhiyun __entry->fid = fid; 37*4882a593Smuzhiyun __entry->tid = tid; 38*4882a593Smuzhiyun __entry->sesid = sesid; 39*4882a593Smuzhiyun __entry->offset = offset; 40*4882a593Smuzhiyun __entry->len = len; 41*4882a593Smuzhiyun __entry->rc = rc; 42*4882a593Smuzhiyun ), 43*4882a593Smuzhiyun TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d", 44*4882a593Smuzhiyun __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 45*4882a593Smuzhiyun __entry->offset, __entry->len, __entry->rc) 46*4882a593Smuzhiyun ) 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun #define DEFINE_SMB3_RW_ERR_EVENT(name) \ 49*4882a593Smuzhiyun DEFINE_EVENT(smb3_rw_err_class, smb3_##name, \ 50*4882a593Smuzhiyun TP_PROTO(unsigned int xid, \ 51*4882a593Smuzhiyun __u64 fid, \ 52*4882a593Smuzhiyun __u32 tid, \ 53*4882a593Smuzhiyun __u64 sesid, \ 54*4882a593Smuzhiyun __u64 offset, \ 55*4882a593Smuzhiyun __u32 len, \ 56*4882a593Smuzhiyun int rc), \ 57*4882a593Smuzhiyun TP_ARGS(xid, fid, tid, sesid, offset, len, rc)) 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun DEFINE_SMB3_RW_ERR_EVENT(write_err); 60*4882a593Smuzhiyun DEFINE_SMB3_RW_ERR_EVENT(read_err); 61*4882a593Smuzhiyun DEFINE_SMB3_RW_ERR_EVENT(query_dir_err); 62*4882a593Smuzhiyun DEFINE_SMB3_RW_ERR_EVENT(zero_err); 63*4882a593Smuzhiyun DEFINE_SMB3_RW_ERR_EVENT(falloc_err); 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun /* For logging successful read or write */ 67*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_rw_done_class, 68*4882a593Smuzhiyun TP_PROTO(unsigned int xid, 69*4882a593Smuzhiyun __u64 fid, 70*4882a593Smuzhiyun __u32 tid, 71*4882a593Smuzhiyun __u64 sesid, 72*4882a593Smuzhiyun __u64 offset, 73*4882a593Smuzhiyun __u32 len), 74*4882a593Smuzhiyun TP_ARGS(xid, fid, tid, sesid, offset, len), 75*4882a593Smuzhiyun TP_STRUCT__entry( 76*4882a593Smuzhiyun __field(unsigned int, xid) 77*4882a593Smuzhiyun __field(__u64, fid) 78*4882a593Smuzhiyun __field(__u32, tid) 79*4882a593Smuzhiyun __field(__u64, sesid) 80*4882a593Smuzhiyun __field(__u64, offset) 81*4882a593Smuzhiyun __field(__u32, len) 82*4882a593Smuzhiyun ), 83*4882a593Smuzhiyun TP_fast_assign( 84*4882a593Smuzhiyun __entry->xid = xid; 85*4882a593Smuzhiyun __entry->fid = fid; 86*4882a593Smuzhiyun __entry->tid = tid; 87*4882a593Smuzhiyun __entry->sesid = sesid; 88*4882a593Smuzhiyun __entry->offset = offset; 89*4882a593Smuzhiyun __entry->len = len; 90*4882a593Smuzhiyun ), 91*4882a593Smuzhiyun TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x", 92*4882a593Smuzhiyun __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 93*4882a593Smuzhiyun __entry->offset, __entry->len) 94*4882a593Smuzhiyun ) 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun #define DEFINE_SMB3_RW_DONE_EVENT(name) \ 97*4882a593Smuzhiyun DEFINE_EVENT(smb3_rw_done_class, smb3_##name, \ 98*4882a593Smuzhiyun TP_PROTO(unsigned int xid, \ 99*4882a593Smuzhiyun __u64 fid, \ 100*4882a593Smuzhiyun __u32 tid, \ 101*4882a593Smuzhiyun __u64 sesid, \ 102*4882a593Smuzhiyun __u64 offset, \ 103*4882a593Smuzhiyun __u32 len), \ 104*4882a593Smuzhiyun TP_ARGS(xid, fid, tid, sesid, offset, len)) 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun DEFINE_SMB3_RW_DONE_EVENT(write_enter); 107*4882a593Smuzhiyun DEFINE_SMB3_RW_DONE_EVENT(read_enter); 108*4882a593Smuzhiyun DEFINE_SMB3_RW_DONE_EVENT(query_dir_enter); 109*4882a593Smuzhiyun DEFINE_SMB3_RW_DONE_EVENT(zero_enter); 110*4882a593Smuzhiyun DEFINE_SMB3_RW_DONE_EVENT(falloc_enter); 111*4882a593Smuzhiyun DEFINE_SMB3_RW_DONE_EVENT(write_done); 112*4882a593Smuzhiyun DEFINE_SMB3_RW_DONE_EVENT(read_done); 113*4882a593Smuzhiyun DEFINE_SMB3_RW_DONE_EVENT(query_dir_done); 114*4882a593Smuzhiyun DEFINE_SMB3_RW_DONE_EVENT(zero_done); 115*4882a593Smuzhiyun DEFINE_SMB3_RW_DONE_EVENT(falloc_done); 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun /* 118*4882a593Smuzhiyun * For handle based calls other than read and write, and get/set info 119*4882a593Smuzhiyun */ 120*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_fd_class, 121*4882a593Smuzhiyun TP_PROTO(unsigned int xid, 122*4882a593Smuzhiyun __u64 fid, 123*4882a593Smuzhiyun __u32 tid, 124*4882a593Smuzhiyun __u64 sesid), 125*4882a593Smuzhiyun TP_ARGS(xid, fid, tid, sesid), 126*4882a593Smuzhiyun TP_STRUCT__entry( 127*4882a593Smuzhiyun __field(unsigned int, xid) 128*4882a593Smuzhiyun __field(__u64, fid) 129*4882a593Smuzhiyun __field(__u32, tid) 130*4882a593Smuzhiyun __field(__u64, sesid) 131*4882a593Smuzhiyun ), 132*4882a593Smuzhiyun TP_fast_assign( 133*4882a593Smuzhiyun __entry->xid = xid; 134*4882a593Smuzhiyun __entry->fid = fid; 135*4882a593Smuzhiyun __entry->tid = tid; 136*4882a593Smuzhiyun __entry->sesid = sesid; 137*4882a593Smuzhiyun ), 138*4882a593Smuzhiyun TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx", 139*4882a593Smuzhiyun __entry->xid, __entry->sesid, __entry->tid, __entry->fid) 140*4882a593Smuzhiyun ) 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun #define DEFINE_SMB3_FD_EVENT(name) \ 143*4882a593Smuzhiyun DEFINE_EVENT(smb3_fd_class, smb3_##name, \ 144*4882a593Smuzhiyun TP_PROTO(unsigned int xid, \ 145*4882a593Smuzhiyun __u64 fid, \ 146*4882a593Smuzhiyun __u32 tid, \ 147*4882a593Smuzhiyun __u64 sesid), \ 148*4882a593Smuzhiyun TP_ARGS(xid, fid, tid, sesid)) 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun DEFINE_SMB3_FD_EVENT(flush_enter); 151*4882a593Smuzhiyun DEFINE_SMB3_FD_EVENT(flush_done); 152*4882a593Smuzhiyun DEFINE_SMB3_FD_EVENT(close_enter); 153*4882a593Smuzhiyun DEFINE_SMB3_FD_EVENT(close_done); 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_fd_err_class, 156*4882a593Smuzhiyun TP_PROTO(unsigned int xid, 157*4882a593Smuzhiyun __u64 fid, 158*4882a593Smuzhiyun __u32 tid, 159*4882a593Smuzhiyun __u64 sesid, 160*4882a593Smuzhiyun int rc), 161*4882a593Smuzhiyun TP_ARGS(xid, fid, tid, sesid, rc), 162*4882a593Smuzhiyun TP_STRUCT__entry( 163*4882a593Smuzhiyun __field(unsigned int, xid) 164*4882a593Smuzhiyun __field(__u64, fid) 165*4882a593Smuzhiyun __field(__u32, tid) 166*4882a593Smuzhiyun __field(__u64, sesid) 167*4882a593Smuzhiyun __field(int, rc) 168*4882a593Smuzhiyun ), 169*4882a593Smuzhiyun TP_fast_assign( 170*4882a593Smuzhiyun __entry->xid = xid; 171*4882a593Smuzhiyun __entry->fid = fid; 172*4882a593Smuzhiyun __entry->tid = tid; 173*4882a593Smuzhiyun __entry->sesid = sesid; 174*4882a593Smuzhiyun __entry->rc = rc; 175*4882a593Smuzhiyun ), 176*4882a593Smuzhiyun TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d", 177*4882a593Smuzhiyun __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 178*4882a593Smuzhiyun __entry->rc) 179*4882a593Smuzhiyun ) 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun #define DEFINE_SMB3_FD_ERR_EVENT(name) \ 182*4882a593Smuzhiyun DEFINE_EVENT(smb3_fd_err_class, smb3_##name, \ 183*4882a593Smuzhiyun TP_PROTO(unsigned int xid, \ 184*4882a593Smuzhiyun __u64 fid, \ 185*4882a593Smuzhiyun __u32 tid, \ 186*4882a593Smuzhiyun __u64 sesid, \ 187*4882a593Smuzhiyun int rc), \ 188*4882a593Smuzhiyun TP_ARGS(xid, fid, tid, sesid, rc)) 189*4882a593Smuzhiyun 190*4882a593Smuzhiyun DEFINE_SMB3_FD_ERR_EVENT(flush_err); 191*4882a593Smuzhiyun DEFINE_SMB3_FD_ERR_EVENT(lock_err); 192*4882a593Smuzhiyun DEFINE_SMB3_FD_ERR_EVENT(close_err); 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun /* 195*4882a593Smuzhiyun * For handle based query/set info calls 196*4882a593Smuzhiyun */ 197*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_inf_enter_class, 198*4882a593Smuzhiyun TP_PROTO(unsigned int xid, 199*4882a593Smuzhiyun __u64 fid, 200*4882a593Smuzhiyun __u32 tid, 201*4882a593Smuzhiyun __u64 sesid, 202*4882a593Smuzhiyun __u8 infclass, 203*4882a593Smuzhiyun __u32 type), 204*4882a593Smuzhiyun TP_ARGS(xid, fid, tid, sesid, infclass, type), 205*4882a593Smuzhiyun TP_STRUCT__entry( 206*4882a593Smuzhiyun __field(unsigned int, xid) 207*4882a593Smuzhiyun __field(__u64, fid) 208*4882a593Smuzhiyun __field(__u32, tid) 209*4882a593Smuzhiyun __field(__u64, sesid) 210*4882a593Smuzhiyun __field(__u8, infclass) 211*4882a593Smuzhiyun __field(__u32, type) 212*4882a593Smuzhiyun ), 213*4882a593Smuzhiyun TP_fast_assign( 214*4882a593Smuzhiyun __entry->xid = xid; 215*4882a593Smuzhiyun __entry->fid = fid; 216*4882a593Smuzhiyun __entry->tid = tid; 217*4882a593Smuzhiyun __entry->sesid = sesid; 218*4882a593Smuzhiyun __entry->infclass = infclass; 219*4882a593Smuzhiyun __entry->type = type; 220*4882a593Smuzhiyun ), 221*4882a593Smuzhiyun TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x", 222*4882a593Smuzhiyun __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 223*4882a593Smuzhiyun __entry->infclass, __entry->type) 224*4882a593Smuzhiyun ) 225*4882a593Smuzhiyun 226*4882a593Smuzhiyun #define DEFINE_SMB3_INF_ENTER_EVENT(name) \ 227*4882a593Smuzhiyun DEFINE_EVENT(smb3_inf_enter_class, smb3_##name, \ 228*4882a593Smuzhiyun TP_PROTO(unsigned int xid, \ 229*4882a593Smuzhiyun __u64 fid, \ 230*4882a593Smuzhiyun __u32 tid, \ 231*4882a593Smuzhiyun __u64 sesid, \ 232*4882a593Smuzhiyun __u8 infclass, \ 233*4882a593Smuzhiyun __u32 type), \ 234*4882a593Smuzhiyun TP_ARGS(xid, fid, tid, sesid, infclass, type)) 235*4882a593Smuzhiyun 236*4882a593Smuzhiyun DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter); 237*4882a593Smuzhiyun DEFINE_SMB3_INF_ENTER_EVENT(query_info_done); 238*4882a593Smuzhiyun DEFINE_SMB3_INF_ENTER_EVENT(notify_enter); 239*4882a593Smuzhiyun DEFINE_SMB3_INF_ENTER_EVENT(notify_done); 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_inf_err_class, 242*4882a593Smuzhiyun TP_PROTO(unsigned int xid, 243*4882a593Smuzhiyun __u64 fid, 244*4882a593Smuzhiyun __u32 tid, 245*4882a593Smuzhiyun __u64 sesid, 246*4882a593Smuzhiyun __u8 infclass, 247*4882a593Smuzhiyun __u32 type, 248*4882a593Smuzhiyun int rc), 249*4882a593Smuzhiyun TP_ARGS(xid, fid, tid, sesid, infclass, type, rc), 250*4882a593Smuzhiyun TP_STRUCT__entry( 251*4882a593Smuzhiyun __field(unsigned int, xid) 252*4882a593Smuzhiyun __field(__u64, fid) 253*4882a593Smuzhiyun __field(__u32, tid) 254*4882a593Smuzhiyun __field(__u64, sesid) 255*4882a593Smuzhiyun __field(__u8, infclass) 256*4882a593Smuzhiyun __field(__u32, type) 257*4882a593Smuzhiyun __field(int, rc) 258*4882a593Smuzhiyun ), 259*4882a593Smuzhiyun TP_fast_assign( 260*4882a593Smuzhiyun __entry->xid = xid; 261*4882a593Smuzhiyun __entry->fid = fid; 262*4882a593Smuzhiyun __entry->tid = tid; 263*4882a593Smuzhiyun __entry->sesid = sesid; 264*4882a593Smuzhiyun __entry->infclass = infclass; 265*4882a593Smuzhiyun __entry->type = type; 266*4882a593Smuzhiyun __entry->rc = rc; 267*4882a593Smuzhiyun ), 268*4882a593Smuzhiyun TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d", 269*4882a593Smuzhiyun __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 270*4882a593Smuzhiyun __entry->infclass, __entry->type, __entry->rc) 271*4882a593Smuzhiyun ) 272*4882a593Smuzhiyun 273*4882a593Smuzhiyun #define DEFINE_SMB3_INF_ERR_EVENT(name) \ 274*4882a593Smuzhiyun DEFINE_EVENT(smb3_inf_err_class, smb3_##name, \ 275*4882a593Smuzhiyun TP_PROTO(unsigned int xid, \ 276*4882a593Smuzhiyun __u64 fid, \ 277*4882a593Smuzhiyun __u32 tid, \ 278*4882a593Smuzhiyun __u64 sesid, \ 279*4882a593Smuzhiyun __u8 infclass, \ 280*4882a593Smuzhiyun __u32 type, \ 281*4882a593Smuzhiyun int rc), \ 282*4882a593Smuzhiyun TP_ARGS(xid, fid, tid, sesid, infclass, type, rc)) 283*4882a593Smuzhiyun 284*4882a593Smuzhiyun DEFINE_SMB3_INF_ERR_EVENT(query_info_err); 285*4882a593Smuzhiyun DEFINE_SMB3_INF_ERR_EVENT(set_info_err); 286*4882a593Smuzhiyun DEFINE_SMB3_INF_ERR_EVENT(notify_err); 287*4882a593Smuzhiyun DEFINE_SMB3_INF_ERR_EVENT(fsctl_err); 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class, 290*4882a593Smuzhiyun TP_PROTO(unsigned int xid, 291*4882a593Smuzhiyun __u32 tid, 292*4882a593Smuzhiyun __u64 sesid, 293*4882a593Smuzhiyun const char *full_path), 294*4882a593Smuzhiyun TP_ARGS(xid, tid, sesid, full_path), 295*4882a593Smuzhiyun TP_STRUCT__entry( 296*4882a593Smuzhiyun __field(unsigned int, xid) 297*4882a593Smuzhiyun __field(__u32, tid) 298*4882a593Smuzhiyun __field(__u64, sesid) 299*4882a593Smuzhiyun __string(path, full_path) 300*4882a593Smuzhiyun ), 301*4882a593Smuzhiyun TP_fast_assign( 302*4882a593Smuzhiyun __entry->xid = xid; 303*4882a593Smuzhiyun __entry->tid = tid; 304*4882a593Smuzhiyun __entry->sesid = sesid; 305*4882a593Smuzhiyun __assign_str(path, full_path); 306*4882a593Smuzhiyun ), 307*4882a593Smuzhiyun TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s", 308*4882a593Smuzhiyun __entry->xid, __entry->sesid, __entry->tid, 309*4882a593Smuzhiyun __get_str(path)) 310*4882a593Smuzhiyun ) 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun #define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name) \ 313*4882a593Smuzhiyun DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name, \ 314*4882a593Smuzhiyun TP_PROTO(unsigned int xid, \ 315*4882a593Smuzhiyun __u32 tid, \ 316*4882a593Smuzhiyun __u64 sesid, \ 317*4882a593Smuzhiyun const char *full_path), \ 318*4882a593Smuzhiyun TP_ARGS(xid, tid, sesid, full_path)) 319*4882a593Smuzhiyun 320*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter); 321*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter); 322*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter); 323*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter); 324*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter); 325*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter); 326*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter); 327*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter); 328*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter); 329*4882a593Smuzhiyun 330*4882a593Smuzhiyun 331*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_inf_compound_done_class, 332*4882a593Smuzhiyun TP_PROTO(unsigned int xid, 333*4882a593Smuzhiyun __u32 tid, 334*4882a593Smuzhiyun __u64 sesid), 335*4882a593Smuzhiyun TP_ARGS(xid, tid, sesid), 336*4882a593Smuzhiyun TP_STRUCT__entry( 337*4882a593Smuzhiyun __field(unsigned int, xid) 338*4882a593Smuzhiyun __field(__u32, tid) 339*4882a593Smuzhiyun __field(__u64, sesid) 340*4882a593Smuzhiyun ), 341*4882a593Smuzhiyun TP_fast_assign( 342*4882a593Smuzhiyun __entry->xid = xid; 343*4882a593Smuzhiyun __entry->tid = tid; 344*4882a593Smuzhiyun __entry->sesid = sesid; 345*4882a593Smuzhiyun ), 346*4882a593Smuzhiyun TP_printk("xid=%u sid=0x%llx tid=0x%x", 347*4882a593Smuzhiyun __entry->xid, __entry->sesid, __entry->tid) 348*4882a593Smuzhiyun ) 349*4882a593Smuzhiyun 350*4882a593Smuzhiyun #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name) \ 351*4882a593Smuzhiyun DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name, \ 352*4882a593Smuzhiyun TP_PROTO(unsigned int xid, \ 353*4882a593Smuzhiyun __u32 tid, \ 354*4882a593Smuzhiyun __u64 sesid), \ 355*4882a593Smuzhiyun TP_ARGS(xid, tid, sesid)) 356*4882a593Smuzhiyun 357*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done); 358*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done); 359*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done); 360*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done); 361*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done); 362*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done); 363*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done); 364*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done); 365*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done); 366*4882a593Smuzhiyun 367*4882a593Smuzhiyun 368*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_inf_compound_err_class, 369*4882a593Smuzhiyun TP_PROTO(unsigned int xid, 370*4882a593Smuzhiyun __u32 tid, 371*4882a593Smuzhiyun __u64 sesid, 372*4882a593Smuzhiyun int rc), 373*4882a593Smuzhiyun TP_ARGS(xid, tid, sesid, rc), 374*4882a593Smuzhiyun TP_STRUCT__entry( 375*4882a593Smuzhiyun __field(unsigned int, xid) 376*4882a593Smuzhiyun __field(__u32, tid) 377*4882a593Smuzhiyun __field(__u64, sesid) 378*4882a593Smuzhiyun __field(int, rc) 379*4882a593Smuzhiyun ), 380*4882a593Smuzhiyun TP_fast_assign( 381*4882a593Smuzhiyun __entry->xid = xid; 382*4882a593Smuzhiyun __entry->tid = tid; 383*4882a593Smuzhiyun __entry->sesid = sesid; 384*4882a593Smuzhiyun __entry->rc = rc; 385*4882a593Smuzhiyun ), 386*4882a593Smuzhiyun TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d", 387*4882a593Smuzhiyun __entry->xid, __entry->sesid, __entry->tid, 388*4882a593Smuzhiyun __entry->rc) 389*4882a593Smuzhiyun ) 390*4882a593Smuzhiyun 391*4882a593Smuzhiyun #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name) \ 392*4882a593Smuzhiyun DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name, \ 393*4882a593Smuzhiyun TP_PROTO(unsigned int xid, \ 394*4882a593Smuzhiyun __u32 tid, \ 395*4882a593Smuzhiyun __u64 sesid, \ 396*4882a593Smuzhiyun int rc), \ 397*4882a593Smuzhiyun TP_ARGS(xid, tid, sesid, rc)) 398*4882a593Smuzhiyun 399*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err); 400*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err); 401*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err); 402*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err); 403*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err); 404*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err); 405*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err); 406*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err); 407*4882a593Smuzhiyun DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err); 408*4882a593Smuzhiyun 409*4882a593Smuzhiyun /* 410*4882a593Smuzhiyun * For logging SMB3 Status code and Command for responses which return errors 411*4882a593Smuzhiyun */ 412*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_cmd_err_class, 413*4882a593Smuzhiyun TP_PROTO(__u32 tid, 414*4882a593Smuzhiyun __u64 sesid, 415*4882a593Smuzhiyun __u16 cmd, 416*4882a593Smuzhiyun __u64 mid, 417*4882a593Smuzhiyun __u32 status, 418*4882a593Smuzhiyun int rc), 419*4882a593Smuzhiyun TP_ARGS(tid, sesid, cmd, mid, status, rc), 420*4882a593Smuzhiyun TP_STRUCT__entry( 421*4882a593Smuzhiyun __field(__u32, tid) 422*4882a593Smuzhiyun __field(__u64, sesid) 423*4882a593Smuzhiyun __field(__u16, cmd) 424*4882a593Smuzhiyun __field(__u64, mid) 425*4882a593Smuzhiyun __field(__u32, status) 426*4882a593Smuzhiyun __field(int, rc) 427*4882a593Smuzhiyun ), 428*4882a593Smuzhiyun TP_fast_assign( 429*4882a593Smuzhiyun __entry->tid = tid; 430*4882a593Smuzhiyun __entry->sesid = sesid; 431*4882a593Smuzhiyun __entry->cmd = cmd; 432*4882a593Smuzhiyun __entry->mid = mid; 433*4882a593Smuzhiyun __entry->status = status; 434*4882a593Smuzhiyun __entry->rc = rc; 435*4882a593Smuzhiyun ), 436*4882a593Smuzhiyun TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d", 437*4882a593Smuzhiyun __entry->sesid, __entry->tid, __entry->cmd, __entry->mid, 438*4882a593Smuzhiyun __entry->status, __entry->rc) 439*4882a593Smuzhiyun ) 440*4882a593Smuzhiyun 441*4882a593Smuzhiyun #define DEFINE_SMB3_CMD_ERR_EVENT(name) \ 442*4882a593Smuzhiyun DEFINE_EVENT(smb3_cmd_err_class, smb3_##name, \ 443*4882a593Smuzhiyun TP_PROTO(__u32 tid, \ 444*4882a593Smuzhiyun __u64 sesid, \ 445*4882a593Smuzhiyun __u16 cmd, \ 446*4882a593Smuzhiyun __u64 mid, \ 447*4882a593Smuzhiyun __u32 status, \ 448*4882a593Smuzhiyun int rc), \ 449*4882a593Smuzhiyun TP_ARGS(tid, sesid, cmd, mid, status, rc)) 450*4882a593Smuzhiyun 451*4882a593Smuzhiyun DEFINE_SMB3_CMD_ERR_EVENT(cmd_err); 452*4882a593Smuzhiyun 453*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_cmd_done_class, 454*4882a593Smuzhiyun TP_PROTO(__u32 tid, 455*4882a593Smuzhiyun __u64 sesid, 456*4882a593Smuzhiyun __u16 cmd, 457*4882a593Smuzhiyun __u64 mid), 458*4882a593Smuzhiyun TP_ARGS(tid, sesid, cmd, mid), 459*4882a593Smuzhiyun TP_STRUCT__entry( 460*4882a593Smuzhiyun __field(__u32, tid) 461*4882a593Smuzhiyun __field(__u64, sesid) 462*4882a593Smuzhiyun __field(__u16, cmd) 463*4882a593Smuzhiyun __field(__u64, mid) 464*4882a593Smuzhiyun ), 465*4882a593Smuzhiyun TP_fast_assign( 466*4882a593Smuzhiyun __entry->tid = tid; 467*4882a593Smuzhiyun __entry->sesid = sesid; 468*4882a593Smuzhiyun __entry->cmd = cmd; 469*4882a593Smuzhiyun __entry->mid = mid; 470*4882a593Smuzhiyun ), 471*4882a593Smuzhiyun TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu", 472*4882a593Smuzhiyun __entry->sesid, __entry->tid, 473*4882a593Smuzhiyun __entry->cmd, __entry->mid) 474*4882a593Smuzhiyun ) 475*4882a593Smuzhiyun 476*4882a593Smuzhiyun #define DEFINE_SMB3_CMD_DONE_EVENT(name) \ 477*4882a593Smuzhiyun DEFINE_EVENT(smb3_cmd_done_class, smb3_##name, \ 478*4882a593Smuzhiyun TP_PROTO(__u32 tid, \ 479*4882a593Smuzhiyun __u64 sesid, \ 480*4882a593Smuzhiyun __u16 cmd, \ 481*4882a593Smuzhiyun __u64 mid), \ 482*4882a593Smuzhiyun TP_ARGS(tid, sesid, cmd, mid)) 483*4882a593Smuzhiyun 484*4882a593Smuzhiyun DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter); 485*4882a593Smuzhiyun DEFINE_SMB3_CMD_DONE_EVENT(cmd_done); 486*4882a593Smuzhiyun DEFINE_SMB3_CMD_DONE_EVENT(ses_expired); 487*4882a593Smuzhiyun 488*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_mid_class, 489*4882a593Smuzhiyun TP_PROTO(__u16 cmd, 490*4882a593Smuzhiyun __u64 mid, 491*4882a593Smuzhiyun __u32 pid, 492*4882a593Smuzhiyun unsigned long when_sent, 493*4882a593Smuzhiyun unsigned long when_received), 494*4882a593Smuzhiyun TP_ARGS(cmd, mid, pid, when_sent, when_received), 495*4882a593Smuzhiyun TP_STRUCT__entry( 496*4882a593Smuzhiyun __field(__u16, cmd) 497*4882a593Smuzhiyun __field(__u64, mid) 498*4882a593Smuzhiyun __field(__u32, pid) 499*4882a593Smuzhiyun __field(unsigned long, when_sent) 500*4882a593Smuzhiyun __field(unsigned long, when_received) 501*4882a593Smuzhiyun ), 502*4882a593Smuzhiyun TP_fast_assign( 503*4882a593Smuzhiyun __entry->cmd = cmd; 504*4882a593Smuzhiyun __entry->mid = mid; 505*4882a593Smuzhiyun __entry->pid = pid; 506*4882a593Smuzhiyun __entry->when_sent = when_sent; 507*4882a593Smuzhiyun __entry->when_received = when_received; 508*4882a593Smuzhiyun ), 509*4882a593Smuzhiyun TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu", 510*4882a593Smuzhiyun __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent, 511*4882a593Smuzhiyun __entry->when_received) 512*4882a593Smuzhiyun ) 513*4882a593Smuzhiyun 514*4882a593Smuzhiyun #define DEFINE_SMB3_MID_EVENT(name) \ 515*4882a593Smuzhiyun DEFINE_EVENT(smb3_mid_class, smb3_##name, \ 516*4882a593Smuzhiyun TP_PROTO(__u16 cmd, \ 517*4882a593Smuzhiyun __u64 mid, \ 518*4882a593Smuzhiyun __u32 pid, \ 519*4882a593Smuzhiyun unsigned long when_sent, \ 520*4882a593Smuzhiyun unsigned long when_received), \ 521*4882a593Smuzhiyun TP_ARGS(cmd, mid, pid, when_sent, when_received)) 522*4882a593Smuzhiyun 523*4882a593Smuzhiyun DEFINE_SMB3_MID_EVENT(slow_rsp); 524*4882a593Smuzhiyun 525*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_exit_err_class, 526*4882a593Smuzhiyun TP_PROTO(unsigned int xid, 527*4882a593Smuzhiyun const char *func_name, 528*4882a593Smuzhiyun int rc), 529*4882a593Smuzhiyun TP_ARGS(xid, func_name, rc), 530*4882a593Smuzhiyun TP_STRUCT__entry( 531*4882a593Smuzhiyun __field(unsigned int, xid) 532*4882a593Smuzhiyun __field(const char *, func_name) 533*4882a593Smuzhiyun __field(int, rc) 534*4882a593Smuzhiyun ), 535*4882a593Smuzhiyun TP_fast_assign( 536*4882a593Smuzhiyun __entry->xid = xid; 537*4882a593Smuzhiyun __entry->func_name = func_name; 538*4882a593Smuzhiyun __entry->rc = rc; 539*4882a593Smuzhiyun ), 540*4882a593Smuzhiyun TP_printk("\t%s: xid=%u rc=%d", 541*4882a593Smuzhiyun __entry->func_name, __entry->xid, __entry->rc) 542*4882a593Smuzhiyun ) 543*4882a593Smuzhiyun 544*4882a593Smuzhiyun #define DEFINE_SMB3_EXIT_ERR_EVENT(name) \ 545*4882a593Smuzhiyun DEFINE_EVENT(smb3_exit_err_class, smb3_##name, \ 546*4882a593Smuzhiyun TP_PROTO(unsigned int xid, \ 547*4882a593Smuzhiyun const char *func_name, \ 548*4882a593Smuzhiyun int rc), \ 549*4882a593Smuzhiyun TP_ARGS(xid, func_name, rc)) 550*4882a593Smuzhiyun 551*4882a593Smuzhiyun DEFINE_SMB3_EXIT_ERR_EVENT(exit_err); 552*4882a593Smuzhiyun 553*4882a593Smuzhiyun 554*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_sync_err_class, 555*4882a593Smuzhiyun TP_PROTO(unsigned long ino, 556*4882a593Smuzhiyun int rc), 557*4882a593Smuzhiyun TP_ARGS(ino, rc), 558*4882a593Smuzhiyun TP_STRUCT__entry( 559*4882a593Smuzhiyun __field(unsigned long, ino) 560*4882a593Smuzhiyun __field(int, rc) 561*4882a593Smuzhiyun ), 562*4882a593Smuzhiyun TP_fast_assign( 563*4882a593Smuzhiyun __entry->ino = ino; 564*4882a593Smuzhiyun __entry->rc = rc; 565*4882a593Smuzhiyun ), 566*4882a593Smuzhiyun TP_printk("\tino=%lu rc=%d", 567*4882a593Smuzhiyun __entry->ino, __entry->rc) 568*4882a593Smuzhiyun ) 569*4882a593Smuzhiyun 570*4882a593Smuzhiyun #define DEFINE_SMB3_SYNC_ERR_EVENT(name) \ 571*4882a593Smuzhiyun DEFINE_EVENT(smb3_sync_err_class, cifs_##name, \ 572*4882a593Smuzhiyun TP_PROTO(unsigned long ino, \ 573*4882a593Smuzhiyun int rc), \ 574*4882a593Smuzhiyun TP_ARGS(ino, rc)) 575*4882a593Smuzhiyun 576*4882a593Smuzhiyun DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err); 577*4882a593Smuzhiyun DEFINE_SMB3_SYNC_ERR_EVENT(flush_err); 578*4882a593Smuzhiyun 579*4882a593Smuzhiyun 580*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_enter_exit_class, 581*4882a593Smuzhiyun TP_PROTO(unsigned int xid, 582*4882a593Smuzhiyun const char *func_name), 583*4882a593Smuzhiyun TP_ARGS(xid, func_name), 584*4882a593Smuzhiyun TP_STRUCT__entry( 585*4882a593Smuzhiyun __field(unsigned int, xid) 586*4882a593Smuzhiyun __field(const char *, func_name) 587*4882a593Smuzhiyun ), 588*4882a593Smuzhiyun TP_fast_assign( 589*4882a593Smuzhiyun __entry->xid = xid; 590*4882a593Smuzhiyun __entry->func_name = func_name; 591*4882a593Smuzhiyun ), 592*4882a593Smuzhiyun TP_printk("\t%s: xid=%u", 593*4882a593Smuzhiyun __entry->func_name, __entry->xid) 594*4882a593Smuzhiyun ) 595*4882a593Smuzhiyun 596*4882a593Smuzhiyun #define DEFINE_SMB3_ENTER_EXIT_EVENT(name) \ 597*4882a593Smuzhiyun DEFINE_EVENT(smb3_enter_exit_class, smb3_##name, \ 598*4882a593Smuzhiyun TP_PROTO(unsigned int xid, \ 599*4882a593Smuzhiyun const char *func_name), \ 600*4882a593Smuzhiyun TP_ARGS(xid, func_name)) 601*4882a593Smuzhiyun 602*4882a593Smuzhiyun DEFINE_SMB3_ENTER_EXIT_EVENT(enter); 603*4882a593Smuzhiyun DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done); 604*4882a593Smuzhiyun 605*4882a593Smuzhiyun /* 606*4882a593Smuzhiyun * For SMB2/SMB3 tree connect 607*4882a593Smuzhiyun */ 608*4882a593Smuzhiyun 609*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_tcon_class, 610*4882a593Smuzhiyun TP_PROTO(unsigned int xid, 611*4882a593Smuzhiyun __u32 tid, 612*4882a593Smuzhiyun __u64 sesid, 613*4882a593Smuzhiyun const char *unc_name, 614*4882a593Smuzhiyun int rc), 615*4882a593Smuzhiyun TP_ARGS(xid, tid, sesid, unc_name, rc), 616*4882a593Smuzhiyun TP_STRUCT__entry( 617*4882a593Smuzhiyun __field(unsigned int, xid) 618*4882a593Smuzhiyun __field(__u32, tid) 619*4882a593Smuzhiyun __field(__u64, sesid) 620*4882a593Smuzhiyun __string(name, unc_name) 621*4882a593Smuzhiyun __field(int, rc) 622*4882a593Smuzhiyun ), 623*4882a593Smuzhiyun TP_fast_assign( 624*4882a593Smuzhiyun __entry->xid = xid; 625*4882a593Smuzhiyun __entry->tid = tid; 626*4882a593Smuzhiyun __entry->sesid = sesid; 627*4882a593Smuzhiyun __assign_str(name, unc_name); 628*4882a593Smuzhiyun __entry->rc = rc; 629*4882a593Smuzhiyun ), 630*4882a593Smuzhiyun TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d", 631*4882a593Smuzhiyun __entry->xid, __entry->sesid, __entry->tid, 632*4882a593Smuzhiyun __get_str(name), __entry->rc) 633*4882a593Smuzhiyun ) 634*4882a593Smuzhiyun 635*4882a593Smuzhiyun #define DEFINE_SMB3_TCON_EVENT(name) \ 636*4882a593Smuzhiyun DEFINE_EVENT(smb3_tcon_class, smb3_##name, \ 637*4882a593Smuzhiyun TP_PROTO(unsigned int xid, \ 638*4882a593Smuzhiyun __u32 tid, \ 639*4882a593Smuzhiyun __u64 sesid, \ 640*4882a593Smuzhiyun const char *unc_name, \ 641*4882a593Smuzhiyun int rc), \ 642*4882a593Smuzhiyun TP_ARGS(xid, tid, sesid, unc_name, rc)) 643*4882a593Smuzhiyun 644*4882a593Smuzhiyun DEFINE_SMB3_TCON_EVENT(tcon); 645*4882a593Smuzhiyun 646*4882a593Smuzhiyun 647*4882a593Smuzhiyun /* 648*4882a593Smuzhiyun * For smb2/smb3 open (including create and mkdir) calls 649*4882a593Smuzhiyun */ 650*4882a593Smuzhiyun 651*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_open_enter_class, 652*4882a593Smuzhiyun TP_PROTO(unsigned int xid, 653*4882a593Smuzhiyun __u32 tid, 654*4882a593Smuzhiyun __u64 sesid, 655*4882a593Smuzhiyun int create_options, 656*4882a593Smuzhiyun int desired_access), 657*4882a593Smuzhiyun TP_ARGS(xid, tid, sesid, create_options, desired_access), 658*4882a593Smuzhiyun TP_STRUCT__entry( 659*4882a593Smuzhiyun __field(unsigned int, xid) 660*4882a593Smuzhiyun __field(__u32, tid) 661*4882a593Smuzhiyun __field(__u64, sesid) 662*4882a593Smuzhiyun __field(int, create_options) 663*4882a593Smuzhiyun __field(int, desired_access) 664*4882a593Smuzhiyun ), 665*4882a593Smuzhiyun TP_fast_assign( 666*4882a593Smuzhiyun __entry->xid = xid; 667*4882a593Smuzhiyun __entry->tid = tid; 668*4882a593Smuzhiyun __entry->sesid = sesid; 669*4882a593Smuzhiyun __entry->create_options = create_options; 670*4882a593Smuzhiyun __entry->desired_access = desired_access; 671*4882a593Smuzhiyun ), 672*4882a593Smuzhiyun TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x", 673*4882a593Smuzhiyun __entry->xid, __entry->sesid, __entry->tid, 674*4882a593Smuzhiyun __entry->create_options, __entry->desired_access) 675*4882a593Smuzhiyun ) 676*4882a593Smuzhiyun 677*4882a593Smuzhiyun #define DEFINE_SMB3_OPEN_ENTER_EVENT(name) \ 678*4882a593Smuzhiyun DEFINE_EVENT(smb3_open_enter_class, smb3_##name, \ 679*4882a593Smuzhiyun TP_PROTO(unsigned int xid, \ 680*4882a593Smuzhiyun __u32 tid, \ 681*4882a593Smuzhiyun __u64 sesid, \ 682*4882a593Smuzhiyun int create_options, \ 683*4882a593Smuzhiyun int desired_access), \ 684*4882a593Smuzhiyun TP_ARGS(xid, tid, sesid, create_options, desired_access)) 685*4882a593Smuzhiyun 686*4882a593Smuzhiyun DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter); 687*4882a593Smuzhiyun DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter); 688*4882a593Smuzhiyun 689*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_open_err_class, 690*4882a593Smuzhiyun TP_PROTO(unsigned int xid, 691*4882a593Smuzhiyun __u32 tid, 692*4882a593Smuzhiyun __u64 sesid, 693*4882a593Smuzhiyun int create_options, 694*4882a593Smuzhiyun int desired_access, 695*4882a593Smuzhiyun int rc), 696*4882a593Smuzhiyun TP_ARGS(xid, tid, sesid, create_options, desired_access, rc), 697*4882a593Smuzhiyun TP_STRUCT__entry( 698*4882a593Smuzhiyun __field(unsigned int, xid) 699*4882a593Smuzhiyun __field(__u32, tid) 700*4882a593Smuzhiyun __field(__u64, sesid) 701*4882a593Smuzhiyun __field(int, create_options) 702*4882a593Smuzhiyun __field(int, desired_access) 703*4882a593Smuzhiyun __field(int, rc) 704*4882a593Smuzhiyun ), 705*4882a593Smuzhiyun TP_fast_assign( 706*4882a593Smuzhiyun __entry->xid = xid; 707*4882a593Smuzhiyun __entry->tid = tid; 708*4882a593Smuzhiyun __entry->sesid = sesid; 709*4882a593Smuzhiyun __entry->create_options = create_options; 710*4882a593Smuzhiyun __entry->desired_access = desired_access; 711*4882a593Smuzhiyun __entry->rc = rc; 712*4882a593Smuzhiyun ), 713*4882a593Smuzhiyun TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d", 714*4882a593Smuzhiyun __entry->xid, __entry->sesid, __entry->tid, 715*4882a593Smuzhiyun __entry->create_options, __entry->desired_access, __entry->rc) 716*4882a593Smuzhiyun ) 717*4882a593Smuzhiyun 718*4882a593Smuzhiyun #define DEFINE_SMB3_OPEN_ERR_EVENT(name) \ 719*4882a593Smuzhiyun DEFINE_EVENT(smb3_open_err_class, smb3_##name, \ 720*4882a593Smuzhiyun TP_PROTO(unsigned int xid, \ 721*4882a593Smuzhiyun __u32 tid, \ 722*4882a593Smuzhiyun __u64 sesid, \ 723*4882a593Smuzhiyun int create_options, \ 724*4882a593Smuzhiyun int desired_access, \ 725*4882a593Smuzhiyun int rc), \ 726*4882a593Smuzhiyun TP_ARGS(xid, tid, sesid, create_options, desired_access, rc)) 727*4882a593Smuzhiyun 728*4882a593Smuzhiyun DEFINE_SMB3_OPEN_ERR_EVENT(open_err); 729*4882a593Smuzhiyun DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err); 730*4882a593Smuzhiyun 731*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_open_done_class, 732*4882a593Smuzhiyun TP_PROTO(unsigned int xid, 733*4882a593Smuzhiyun __u64 fid, 734*4882a593Smuzhiyun __u32 tid, 735*4882a593Smuzhiyun __u64 sesid, 736*4882a593Smuzhiyun int create_options, 737*4882a593Smuzhiyun int desired_access), 738*4882a593Smuzhiyun TP_ARGS(xid, fid, tid, sesid, create_options, desired_access), 739*4882a593Smuzhiyun TP_STRUCT__entry( 740*4882a593Smuzhiyun __field(unsigned int, xid) 741*4882a593Smuzhiyun __field(__u64, fid) 742*4882a593Smuzhiyun __field(__u32, tid) 743*4882a593Smuzhiyun __field(__u64, sesid) 744*4882a593Smuzhiyun __field(int, create_options) 745*4882a593Smuzhiyun __field(int, desired_access) 746*4882a593Smuzhiyun ), 747*4882a593Smuzhiyun TP_fast_assign( 748*4882a593Smuzhiyun __entry->xid = xid; 749*4882a593Smuzhiyun __entry->fid = fid; 750*4882a593Smuzhiyun __entry->tid = tid; 751*4882a593Smuzhiyun __entry->sesid = sesid; 752*4882a593Smuzhiyun __entry->create_options = create_options; 753*4882a593Smuzhiyun __entry->desired_access = desired_access; 754*4882a593Smuzhiyun ), 755*4882a593Smuzhiyun TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x", 756*4882a593Smuzhiyun __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 757*4882a593Smuzhiyun __entry->create_options, __entry->desired_access) 758*4882a593Smuzhiyun ) 759*4882a593Smuzhiyun 760*4882a593Smuzhiyun #define DEFINE_SMB3_OPEN_DONE_EVENT(name) \ 761*4882a593Smuzhiyun DEFINE_EVENT(smb3_open_done_class, smb3_##name, \ 762*4882a593Smuzhiyun TP_PROTO(unsigned int xid, \ 763*4882a593Smuzhiyun __u64 fid, \ 764*4882a593Smuzhiyun __u32 tid, \ 765*4882a593Smuzhiyun __u64 sesid, \ 766*4882a593Smuzhiyun int create_options, \ 767*4882a593Smuzhiyun int desired_access), \ 768*4882a593Smuzhiyun TP_ARGS(xid, fid, tid, sesid, create_options, desired_access)) 769*4882a593Smuzhiyun 770*4882a593Smuzhiyun DEFINE_SMB3_OPEN_DONE_EVENT(open_done); 771*4882a593Smuzhiyun DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done); 772*4882a593Smuzhiyun 773*4882a593Smuzhiyun 774*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_lease_done_class, 775*4882a593Smuzhiyun TP_PROTO(__u32 lease_state, 776*4882a593Smuzhiyun __u32 tid, 777*4882a593Smuzhiyun __u64 sesid, 778*4882a593Smuzhiyun __u64 lease_key_low, 779*4882a593Smuzhiyun __u64 lease_key_high), 780*4882a593Smuzhiyun TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high), 781*4882a593Smuzhiyun TP_STRUCT__entry( 782*4882a593Smuzhiyun __field(__u32, lease_state) 783*4882a593Smuzhiyun __field(__u32, tid) 784*4882a593Smuzhiyun __field(__u64, sesid) 785*4882a593Smuzhiyun __field(__u64, lease_key_low) 786*4882a593Smuzhiyun __field(__u64, lease_key_high) 787*4882a593Smuzhiyun ), 788*4882a593Smuzhiyun TP_fast_assign( 789*4882a593Smuzhiyun __entry->lease_state = lease_state; 790*4882a593Smuzhiyun __entry->tid = tid; 791*4882a593Smuzhiyun __entry->sesid = sesid; 792*4882a593Smuzhiyun __entry->lease_key_low = lease_key_low; 793*4882a593Smuzhiyun __entry->lease_key_high = lease_key_high; 794*4882a593Smuzhiyun ), 795*4882a593Smuzhiyun TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x", 796*4882a593Smuzhiyun __entry->sesid, __entry->tid, __entry->lease_key_high, 797*4882a593Smuzhiyun __entry->lease_key_low, __entry->lease_state) 798*4882a593Smuzhiyun ) 799*4882a593Smuzhiyun 800*4882a593Smuzhiyun #define DEFINE_SMB3_LEASE_DONE_EVENT(name) \ 801*4882a593Smuzhiyun DEFINE_EVENT(smb3_lease_done_class, smb3_##name, \ 802*4882a593Smuzhiyun TP_PROTO(__u32 lease_state, \ 803*4882a593Smuzhiyun __u32 tid, \ 804*4882a593Smuzhiyun __u64 sesid, \ 805*4882a593Smuzhiyun __u64 lease_key_low, \ 806*4882a593Smuzhiyun __u64 lease_key_high), \ 807*4882a593Smuzhiyun TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high)) 808*4882a593Smuzhiyun 809*4882a593Smuzhiyun DEFINE_SMB3_LEASE_DONE_EVENT(lease_done); 810*4882a593Smuzhiyun 811*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_lease_err_class, 812*4882a593Smuzhiyun TP_PROTO(__u32 lease_state, 813*4882a593Smuzhiyun __u32 tid, 814*4882a593Smuzhiyun __u64 sesid, 815*4882a593Smuzhiyun __u64 lease_key_low, 816*4882a593Smuzhiyun __u64 lease_key_high, 817*4882a593Smuzhiyun int rc), 818*4882a593Smuzhiyun TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc), 819*4882a593Smuzhiyun TP_STRUCT__entry( 820*4882a593Smuzhiyun __field(__u32, lease_state) 821*4882a593Smuzhiyun __field(__u32, tid) 822*4882a593Smuzhiyun __field(__u64, sesid) 823*4882a593Smuzhiyun __field(__u64, lease_key_low) 824*4882a593Smuzhiyun __field(__u64, lease_key_high) 825*4882a593Smuzhiyun __field(int, rc) 826*4882a593Smuzhiyun ), 827*4882a593Smuzhiyun TP_fast_assign( 828*4882a593Smuzhiyun __entry->lease_state = lease_state; 829*4882a593Smuzhiyun __entry->tid = tid; 830*4882a593Smuzhiyun __entry->sesid = sesid; 831*4882a593Smuzhiyun __entry->lease_key_low = lease_key_low; 832*4882a593Smuzhiyun __entry->lease_key_high = lease_key_high; 833*4882a593Smuzhiyun __entry->rc = rc; 834*4882a593Smuzhiyun ), 835*4882a593Smuzhiyun TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d", 836*4882a593Smuzhiyun __entry->sesid, __entry->tid, __entry->lease_key_high, 837*4882a593Smuzhiyun __entry->lease_key_low, __entry->lease_state, __entry->rc) 838*4882a593Smuzhiyun ) 839*4882a593Smuzhiyun 840*4882a593Smuzhiyun #define DEFINE_SMB3_LEASE_ERR_EVENT(name) \ 841*4882a593Smuzhiyun DEFINE_EVENT(smb3_lease_err_class, smb3_##name, \ 842*4882a593Smuzhiyun TP_PROTO(__u32 lease_state, \ 843*4882a593Smuzhiyun __u32 tid, \ 844*4882a593Smuzhiyun __u64 sesid, \ 845*4882a593Smuzhiyun __u64 lease_key_low, \ 846*4882a593Smuzhiyun __u64 lease_key_high, \ 847*4882a593Smuzhiyun int rc), \ 848*4882a593Smuzhiyun TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc)) 849*4882a593Smuzhiyun 850*4882a593Smuzhiyun DEFINE_SMB3_LEASE_ERR_EVENT(lease_err); 851*4882a593Smuzhiyun 852*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_reconnect_class, 853*4882a593Smuzhiyun TP_PROTO(__u64 currmid, 854*4882a593Smuzhiyun char *hostname), 855*4882a593Smuzhiyun TP_ARGS(currmid, hostname), 856*4882a593Smuzhiyun TP_STRUCT__entry( 857*4882a593Smuzhiyun __field(__u64, currmid) 858*4882a593Smuzhiyun __field(char *, hostname) 859*4882a593Smuzhiyun ), 860*4882a593Smuzhiyun TP_fast_assign( 861*4882a593Smuzhiyun __entry->currmid = currmid; 862*4882a593Smuzhiyun __entry->hostname = hostname; 863*4882a593Smuzhiyun ), 864*4882a593Smuzhiyun TP_printk("server=%s current_mid=0x%llx", 865*4882a593Smuzhiyun __entry->hostname, 866*4882a593Smuzhiyun __entry->currmid) 867*4882a593Smuzhiyun ) 868*4882a593Smuzhiyun 869*4882a593Smuzhiyun #define DEFINE_SMB3_RECONNECT_EVENT(name) \ 870*4882a593Smuzhiyun DEFINE_EVENT(smb3_reconnect_class, smb3_##name, \ 871*4882a593Smuzhiyun TP_PROTO(__u64 currmid, \ 872*4882a593Smuzhiyun char *hostname), \ 873*4882a593Smuzhiyun TP_ARGS(currmid, hostname)) 874*4882a593Smuzhiyun 875*4882a593Smuzhiyun DEFINE_SMB3_RECONNECT_EVENT(reconnect); 876*4882a593Smuzhiyun DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect); 877*4882a593Smuzhiyun 878*4882a593Smuzhiyun DECLARE_EVENT_CLASS(smb3_credit_class, 879*4882a593Smuzhiyun TP_PROTO(__u64 currmid, 880*4882a593Smuzhiyun char *hostname, 881*4882a593Smuzhiyun int credits, 882*4882a593Smuzhiyun int credits_to_add), 883*4882a593Smuzhiyun TP_ARGS(currmid, hostname, credits, credits_to_add), 884*4882a593Smuzhiyun TP_STRUCT__entry( 885*4882a593Smuzhiyun __field(__u64, currmid) 886*4882a593Smuzhiyun __field(char *, hostname) 887*4882a593Smuzhiyun __field(int, credits) 888*4882a593Smuzhiyun __field(int, credits_to_add) 889*4882a593Smuzhiyun ), 890*4882a593Smuzhiyun TP_fast_assign( 891*4882a593Smuzhiyun __entry->currmid = currmid; 892*4882a593Smuzhiyun __entry->hostname = hostname; 893*4882a593Smuzhiyun __entry->credits = credits; 894*4882a593Smuzhiyun __entry->credits_to_add = credits_to_add; 895*4882a593Smuzhiyun ), 896*4882a593Smuzhiyun TP_printk("server=%s current_mid=0x%llx credits=%d credits_to_add=%d", 897*4882a593Smuzhiyun __entry->hostname, 898*4882a593Smuzhiyun __entry->currmid, 899*4882a593Smuzhiyun __entry->credits, 900*4882a593Smuzhiyun __entry->credits_to_add) 901*4882a593Smuzhiyun ) 902*4882a593Smuzhiyun 903*4882a593Smuzhiyun #define DEFINE_SMB3_CREDIT_EVENT(name) \ 904*4882a593Smuzhiyun DEFINE_EVENT(smb3_credit_class, smb3_##name, \ 905*4882a593Smuzhiyun TP_PROTO(__u64 currmid, \ 906*4882a593Smuzhiyun char *hostname, \ 907*4882a593Smuzhiyun int credits, \ 908*4882a593Smuzhiyun int credits_to_add), \ 909*4882a593Smuzhiyun TP_ARGS(currmid, hostname, credits, credits_to_add)) 910*4882a593Smuzhiyun 911*4882a593Smuzhiyun DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits); 912*4882a593Smuzhiyun DEFINE_SMB3_CREDIT_EVENT(credit_timeout); 913*4882a593Smuzhiyun DEFINE_SMB3_CREDIT_EVENT(add_credits); 914*4882a593Smuzhiyun 915*4882a593Smuzhiyun #endif /* _CIFS_TRACE_H */ 916*4882a593Smuzhiyun 917*4882a593Smuzhiyun #undef TRACE_INCLUDE_PATH 918*4882a593Smuzhiyun #define TRACE_INCLUDE_PATH . 919*4882a593Smuzhiyun #define TRACE_INCLUDE_FILE trace 920*4882a593Smuzhiyun #include <trace/define_trace.h> 921