1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright (C) 2018, Microsoft Corporation. 4 * 5 * Author(s): Steve French <stfrench@microsoft.com> 6 * 7 * Please use this 3-part article as a reference for writing new tracepoints: 8 * https://lwn.net/Articles/379903/ 9 */ 10 #undef TRACE_SYSTEM 11 #define TRACE_SYSTEM cifs 12 13 #if !defined(_CIFS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 14 #define _CIFS_TRACE_H 15 16 #include <linux/tracepoint.h> 17 #include <linux/net.h> 18 #include <linux/inet.h> 19 20 /* 21 * Specify enums for tracing information. 22 */ 23 #define smb_eio_traces \ 24 EM(smb_eio_trace_compress_copy, "compress_copy") \ 25 EM(smb_eio_trace_copychunk_inv_rsp, "copychunk_inv_rsp") \ 26 EM(smb_eio_trace_copychunk_overcopy_b, "copychunk_overcopy_b") \ 27 EM(smb_eio_trace_copychunk_overcopy_c, "copychunk_overcopy_c") \ 28 EM(smb_eio_trace_create_rsp_too_small, "create_rsp_too_small") \ 29 EM(smb_eio_trace_dfsref_no_rsp, "dfsref_no_rsp") \ 30 EM(smb_eio_trace_ea_next_offset, "ea_next_offset") \ 31 EM(smb_eio_trace_ea_overrun, "ea_overrun") \ 32 EM(smb_eio_trace_extract_will_pin, "extract_will_pin") \ 33 EM(smb_eio_trace_ffirst_param_area, "ffirst_param_area") \ 34 EM(smb_eio_trace_fnext_param_area, "fnext_param_area") \ 35 EM(smb_eio_trace_forced_shutdown, "forced_shutdown") \ 36 EM(smb_eio_trace_getacl_bcc_too_small, "getacl_bcc_too_small") \ 37 EM(smb_eio_trace_getcifsacl_param_count, "getcifsacl_param_count") \ 38 EM(smb_eio_trace_getdfsrefer_bcc_too_small, "getdfsrefer_bcc_too_small") \ 39 EM(smb_eio_trace_getextattr_bcc_too_small, "getextattr_bcc_too_small") \ 40 EM(smb_eio_trace_getextattr_inv_size, "getextattr_inv_size") \ 41 EM(smb_eio_trace_getsrvinonum_bcc_too_small, "getsrvinonum_bcc_too_small") \ 42 EM(smb_eio_trace_getsrvinonum_size, "getsrvinonum_size") \ 43 EM(smb_eio_trace_ioctl_data_len, "ioctl_data_len") \ 44 EM(smb_eio_trace_ioctl_no_rsp, "ioctl_no_rsp") \ 45 EM(smb_eio_trace_ioctl_out_off, "ioctl_out_off") \ 46 EM(smb_eio_trace_lock_bcc_too_small, "lock_bcc_too_small") \ 47 EM(smb_eio_trace_lock_data_too_small, "lock_data_too_small") \ 48 EM(smb_eio_trace_malformed_ksid_key, "malformed_ksid_key") \ 49 EM(smb_eio_trace_malformed_sid_key, "malformed_sid_key") \ 50 EM(smb_eio_trace_mkdir_no_rsp, "mkdir_no_rsp") \ 51 EM(smb_eio_trace_neg_bad_rsplen, "neg_bad_rsplen") \ 52 EM(smb_eio_trace_neg_decode_token, "neg_decode_token") \ 53 EM(smb_eio_trace_neg_info_caps, "neg_info_caps") \ 54 EM(smb_eio_trace_neg_info_dialect, "neg_info_dialect") \ 55 EM(smb_eio_trace_neg_info_fail, "neg_info_fail") \ 56 EM(smb_eio_trace_neg_info_sec_mode, "neg_info_sec_mode") \ 57 EM(smb_eio_trace_neg_inval_dialect, "neg_inval_dialect") \ 58 EM(smb_eio_trace_neg_no_crypt_key, "neg_no_crypt_key") \ 59 EM(smb_eio_trace_neg_sec_blob_too_small, "neg_sec_blob_too_small") \ 60 EM(smb_eio_trace_neg_unreq_dialect, "neg_unreq_dialect") \ 61 EM(smb_eio_trace_no_auth_key, "no_auth_key") \ 62 EM(smb_eio_trace_no_lease_key, "no_lease_key") \ 63 EM(smb_eio_trace_not_netfs_writeback, "not_netfs_writeback") \ 64 EM(smb_eio_trace_null_pointers, "null_pointers") \ 65 EM(smb_eio_trace_oldqfsinfo_bcc_too_small, "oldqfsinfo_bcc_too_small") \ 66 EM(smb_eio_trace_pend_del_fail, "pend_del_fail") \ 67 EM(smb_eio_trace_qalleas_bcc_too_small, "qalleas_bcc_too_small") \ 68 EM(smb_eio_trace_qalleas_ea_overlong, "qalleas_ea_overlong") \ 69 EM(smb_eio_trace_qalleas_overlong, "qalleas_overlong") \ 70 EM(smb_eio_trace_qfileinfo_bcc_too_small, "qfileinfo_bcc_too_small") \ 71 EM(smb_eio_trace_qfileinfo_invalid, "qfileinfo_invalid") \ 72 EM(smb_eio_trace_qfsattrinfo_bcc_too_small, "qfsattrinfo_bcc_too_small") \ 73 EM(smb_eio_trace_qfsdevinfo_bcc_too_small, "qfsdevinfo_bcc_too_small") \ 74 EM(smb_eio_trace_qfsinfo_bcc_too_small, "qfsinfo_bcc_too_small") \ 75 EM(smb_eio_trace_qfsposixinfo_bcc_too_small, "qfsposixinfo_bcc_too_small") \ 76 EM(smb_eio_trace_qfsunixinfo_bcc_too_small, "qfsunixinfo_bcc_too_small") \ 77 EM(smb_eio_trace_qpathinfo_bcc_too_small, "qpathinfo_bcc_too_small") \ 78 EM(smb_eio_trace_qpathinfo_invalid, "qpathinfo_invalid") \ 79 EM(smb_eio_trace_qreparse_data_area, "qreparse_data_area") \ 80 EM(smb_eio_trace_qreparse_rep_datalen, "qreparse_rep_datalen") \ 81 EM(smb_eio_trace_qreparse_ret_datalen, "qreparse_ret_datalen") \ 82 EM(smb_eio_trace_qreparse_setup_count, "qreparse_setup_count") \ 83 EM(smb_eio_trace_qreparse_sizes_wrong, "qreparse_sizes_wrong") \ 84 EM(smb_eio_trace_qsym_bcc_too_small, "qsym_bcc_too_small") \ 85 EM(smb_eio_trace_read_bad_offset, "read_bad_offset") \ 86 EM(smb_eio_trace_read_mid_state_unknown, "read_mid_state_unknown") \ 87 EM(smb_eio_trace_read_overlarge, "read_overlarge") \ 88 EM(smb_eio_trace_read_rsp_malformed, "read_rsp_malformed") \ 89 EM(smb_eio_trace_read_rsp_short, "read_rsp_short") \ 90 EM(smb_eio_trace_read_too_far, "read_too_far") \ 91 EM(smb_eio_trace_reparse_data_len, "reparse_data_len") \ 92 EM(smb_eio_trace_reparse_native_len, "reparse_native_len") \ 93 EM(smb_eio_trace_reparse_native_nul, "reparse_native_nul") \ 94 EM(smb_eio_trace_reparse_native_sym_len, "reparse_native_sym_len") \ 95 EM(smb_eio_trace_reparse_nfs_dev, "reparse_nfs_dev") \ 96 EM(smb_eio_trace_reparse_nfs_nul, "reparse_nfs_nul") \ 97 EM(smb_eio_trace_reparse_nfs_sockfifo, "reparse_nfs_sockfifo") \ 98 EM(smb_eio_trace_reparse_nfs_symbuf, "reparse_nfs_symbuf") \ 99 EM(smb_eio_trace_reparse_nfs_too_short, "reparse_nfs_too_short") \ 100 EM(smb_eio_trace_reparse_overlong, "reparse_overlong") \ 101 EM(smb_eio_trace_reparse_rdlen, "reparse_rdlen") \ 102 EM(smb_eio_trace_reparse_wsl_nul, "reparse_wsl_nul") \ 103 EM(smb_eio_trace_reparse_wsl_symbuf, "reparse_wsl_symbuf") \ 104 EM(smb_eio_trace_reparse_wsl_ver, "reparse_wsl_ver") \ 105 EM(smb_eio_trace_rx_b_read_short, "rx_b_read_short") \ 106 EM(smb_eio_trace_rx_bad_datalen, "rx_bad_datalen") \ 107 EM(smb_eio_trace_rx_both_buf, "rx_both_buf") \ 108 EM(smb_eio_trace_rx_calc_len_too_big, "rx_calc_len_too_big") \ 109 EM(smb_eio_trace_rx_check_rsp, "rx_check_rsp") \ 110 EM(smb_eio_trace_rx_copy_to_iter, "rx_copy_to_iter") \ 111 EM(smb_eio_trace_rx_insuff_res, "rx_insuff_res") \ 112 EM(smb_eio_trace_rx_inv_bcc, "rx_inv_bcc") \ 113 EM(smb_eio_trace_rx_mid_unready, "rx_mid_unready") \ 114 EM(smb_eio_trace_rx_neg_sess_resp, "rx_neg_sess_resp") \ 115 EM(smb_eio_trace_rx_overlong, "rx_overlong") \ 116 EM(smb_eio_trace_rx_overpage, "rx_overpage") \ 117 EM(smb_eio_trace_rx_pos_sess_resp, "rx_pos_sess_resp") \ 118 EM(smb_eio_trace_rx_rfc1002_magic, "rx_rfc1002_magic") \ 119 EM(smb_eio_trace_rx_sync_mid_invalid, "rx_sync_mid_invalid") \ 120 EM(smb_eio_trace_rx_sync_mid_malformed, "rx_sync_mid_malformed") \ 121 EM(smb_eio_trace_rx_too_short, "rx_too_short") \ 122 EM(smb_eio_trace_rx_trans2_extract, "rx_trans2_extract") \ 123 EM(smb_eio_trace_rx_unknown_resp, "rx_unknown_resp") \ 124 EM(smb_eio_trace_rx_unspec_error, "rx_unspec_error") \ 125 EM(smb_eio_trace_sess_buf_off, "sess_buf_off") \ 126 EM(smb_eio_trace_sess_exiting, "sess_exiting") \ 127 EM(smb_eio_trace_sess_krb_wcc, "sess_krb_wcc") \ 128 EM(smb_eio_trace_sess_nl2_wcc, "sess_nl2_wcc") \ 129 EM(smb_eio_trace_sess_rawnl_auth_wcc, "sess_rawnl_auth_wcc") \ 130 EM(smb_eio_trace_sess_rawnl_neg_wcc, "sess_rawnl_neg_wcc") \ 131 EM(smb_eio_trace_short_symlink_write, "short_symlink_write") \ 132 EM(smb_eio_trace_sid_too_many_auth, "sid_too_many_auth") \ 133 EM(smb_eio_trace_sig_data_too_small, "sig_data_too_small") \ 134 EM(smb_eio_trace_sig_iter, "sig_iter") \ 135 EM(smb_eio_trace_smb1_received_error, "smb1_received_error") \ 136 EM(smb_eio_trace_smb2_received_error, "smb2_received_error") \ 137 EM(smb_eio_trace_sym_slash, "sym_slash") \ 138 EM(smb_eio_trace_sym_target_len, "sym_target_len") \ 139 EM(smb_eio_trace_symlink_file_size, "symlink_file_size") \ 140 EM(smb_eio_trace_tcon_bcc_too_small, "tcon_bcc_too_small") \ 141 EM(smb_eio_trace_tdis_in_reconnect, "tdis_in_reconnect") \ 142 EM(smb_eio_trace_tx_chained_async, "tx_chained_async") \ 143 EM(smb_eio_trace_tx_compress_failed, "tx_compress_failed") \ 144 EM(smb_eio_trace_tx_copy_iter_to_buf, "tx_copy_iter_to_buf") \ 145 EM(smb_eio_trace_tx_copy_to_buf, "tx_copy_to_buf") \ 146 EM(smb_eio_trace_tx_max_compound, "tx_max_compound") \ 147 EM(smb_eio_trace_tx_miscopy_to_buf, "tx_miscopy_to_buf") \ 148 EM(smb_eio_trace_tx_need_transform, "tx_need_transform") \ 149 EM(smb_eio_trace_tx_too_long, "sr_too_long") \ 150 EM(smb_eio_trace_unixqfileinfo_bcc_too_small, "unixqfileinfo_bcc_too_small") \ 151 EM(smb_eio_trace_unixqpathinfo_bcc_too_small, "unixqpathinfo_bcc_too_small") \ 152 EM(smb_eio_trace_user_iter, "user_iter") \ 153 EM(smb_eio_trace_write_bad_buf_type, "write_bad_buf_type") \ 154 EM(smb_eio_trace_write_mid_state_unknown, "write_mid_state_unknown") \ 155 EM(smb_eio_trace_write_rsp_malformed, "write_rsp_malformed") \ 156 E_(smb_eio_trace_write_too_far, "write_too_far") 157 158 #define smb3_rw_credits_traces \ 159 EM(cifs_trace_rw_credits_call_readv_adjust, "rd-call-adj") \ 160 EM(cifs_trace_rw_credits_call_writev_adjust, "wr-call-adj") \ 161 EM(cifs_trace_rw_credits_free_subreq, "free-subreq") \ 162 EM(cifs_trace_rw_credits_issue_read_adjust, "rd-issu-adj") \ 163 EM(cifs_trace_rw_credits_issue_write_adjust, "wr-issu-adj") \ 164 EM(cifs_trace_rw_credits_no_adjust_up, "no-adj-up ") \ 165 EM(cifs_trace_rw_credits_old_session, "old-session") \ 166 EM(cifs_trace_rw_credits_read_response_add, "rd-resp-add") \ 167 EM(cifs_trace_rw_credits_read_response_clear, "rd-resp-clr") \ 168 EM(cifs_trace_rw_credits_read_resubmit, "rd-resubmit") \ 169 EM(cifs_trace_rw_credits_read_submit, "rd-submit ") \ 170 EM(cifs_trace_rw_credits_write_prepare, "wr-prepare ") \ 171 EM(cifs_trace_rw_credits_write_response_add, "wr-resp-add") \ 172 EM(cifs_trace_rw_credits_write_response_clear, "wr-resp-clr") \ 173 E_(cifs_trace_rw_credits_zero_in_flight, "ZERO-IN-FLT") 174 175 #define smb3_tcon_ref_traces \ 176 EM(netfs_trace_tcon_ref_free, "FRE ") \ 177 EM(netfs_trace_tcon_ref_free_fail, "FRE Fail ") \ 178 EM(netfs_trace_tcon_ref_free_ipc, "FRE Ipc ") \ 179 EM(netfs_trace_tcon_ref_free_ipc_fail, "FRE Ipc-F ") \ 180 EM(netfs_trace_tcon_ref_free_reconnect_server, "FRE Reconn") \ 181 EM(netfs_trace_tcon_ref_get_cached_laundromat, "GET Ch-Lau") \ 182 EM(netfs_trace_tcon_ref_get_cached_lease_break, "GET Ch-Lea") \ 183 EM(netfs_trace_tcon_ref_get_cancelled_close, "GET Cn-Cls") \ 184 EM(netfs_trace_tcon_ref_get_close_defer_files, "GET Cl-Def") \ 185 EM(netfs_trace_tcon_ref_get_dfs_refer, "GET DfsRef") \ 186 EM(netfs_trace_tcon_ref_get_find, "GET Find ") \ 187 EM(netfs_trace_tcon_ref_get_find_sess_tcon, "GET FndSes") \ 188 EM(netfs_trace_tcon_ref_get_reconnect_server, "GET Reconn") \ 189 EM(netfs_trace_tcon_ref_get_swn_notify, "GET SwnNot") \ 190 EM(netfs_trace_tcon_ref_new, "NEW ") \ 191 EM(netfs_trace_tcon_ref_new_ipc, "NEW Ipc ") \ 192 EM(netfs_trace_tcon_ref_new_reconnect_server, "NEW Reconn") \ 193 EM(netfs_trace_tcon_ref_put_cached_close, "PUT Ch-Cls") \ 194 EM(netfs_trace_tcon_ref_put_cancelled_close, "PUT Cn-Cls") \ 195 EM(netfs_trace_tcon_ref_put_cancelled_close_fid, "PUT Cn-Fid") \ 196 EM(netfs_trace_tcon_ref_put_cancelled_mid, "PUT Cn-Mid") \ 197 EM(netfs_trace_tcon_ref_put_close_defer_files, "PUT Cl-Def") \ 198 EM(netfs_trace_tcon_ref_put_mnt_ctx, "PUT MntCtx") \ 199 EM(netfs_trace_tcon_ref_put_dfs_refer, "PUT DfsRfr") \ 200 EM(netfs_trace_tcon_ref_put_reconnect_server, "PUT Reconn") \ 201 EM(netfs_trace_tcon_ref_put_swn_notify, "PUT SwnNot") \ 202 EM(netfs_trace_tcon_ref_put_tlink, "PUT Tlink ") \ 203 EM(netfs_trace_tcon_ref_see_cancelled_close, "SEE Cn-Cls") \ 204 EM(netfs_trace_tcon_ref_see_fscache_collision, "SEE FV-CO!") \ 205 EM(netfs_trace_tcon_ref_see_fscache_okay, "SEE FV-Ok ") \ 206 EM(netfs_trace_tcon_ref_see_fscache_relinq, "SEE FV-Rlq") \ 207 E_(netfs_trace_tcon_ref_see_umount, "SEE Umount") 208 209 #undef EM 210 #undef E_ 211 212 /* 213 * Define those tracing enums. 214 */ 215 #ifndef __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY 216 #define __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY 217 218 #define EM(a, b) a, 219 #define E_(a, b) a 220 221 enum smb_eio_trace { smb_eio_traces }; 222 enum smb3_rw_credits_trace { smb3_rw_credits_traces } __mode(byte); 223 enum smb3_tcon_ref_trace { smb3_tcon_ref_traces } __mode(byte); 224 225 #undef EM 226 #undef E_ 227 #endif 228 229 /* 230 * Export enum symbols via userspace. 231 */ 232 #define EM(a, b) TRACE_DEFINE_ENUM(a); 233 #define E_(a, b) TRACE_DEFINE_ENUM(a); 234 235 smb_eio_traces; 236 smb3_rw_credits_traces; 237 smb3_tcon_ref_traces; 238 239 #undef EM 240 #undef E_ 241 242 /* 243 * Now redefine the EM() and E_() macros to map the enums to the strings that 244 * will be printed in the output. 245 */ 246 #define EM(a, b) { a, b }, 247 #define E_(a, b) { a, b } 248 249 /* For logging errors in read or write */ 250 DECLARE_EVENT_CLASS(smb3_rw_err_class, 251 TP_PROTO(unsigned int rreq_debug_id, 252 unsigned int rreq_debug_index, 253 unsigned int xid, 254 __u64 fid, 255 __u32 tid, 256 __u64 sesid, 257 __u64 offset, 258 __u32 len, 259 int rc), 260 TP_ARGS(rreq_debug_id, rreq_debug_index, 261 xid, fid, tid, sesid, offset, len, rc), 262 TP_STRUCT__entry( 263 __field(unsigned int, rreq_debug_id) 264 __field(unsigned int, rreq_debug_index) 265 __field(unsigned int, xid) 266 __field(__u64, fid) 267 __field(__u32, tid) 268 __field(__u64, sesid) 269 __field(__u64, offset) 270 __field(__u32, len) 271 __field(int, rc) 272 ), 273 TP_fast_assign( 274 __entry->rreq_debug_id = rreq_debug_id; 275 __entry->rreq_debug_index = rreq_debug_index; 276 __entry->xid = xid; 277 __entry->fid = fid; 278 __entry->tid = tid; 279 __entry->sesid = sesid; 280 __entry->offset = offset; 281 __entry->len = len; 282 __entry->rc = rc; 283 ), 284 TP_printk("R=%08x[%x] xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d", 285 __entry->rreq_debug_id, __entry->rreq_debug_index, 286 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 287 __entry->offset, __entry->len, __entry->rc) 288 ) 289 290 #define DEFINE_SMB3_RW_ERR_EVENT(name) \ 291 DEFINE_EVENT(smb3_rw_err_class, smb3_##name, \ 292 TP_PROTO(unsigned int rreq_debug_id, \ 293 unsigned int rreq_debug_index, \ 294 unsigned int xid, \ 295 __u64 fid, \ 296 __u32 tid, \ 297 __u64 sesid, \ 298 __u64 offset, \ 299 __u32 len, \ 300 int rc), \ 301 TP_ARGS(rreq_debug_id, rreq_debug_index, xid, fid, tid, sesid, offset, len, rc)) 302 303 DEFINE_SMB3_RW_ERR_EVENT(read_err); 304 DEFINE_SMB3_RW_ERR_EVENT(write_err); 305 306 /* For logging errors in other file I/O ops */ 307 DECLARE_EVENT_CLASS(smb3_other_err_class, 308 TP_PROTO(unsigned int xid, 309 __u64 fid, 310 __u32 tid, 311 __u64 sesid, 312 __u64 offset, 313 __u32 len, 314 int rc), 315 TP_ARGS(xid, fid, tid, sesid, offset, len, rc), 316 TP_STRUCT__entry( 317 __field(unsigned int, xid) 318 __field(__u64, fid) 319 __field(__u32, tid) 320 __field(__u64, sesid) 321 __field(__u64, offset) 322 __field(__u32, len) 323 __field(int, rc) 324 ), 325 TP_fast_assign( 326 __entry->xid = xid; 327 __entry->fid = fid; 328 __entry->tid = tid; 329 __entry->sesid = sesid; 330 __entry->offset = offset; 331 __entry->len = len; 332 __entry->rc = rc; 333 ), 334 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d", 335 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 336 __entry->offset, __entry->len, __entry->rc) 337 ) 338 339 #define DEFINE_SMB3_OTHER_ERR_EVENT(name) \ 340 DEFINE_EVENT(smb3_other_err_class, smb3_##name, \ 341 TP_PROTO(unsigned int xid, \ 342 __u64 fid, \ 343 __u32 tid, \ 344 __u64 sesid, \ 345 __u64 offset, \ 346 __u32 len, \ 347 int rc), \ 348 TP_ARGS(xid, fid, tid, sesid, offset, len, rc)) 349 350 DEFINE_SMB3_OTHER_ERR_EVENT(query_dir_err); 351 DEFINE_SMB3_OTHER_ERR_EVENT(zero_err); 352 DEFINE_SMB3_OTHER_ERR_EVENT(falloc_err); 353 354 /* 355 * For logging errors in reflink and copy_range ops e.g. smb2_copychunk_range 356 * and smb2_duplicate_extents 357 */ 358 DECLARE_EVENT_CLASS(smb3_copy_range_err_class, 359 TP_PROTO(unsigned int xid, 360 __u64 src_fid, 361 __u64 target_fid, 362 __u32 tid, 363 __u64 sesid, 364 __u64 src_offset, 365 __u64 target_offset, 366 __u32 len, 367 int rc), 368 TP_ARGS(xid, src_fid, target_fid, tid, sesid, src_offset, target_offset, len, rc), 369 TP_STRUCT__entry( 370 __field(unsigned int, xid) 371 __field(__u64, src_fid) 372 __field(__u64, target_fid) 373 __field(__u32, tid) 374 __field(__u64, sesid) 375 __field(__u64, src_offset) 376 __field(__u64, target_offset) 377 __field(__u32, len) 378 __field(int, rc) 379 ), 380 TP_fast_assign( 381 __entry->xid = xid; 382 __entry->src_fid = src_fid; 383 __entry->target_fid = target_fid; 384 __entry->tid = tid; 385 __entry->sesid = sesid; 386 __entry->src_offset = src_offset; 387 __entry->target_offset = target_offset; 388 __entry->len = len; 389 __entry->rc = rc; 390 ), 391 TP_printk("xid=%u sid=0x%llx tid=0x%x source fid=0x%llx source offset=0x%llx target fid=0x%llx target offset=0x%llx len=0x%x rc=%d", 392 __entry->xid, __entry->sesid, __entry->tid, __entry->target_fid, 393 __entry->src_offset, __entry->target_fid, __entry->target_offset, __entry->len, __entry->rc) 394 ) 395 396 #define DEFINE_SMB3_COPY_RANGE_ERR_EVENT(name) \ 397 DEFINE_EVENT(smb3_copy_range_err_class, smb3_##name, \ 398 TP_PROTO(unsigned int xid, \ 399 __u64 src_fid, \ 400 __u64 target_fid, \ 401 __u32 tid, \ 402 __u64 sesid, \ 403 __u64 src_offset, \ 404 __u64 target_offset, \ 405 __u32 len, \ 406 int rc), \ 407 TP_ARGS(xid, src_fid, target_fid, tid, sesid, src_offset, target_offset, len, rc)) 408 409 DEFINE_SMB3_COPY_RANGE_ERR_EVENT(clone_err); 410 DEFINE_SMB3_COPY_RANGE_ERR_EVENT(copychunk_err); 411 412 DECLARE_EVENT_CLASS(smb3_copy_range_done_class, 413 TP_PROTO(unsigned int xid, 414 __u64 src_fid, 415 __u64 target_fid, 416 __u32 tid, 417 __u64 sesid, 418 __u64 src_offset, 419 __u64 target_offset, 420 __u32 len), 421 TP_ARGS(xid, src_fid, target_fid, tid, sesid, src_offset, target_offset, len), 422 TP_STRUCT__entry( 423 __field(unsigned int, xid) 424 __field(__u64, src_fid) 425 __field(__u64, target_fid) 426 __field(__u32, tid) 427 __field(__u64, sesid) 428 __field(__u64, src_offset) 429 __field(__u64, target_offset) 430 __field(__u32, len) 431 ), 432 TP_fast_assign( 433 __entry->xid = xid; 434 __entry->src_fid = src_fid; 435 __entry->target_fid = target_fid; 436 __entry->tid = tid; 437 __entry->sesid = sesid; 438 __entry->src_offset = src_offset; 439 __entry->target_offset = target_offset; 440 __entry->len = len; 441 ), 442 TP_printk("xid=%u sid=0x%llx tid=0x%x source fid=0x%llx source offset=0x%llx target fid=0x%llx target offset=0x%llx len=0x%x", 443 __entry->xid, __entry->sesid, __entry->tid, __entry->target_fid, 444 __entry->src_offset, __entry->target_fid, __entry->target_offset, __entry->len) 445 ) 446 447 #define DEFINE_SMB3_COPY_RANGE_DONE_EVENT(name) \ 448 DEFINE_EVENT(smb3_copy_range_done_class, smb3_##name, \ 449 TP_PROTO(unsigned int xid, \ 450 __u64 src_fid, \ 451 __u64 target_fid, \ 452 __u32 tid, \ 453 __u64 sesid, \ 454 __u64 src_offset, \ 455 __u64 target_offset, \ 456 __u32 len), \ 457 TP_ARGS(xid, src_fid, target_fid, tid, sesid, src_offset, target_offset, len)) 458 459 DEFINE_SMB3_COPY_RANGE_DONE_EVENT(copychunk_enter); 460 DEFINE_SMB3_COPY_RANGE_DONE_EVENT(clone_enter); 461 DEFINE_SMB3_COPY_RANGE_DONE_EVENT(copychunk_done); 462 DEFINE_SMB3_COPY_RANGE_DONE_EVENT(clone_done); 463 464 465 /* For logging successful read or write */ 466 DECLARE_EVENT_CLASS(smb3_rw_done_class, 467 TP_PROTO(unsigned int rreq_debug_id, 468 unsigned int rreq_debug_index, 469 unsigned int xid, 470 __u64 fid, 471 __u32 tid, 472 __u64 sesid, 473 __u64 offset, 474 __u32 len), 475 TP_ARGS(rreq_debug_id, rreq_debug_index, 476 xid, fid, tid, sesid, offset, len), 477 TP_STRUCT__entry( 478 __field(unsigned int, rreq_debug_id) 479 __field(unsigned int, rreq_debug_index) 480 __field(unsigned int, xid) 481 __field(__u64, fid) 482 __field(__u32, tid) 483 __field(__u64, sesid) 484 __field(__u64, offset) 485 __field(__u32, len) 486 ), 487 TP_fast_assign( 488 __entry->rreq_debug_id = rreq_debug_id; 489 __entry->rreq_debug_index = rreq_debug_index; 490 __entry->xid = xid; 491 __entry->fid = fid; 492 __entry->tid = tid; 493 __entry->sesid = sesid; 494 __entry->offset = offset; 495 __entry->len = len; 496 ), 497 TP_printk("R=%08x[%x] xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x", 498 __entry->rreq_debug_id, __entry->rreq_debug_index, 499 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 500 __entry->offset, __entry->len) 501 ) 502 503 #define DEFINE_SMB3_RW_DONE_EVENT(name) \ 504 DEFINE_EVENT(smb3_rw_done_class, smb3_##name, \ 505 TP_PROTO(unsigned int rreq_debug_id, \ 506 unsigned int rreq_debug_index, \ 507 unsigned int xid, \ 508 __u64 fid, \ 509 __u32 tid, \ 510 __u64 sesid, \ 511 __u64 offset, \ 512 __u32 len), \ 513 TP_ARGS(rreq_debug_id, rreq_debug_index, xid, fid, tid, sesid, offset, len)) 514 515 DEFINE_SMB3_RW_DONE_EVENT(read_enter); 516 DEFINE_SMB3_RW_DONE_EVENT(read_done); 517 DEFINE_SMB3_RW_DONE_EVENT(write_enter); 518 DEFINE_SMB3_RW_DONE_EVENT(write_done); 519 520 /* For logging successful other op */ 521 DECLARE_EVENT_CLASS(smb3_other_done_class, 522 TP_PROTO(unsigned int xid, 523 __u64 fid, 524 __u32 tid, 525 __u64 sesid, 526 __u64 offset, 527 __u32 len), 528 TP_ARGS(xid, fid, tid, sesid, offset, len), 529 TP_STRUCT__entry( 530 __field(unsigned int, xid) 531 __field(__u64, fid) 532 __field(__u32, tid) 533 __field(__u64, sesid) 534 __field(__u64, offset) 535 __field(__u32, len) 536 ), 537 TP_fast_assign( 538 __entry->xid = xid; 539 __entry->fid = fid; 540 __entry->tid = tid; 541 __entry->sesid = sesid; 542 __entry->offset = offset; 543 __entry->len = len; 544 ), 545 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x", 546 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 547 __entry->offset, __entry->len) 548 ) 549 550 #define DEFINE_SMB3_OTHER_DONE_EVENT(name) \ 551 DEFINE_EVENT(smb3_other_done_class, smb3_##name, \ 552 TP_PROTO(unsigned int xid, \ 553 __u64 fid, \ 554 __u32 tid, \ 555 __u64 sesid, \ 556 __u64 offset, \ 557 __u32 len), \ 558 TP_ARGS(xid, fid, tid, sesid, offset, len)) 559 560 DEFINE_SMB3_OTHER_DONE_EVENT(query_dir_enter); 561 DEFINE_SMB3_OTHER_DONE_EVENT(zero_enter); 562 DEFINE_SMB3_OTHER_DONE_EVENT(falloc_enter); 563 DEFINE_SMB3_OTHER_DONE_EVENT(query_dir_done); 564 DEFINE_SMB3_OTHER_DONE_EVENT(zero_done); 565 DEFINE_SMB3_OTHER_DONE_EVENT(falloc_done); 566 567 /* For logging successful set EOF (truncate) */ 568 DECLARE_EVENT_CLASS(smb3_eof_class, 569 TP_PROTO(unsigned int xid, 570 __u64 fid, 571 __u32 tid, 572 __u64 sesid, 573 __u64 offset), 574 TP_ARGS(xid, fid, tid, sesid, offset), 575 TP_STRUCT__entry( 576 __field(unsigned int, xid) 577 __field(__u64, fid) 578 __field(__u32, tid) 579 __field(__u64, sesid) 580 __field(__u64, offset) 581 ), 582 TP_fast_assign( 583 __entry->xid = xid; 584 __entry->fid = fid; 585 __entry->tid = tid; 586 __entry->sesid = sesid; 587 __entry->offset = offset; 588 ), 589 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx", 590 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 591 __entry->offset) 592 ) 593 594 #define DEFINE_SMB3_EOF_EVENT(name) \ 595 DEFINE_EVENT(smb3_eof_class, smb3_##name, \ 596 TP_PROTO(unsigned int xid, \ 597 __u64 fid, \ 598 __u32 tid, \ 599 __u64 sesid, \ 600 __u64 offset), \ 601 TP_ARGS(xid, fid, tid, sesid, offset)) 602 603 DEFINE_SMB3_EOF_EVENT(set_eof); 604 605 /* 606 * For handle based calls other than read and write, and get/set info 607 */ 608 DECLARE_EVENT_CLASS(smb3_fd_class, 609 TP_PROTO(unsigned int xid, 610 __u64 fid, 611 __u32 tid, 612 __u64 sesid), 613 TP_ARGS(xid, fid, tid, sesid), 614 TP_STRUCT__entry( 615 __field(unsigned int, xid) 616 __field(__u64, fid) 617 __field(__u32, tid) 618 __field(__u64, sesid) 619 ), 620 TP_fast_assign( 621 __entry->xid = xid; 622 __entry->fid = fid; 623 __entry->tid = tid; 624 __entry->sesid = sesid; 625 ), 626 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx", 627 __entry->xid, __entry->sesid, __entry->tid, __entry->fid) 628 ) 629 630 #define DEFINE_SMB3_FD_EVENT(name) \ 631 DEFINE_EVENT(smb3_fd_class, smb3_##name, \ 632 TP_PROTO(unsigned int xid, \ 633 __u64 fid, \ 634 __u32 tid, \ 635 __u64 sesid), \ 636 TP_ARGS(xid, fid, tid, sesid)) 637 638 DEFINE_SMB3_FD_EVENT(flush_enter); 639 DEFINE_SMB3_FD_EVENT(flush_done); 640 DEFINE_SMB3_FD_EVENT(close_enter); 641 DEFINE_SMB3_FD_EVENT(close_done); 642 DEFINE_SMB3_FD_EVENT(oplock_not_found); 643 644 DECLARE_EVENT_CLASS(smb3_fd_err_class, 645 TP_PROTO(unsigned int xid, 646 __u64 fid, 647 __u32 tid, 648 __u64 sesid, 649 int rc), 650 TP_ARGS(xid, fid, tid, sesid, rc), 651 TP_STRUCT__entry( 652 __field(unsigned int, xid) 653 __field(__u64, fid) 654 __field(__u32, tid) 655 __field(__u64, sesid) 656 __field(int, rc) 657 ), 658 TP_fast_assign( 659 __entry->xid = xid; 660 __entry->fid = fid; 661 __entry->tid = tid; 662 __entry->sesid = sesid; 663 __entry->rc = rc; 664 ), 665 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d", 666 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 667 __entry->rc) 668 ) 669 670 #define DEFINE_SMB3_FD_ERR_EVENT(name) \ 671 DEFINE_EVENT(smb3_fd_err_class, smb3_##name, \ 672 TP_PROTO(unsigned int xid, \ 673 __u64 fid, \ 674 __u32 tid, \ 675 __u64 sesid, \ 676 int rc), \ 677 TP_ARGS(xid, fid, tid, sesid, rc)) 678 679 DEFINE_SMB3_FD_ERR_EVENT(flush_err); 680 DEFINE_SMB3_FD_ERR_EVENT(close_err); 681 682 DECLARE_EVENT_CLASS(smb3_lock_class, 683 TP_PROTO(unsigned int xid, 684 __u64 fid, 685 __u32 tid, 686 __u64 sesid, 687 __u64 offset, 688 __u64 len, 689 __u32 flags, 690 __u32 num_lock, 691 int rc), 692 TP_ARGS(xid, fid, tid, sesid, offset, len, flags, num_lock, rc), 693 TP_STRUCT__entry( 694 __field(unsigned int, xid) 695 __field(__u64, fid) 696 __field(__u32, tid) 697 __field(__u64, sesid) 698 __field(__u64, offset) 699 __field(__u64, len) 700 __field(__u32, flags) 701 __field(__u32, num_lock) 702 __field(int, rc) 703 ), 704 TP_fast_assign( 705 __entry->xid = xid; 706 __entry->fid = fid; 707 __entry->tid = tid; 708 __entry->sesid = sesid; 709 __entry->offset = offset; 710 __entry->len = len; 711 __entry->flags = flags; 712 __entry->num_lock = num_lock; 713 __entry->rc = rc; 714 ), 715 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%llx flags=0x%x num_lock=%u rc=%d", 716 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 717 __entry->offset, __entry->len, __entry->flags, __entry->num_lock, 718 __entry->rc) 719 ) 720 721 #define DEFINE_SMB3_LOCK_EVENT(name) \ 722 DEFINE_EVENT(smb3_lock_class, smb3_##name, \ 723 TP_PROTO(unsigned int xid, \ 724 __u64 fid, \ 725 __u32 tid, \ 726 __u64 sesid, \ 727 __u64 offset, \ 728 __u64 len, \ 729 __u32 flags, \ 730 __u32 num_lock, \ 731 int rc), \ 732 TP_ARGS(xid, fid, tid, sesid, offset, len, flags, num_lock, rc)) 733 734 DEFINE_SMB3_LOCK_EVENT(lock_enter); 735 DEFINE_SMB3_LOCK_EVENT(lock_done); 736 DEFINE_SMB3_LOCK_EVENT(lock_err); 737 DEFINE_SMB3_LOCK_EVENT(lock_cached); 738 739 TRACE_EVENT(smb3_lock_conflict, 740 TP_PROTO(__u64 fid, 741 __u64 req_offset, 742 __u64 req_len, 743 __u8 req_type, 744 __u64 conf_offset, 745 __u64 conf_len, 746 __u16 conf_type, 747 __u32 conf_pid), 748 TP_ARGS(fid, req_offset, req_len, req_type, conf_offset, conf_len, conf_type, conf_pid), 749 TP_STRUCT__entry( 750 __field(__u64, fid) 751 __field(__u64, req_offset) 752 __field(__u64, req_len) 753 __field(__u8, req_type) 754 __field(__u64, conf_offset) 755 __field(__u64, conf_len) 756 __field(__u16, conf_type) 757 __field(__u32, conf_pid) 758 ), 759 TP_fast_assign( 760 __entry->fid = fid; 761 __entry->req_offset = req_offset; 762 __entry->req_len = req_len; 763 __entry->req_type = req_type; 764 __entry->conf_offset = conf_offset; 765 __entry->conf_len = conf_len; 766 __entry->conf_type = conf_type; 767 __entry->conf_pid = conf_pid; 768 ), 769 TP_printk("fid=0x%llx req=[0x%llx:0x%llx] type=0x%x conflicts with [0x%llx:0x%llx] type=0x%x pid=%u", 770 __entry->fid, __entry->req_offset, __entry->req_len, __entry->req_type, 771 __entry->conf_offset, __entry->conf_len, __entry->conf_type, __entry->conf_pid) 772 ); 773 774 /* 775 * For handle based query/set info calls 776 */ 777 DECLARE_EVENT_CLASS(smb3_inf_enter_class, 778 TP_PROTO(unsigned int xid, 779 __u64 fid, 780 __u32 tid, 781 __u64 sesid, 782 __u8 infclass, 783 __u32 type), 784 TP_ARGS(xid, fid, tid, sesid, infclass, type), 785 TP_STRUCT__entry( 786 __field(unsigned int, xid) 787 __field(__u64, fid) 788 __field(__u32, tid) 789 __field(__u64, sesid) 790 __field(__u8, infclass) 791 __field(__u32, type) 792 ), 793 TP_fast_assign( 794 __entry->xid = xid; 795 __entry->fid = fid; 796 __entry->tid = tid; 797 __entry->sesid = sesid; 798 __entry->infclass = infclass; 799 __entry->type = type; 800 ), 801 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x", 802 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 803 __entry->infclass, __entry->type) 804 ) 805 806 #define DEFINE_SMB3_INF_ENTER_EVENT(name) \ 807 DEFINE_EVENT(smb3_inf_enter_class, smb3_##name, \ 808 TP_PROTO(unsigned int xid, \ 809 __u64 fid, \ 810 __u32 tid, \ 811 __u64 sesid, \ 812 __u8 infclass, \ 813 __u32 type), \ 814 TP_ARGS(xid, fid, tid, sesid, infclass, type)) 815 816 DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter); 817 DEFINE_SMB3_INF_ENTER_EVENT(query_info_done); 818 DEFINE_SMB3_INF_ENTER_EVENT(notify_enter); 819 DEFINE_SMB3_INF_ENTER_EVENT(notify_done); 820 821 DECLARE_EVENT_CLASS(smb3_inf_err_class, 822 TP_PROTO(unsigned int xid, 823 __u64 fid, 824 __u32 tid, 825 __u64 sesid, 826 __u8 infclass, 827 __u32 type, 828 int rc), 829 TP_ARGS(xid, fid, tid, sesid, infclass, type, rc), 830 TP_STRUCT__entry( 831 __field(unsigned int, xid) 832 __field(__u64, fid) 833 __field(__u32, tid) 834 __field(__u64, sesid) 835 __field(__u8, infclass) 836 __field(__u32, type) 837 __field(int, rc) 838 ), 839 TP_fast_assign( 840 __entry->xid = xid; 841 __entry->fid = fid; 842 __entry->tid = tid; 843 __entry->sesid = sesid; 844 __entry->infclass = infclass; 845 __entry->type = type; 846 __entry->rc = rc; 847 ), 848 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d", 849 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 850 __entry->infclass, __entry->type, __entry->rc) 851 ) 852 853 #define DEFINE_SMB3_INF_ERR_EVENT(name) \ 854 DEFINE_EVENT(smb3_inf_err_class, smb3_##name, \ 855 TP_PROTO(unsigned int xid, \ 856 __u64 fid, \ 857 __u32 tid, \ 858 __u64 sesid, \ 859 __u8 infclass, \ 860 __u32 type, \ 861 int rc), \ 862 TP_ARGS(xid, fid, tid, sesid, infclass, type, rc)) 863 864 DEFINE_SMB3_INF_ERR_EVENT(query_info_err); 865 DEFINE_SMB3_INF_ERR_EVENT(set_info_err); 866 DEFINE_SMB3_INF_ERR_EVENT(notify_err); 867 DEFINE_SMB3_INF_ERR_EVENT(fsctl_err); 868 869 DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class, 870 TP_PROTO(unsigned int xid, 871 __u32 tid, 872 __u64 sesid, 873 const char *full_path), 874 TP_ARGS(xid, tid, sesid, full_path), 875 TP_STRUCT__entry( 876 __field(unsigned int, xid) 877 __field(__u32, tid) 878 __field(__u64, sesid) 879 __string(path, full_path) 880 ), 881 TP_fast_assign( 882 __entry->xid = xid; 883 __entry->tid = tid; 884 __entry->sesid = sesid; 885 __assign_str(path); 886 ), 887 TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s", 888 __entry->xid, __entry->sesid, __entry->tid, 889 __get_str(path)) 890 ) 891 892 #define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name) \ 893 DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name, \ 894 TP_PROTO(unsigned int xid, \ 895 __u32 tid, \ 896 __u64 sesid, \ 897 const char *full_path), \ 898 TP_ARGS(xid, tid, sesid, full_path)) 899 900 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter); 901 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter); 902 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter); 903 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter); 904 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(unlink_enter); 905 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter); 906 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter); 907 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_reparse_compound_enter); 908 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(get_reparse_compound_enter); 909 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_wsl_ea_compound_enter); 910 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter); 911 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(tdis_enter); 912 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mknod_enter); 913 914 DECLARE_EVENT_CLASS(smb3_inf_compound_done_class, 915 TP_PROTO(unsigned int xid, 916 __u32 tid, 917 __u64 sesid), 918 TP_ARGS(xid, tid, sesid), 919 TP_STRUCT__entry( 920 __field(unsigned int, xid) 921 __field(__u32, tid) 922 __field(__u64, sesid) 923 ), 924 TP_fast_assign( 925 __entry->xid = xid; 926 __entry->tid = tid; 927 __entry->sesid = sesid; 928 ), 929 TP_printk("xid=%u sid=0x%llx tid=0x%x", 930 __entry->xid, __entry->sesid, __entry->tid) 931 ) 932 933 #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name) \ 934 DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name, \ 935 TP_PROTO(unsigned int xid, \ 936 __u32 tid, \ 937 __u64 sesid), \ 938 TP_ARGS(xid, tid, sesid)) 939 940 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done); 941 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done); 942 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done); 943 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done); 944 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(unlink_done); 945 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done); 946 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done); 947 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_reparse_compound_done); 948 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(get_reparse_compound_done); 949 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_wsl_ea_compound_done); 950 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done); 951 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(tdis_done); 952 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mknod_done); 953 954 DECLARE_EVENT_CLASS(smb3_inf_compound_err_class, 955 TP_PROTO(unsigned int xid, 956 __u32 tid, 957 __u64 sesid, 958 int rc), 959 TP_ARGS(xid, tid, sesid, rc), 960 TP_STRUCT__entry( 961 __field(unsigned int, xid) 962 __field(__u32, tid) 963 __field(__u64, sesid) 964 __field(int, rc) 965 ), 966 TP_fast_assign( 967 __entry->xid = xid; 968 __entry->tid = tid; 969 __entry->sesid = sesid; 970 __entry->rc = rc; 971 ), 972 TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d", 973 __entry->xid, __entry->sesid, __entry->tid, 974 __entry->rc) 975 ) 976 977 #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name) \ 978 DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name, \ 979 TP_PROTO(unsigned int xid, \ 980 __u32 tid, \ 981 __u64 sesid, \ 982 int rc), \ 983 TP_ARGS(xid, tid, sesid, rc)) 984 985 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err); 986 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err); 987 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err); 988 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err); 989 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(unlink_err); 990 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err); 991 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err); 992 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_reparse_compound_err); 993 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(get_reparse_compound_err); 994 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_wsl_ea_compound_err); 995 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err); 996 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(tdis_err); 997 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mknod_err); 998 999 /* 1000 * For logging SMB3 Status code and Command for responses which return errors 1001 */ 1002 DECLARE_EVENT_CLASS(smb3_cmd_err_class, 1003 TP_PROTO(__u32 tid, 1004 __u64 sesid, 1005 __u16 cmd, 1006 __u64 mid, 1007 __u32 status, 1008 int rc), 1009 TP_ARGS(tid, sesid, cmd, mid, status, rc), 1010 TP_STRUCT__entry( 1011 __field(__u32, tid) 1012 __field(__u64, sesid) 1013 __field(__u16, cmd) 1014 __field(__u64, mid) 1015 __field(__u32, status) 1016 __field(int, rc) 1017 ), 1018 TP_fast_assign( 1019 __entry->tid = tid; 1020 __entry->sesid = sesid; 1021 __entry->cmd = cmd; 1022 __entry->mid = mid; 1023 __entry->status = status; 1024 __entry->rc = rc; 1025 ), 1026 TP_printk("sid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d", 1027 __entry->sesid, __entry->tid, __entry->cmd, __entry->mid, 1028 __entry->status, __entry->rc) 1029 ) 1030 1031 #define DEFINE_SMB3_CMD_ERR_EVENT(name) \ 1032 DEFINE_EVENT(smb3_cmd_err_class, smb3_##name, \ 1033 TP_PROTO(__u32 tid, \ 1034 __u64 sesid, \ 1035 __u16 cmd, \ 1036 __u64 mid, \ 1037 __u32 status, \ 1038 int rc), \ 1039 TP_ARGS(tid, sesid, cmd, mid, status, rc)) 1040 1041 DEFINE_SMB3_CMD_ERR_EVENT(cmd_err); 1042 1043 DECLARE_EVENT_CLASS(smb3_cmd_done_class, 1044 TP_PROTO(__u32 tid, 1045 __u64 sesid, 1046 __u16 cmd, 1047 __u64 mid), 1048 TP_ARGS(tid, sesid, cmd, mid), 1049 TP_STRUCT__entry( 1050 __field(__u32, tid) 1051 __field(__u64, sesid) 1052 __field(__u16, cmd) 1053 __field(__u64, mid) 1054 ), 1055 TP_fast_assign( 1056 __entry->tid = tid; 1057 __entry->sesid = sesid; 1058 __entry->cmd = cmd; 1059 __entry->mid = mid; 1060 ), 1061 TP_printk("sid=0x%llx tid=0x%x cmd=%u mid=%llu", 1062 __entry->sesid, __entry->tid, 1063 __entry->cmd, __entry->mid) 1064 ) 1065 1066 #define DEFINE_SMB3_CMD_DONE_EVENT(name) \ 1067 DEFINE_EVENT(smb3_cmd_done_class, smb3_##name, \ 1068 TP_PROTO(__u32 tid, \ 1069 __u64 sesid, \ 1070 __u16 cmd, \ 1071 __u64 mid), \ 1072 TP_ARGS(tid, sesid, cmd, mid)) 1073 1074 DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter); 1075 DEFINE_SMB3_CMD_DONE_EVENT(cmd_done); 1076 DEFINE_SMB3_CMD_DONE_EVENT(ses_expired); 1077 1078 DECLARE_EVENT_CLASS(smb3_mid_class, 1079 TP_PROTO(__u16 cmd, 1080 __u64 mid, 1081 __u32 pid, 1082 unsigned long when_sent, 1083 unsigned long when_received), 1084 TP_ARGS(cmd, mid, pid, when_sent, when_received), 1085 TP_STRUCT__entry( 1086 __field(__u16, cmd) 1087 __field(__u64, mid) 1088 __field(__u32, pid) 1089 __field(unsigned long, when_sent) 1090 __field(unsigned long, when_received) 1091 ), 1092 TP_fast_assign( 1093 __entry->cmd = cmd; 1094 __entry->mid = mid; 1095 __entry->pid = pid; 1096 __entry->when_sent = when_sent; 1097 __entry->when_received = when_received; 1098 ), 1099 TP_printk("cmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu", 1100 __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent, 1101 __entry->when_received) 1102 ) 1103 1104 #define DEFINE_SMB3_MID_EVENT(name) \ 1105 DEFINE_EVENT(smb3_mid_class, smb3_##name, \ 1106 TP_PROTO(__u16 cmd, \ 1107 __u64 mid, \ 1108 __u32 pid, \ 1109 unsigned long when_sent, \ 1110 unsigned long when_received), \ 1111 TP_ARGS(cmd, mid, pid, when_sent, when_received)) 1112 1113 DEFINE_SMB3_MID_EVENT(slow_rsp); 1114 1115 DECLARE_EVENT_CLASS(smb3_exit_err_class, 1116 TP_PROTO(unsigned int xid, 1117 const char *func_name, 1118 int rc), 1119 TP_ARGS(xid, func_name, rc), 1120 TP_STRUCT__entry( 1121 __field(unsigned int, xid) 1122 __string(func_name, func_name) 1123 __field(int, rc) 1124 ), 1125 TP_fast_assign( 1126 __entry->xid = xid; 1127 __assign_str(func_name); 1128 __entry->rc = rc; 1129 ), 1130 TP_printk("%s: xid=%u rc=%d", 1131 __get_str(func_name), __entry->xid, __entry->rc) 1132 ) 1133 1134 #define DEFINE_SMB3_EXIT_ERR_EVENT(name) \ 1135 DEFINE_EVENT(smb3_exit_err_class, smb3_##name, \ 1136 TP_PROTO(unsigned int xid, \ 1137 const char *func_name, \ 1138 int rc), \ 1139 TP_ARGS(xid, func_name, rc)) 1140 1141 DEFINE_SMB3_EXIT_ERR_EVENT(exit_err); 1142 1143 1144 DECLARE_EVENT_CLASS(smb3_sync_err_class, 1145 TP_PROTO(unsigned long ino, 1146 int rc), 1147 TP_ARGS(ino, rc), 1148 TP_STRUCT__entry( 1149 __field(unsigned long, ino) 1150 __field(int, rc) 1151 ), 1152 TP_fast_assign( 1153 __entry->ino = ino; 1154 __entry->rc = rc; 1155 ), 1156 TP_printk("ino=%lu rc=%d", 1157 __entry->ino, __entry->rc) 1158 ) 1159 1160 #define DEFINE_SMB3_SYNC_ERR_EVENT(name) \ 1161 DEFINE_EVENT(smb3_sync_err_class, cifs_##name, \ 1162 TP_PROTO(unsigned long ino, \ 1163 int rc), \ 1164 TP_ARGS(ino, rc)) 1165 1166 DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err); 1167 DEFINE_SMB3_SYNC_ERR_EVENT(flush_err); 1168 1169 1170 DECLARE_EVENT_CLASS(smb3_enter_exit_class, 1171 TP_PROTO(unsigned int xid, 1172 const char *func_name), 1173 TP_ARGS(xid, func_name), 1174 TP_STRUCT__entry( 1175 __field(unsigned int, xid) 1176 __string(func_name, func_name) 1177 ), 1178 TP_fast_assign( 1179 __entry->xid = xid; 1180 __assign_str(func_name); 1181 ), 1182 TP_printk("%s: xid=%u", 1183 __get_str(func_name), __entry->xid) 1184 ) 1185 1186 #define DEFINE_SMB3_ENTER_EXIT_EVENT(name) \ 1187 DEFINE_EVENT(smb3_enter_exit_class, smb3_##name, \ 1188 TP_PROTO(unsigned int xid, \ 1189 const char *func_name), \ 1190 TP_ARGS(xid, func_name)) 1191 1192 DEFINE_SMB3_ENTER_EXIT_EVENT(enter); 1193 DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done); 1194 1195 /* 1196 * For SMB2/SMB3 tree connect 1197 */ 1198 1199 DECLARE_EVENT_CLASS(smb3_tcon_class, 1200 TP_PROTO(unsigned int xid, 1201 __u32 tid, 1202 __u64 sesid, 1203 const char *unc_name, 1204 int rc), 1205 TP_ARGS(xid, tid, sesid, unc_name, rc), 1206 TP_STRUCT__entry( 1207 __field(unsigned int, xid) 1208 __field(__u32, tid) 1209 __field(__u64, sesid) 1210 __string(name, unc_name) 1211 __field(int, rc) 1212 ), 1213 TP_fast_assign( 1214 __entry->xid = xid; 1215 __entry->tid = tid; 1216 __entry->sesid = sesid; 1217 __assign_str(name); 1218 __entry->rc = rc; 1219 ), 1220 TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d", 1221 __entry->xid, __entry->sesid, __entry->tid, 1222 __get_str(name), __entry->rc) 1223 ) 1224 1225 #define DEFINE_SMB3_TCON_EVENT(name) \ 1226 DEFINE_EVENT(smb3_tcon_class, smb3_##name, \ 1227 TP_PROTO(unsigned int xid, \ 1228 __u32 tid, \ 1229 __u64 sesid, \ 1230 const char *unc_name, \ 1231 int rc), \ 1232 TP_ARGS(xid, tid, sesid, unc_name, rc)) 1233 1234 DEFINE_SMB3_TCON_EVENT(tcon); 1235 DEFINE_SMB3_TCON_EVENT(qfs_done); 1236 1237 /* 1238 * For smb2/smb3 open (including create and mkdir) calls 1239 */ 1240 1241 DECLARE_EVENT_CLASS(smb3_open_enter_class, 1242 TP_PROTO(unsigned int xid, 1243 __u32 tid, 1244 __u64 sesid, 1245 const char *full_path, 1246 int create_options, 1247 int desired_access), 1248 TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access), 1249 TP_STRUCT__entry( 1250 __field(unsigned int, xid) 1251 __field(__u32, tid) 1252 __field(__u64, sesid) 1253 __string(path, full_path) 1254 __field(int, create_options) 1255 __field(int, desired_access) 1256 ), 1257 TP_fast_assign( 1258 __entry->xid = xid; 1259 __entry->tid = tid; 1260 __entry->sesid = sesid; 1261 __assign_str(path); 1262 __entry->create_options = create_options; 1263 __entry->desired_access = desired_access; 1264 ), 1265 TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s cr_opts=0x%x des_access=0x%x", 1266 __entry->xid, __entry->sesid, __entry->tid, __get_str(path), 1267 __entry->create_options, __entry->desired_access) 1268 ) 1269 1270 #define DEFINE_SMB3_OPEN_ENTER_EVENT(name) \ 1271 DEFINE_EVENT(smb3_open_enter_class, smb3_##name, \ 1272 TP_PROTO(unsigned int xid, \ 1273 __u32 tid, \ 1274 __u64 sesid, \ 1275 const char *full_path, \ 1276 int create_options, \ 1277 int desired_access), \ 1278 TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access)) 1279 1280 DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter); 1281 DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter); 1282 1283 DECLARE_EVENT_CLASS(smb3_open_err_class, 1284 TP_PROTO(unsigned int xid, 1285 __u32 tid, 1286 __u64 sesid, 1287 int create_options, 1288 int desired_access, 1289 int rc), 1290 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc), 1291 TP_STRUCT__entry( 1292 __field(unsigned int, xid) 1293 __field(__u32, tid) 1294 __field(__u64, sesid) 1295 __field(int, create_options) 1296 __field(int, desired_access) 1297 __field(int, rc) 1298 ), 1299 TP_fast_assign( 1300 __entry->xid = xid; 1301 __entry->tid = tid; 1302 __entry->sesid = sesid; 1303 __entry->create_options = create_options; 1304 __entry->desired_access = desired_access; 1305 __entry->rc = rc; 1306 ), 1307 TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d", 1308 __entry->xid, __entry->sesid, __entry->tid, 1309 __entry->create_options, __entry->desired_access, __entry->rc) 1310 ) 1311 1312 #define DEFINE_SMB3_OPEN_ERR_EVENT(name) \ 1313 DEFINE_EVENT(smb3_open_err_class, smb3_##name, \ 1314 TP_PROTO(unsigned int xid, \ 1315 __u32 tid, \ 1316 __u64 sesid, \ 1317 int create_options, \ 1318 int desired_access, \ 1319 int rc), \ 1320 TP_ARGS(xid, tid, sesid, create_options, desired_access, rc)) 1321 1322 DEFINE_SMB3_OPEN_ERR_EVENT(open_err); 1323 DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err); 1324 1325 DECLARE_EVENT_CLASS(smb3_open_done_class, 1326 TP_PROTO(unsigned int xid, 1327 __u64 fid, 1328 __u32 tid, 1329 __u64 sesid, 1330 int create_options, 1331 int desired_access, 1332 __u8 oplock), 1333 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access, oplock), 1334 TP_STRUCT__entry( 1335 __field(unsigned int, xid) 1336 __field(__u64, fid) 1337 __field(__u32, tid) 1338 __field(__u64, sesid) 1339 __field(int, create_options) 1340 __field(int, desired_access) 1341 __field(__u8, oplock) 1342 ), 1343 TP_fast_assign( 1344 __entry->xid = xid; 1345 __entry->fid = fid; 1346 __entry->tid = tid; 1347 __entry->sesid = sesid; 1348 __entry->create_options = create_options; 1349 __entry->desired_access = desired_access; 1350 __entry->oplock = oplock; 1351 ), 1352 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x oplock=0x%x", 1353 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 1354 __entry->create_options, __entry->desired_access, __entry->oplock) 1355 ) 1356 1357 #define DEFINE_SMB3_OPEN_DONE_EVENT(name) \ 1358 DEFINE_EVENT(smb3_open_done_class, smb3_##name, \ 1359 TP_PROTO(unsigned int xid, \ 1360 __u64 fid, \ 1361 __u32 tid, \ 1362 __u64 sesid, \ 1363 int create_options, \ 1364 int desired_access, \ 1365 __u8 oplock), \ 1366 TP_ARGS(xid, fid, tid, sesid, create_options, desired_access, oplock)) 1367 1368 DEFINE_SMB3_OPEN_DONE_EVENT(open_done); 1369 DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done); 1370 1371 TRACE_EVENT(smb3_open_cached, 1372 TP_PROTO(unsigned int xid, 1373 __u32 tid, 1374 __u64 sesid, 1375 __u64 fid, 1376 unsigned int oflags, 1377 unsigned int cflags), 1378 TP_ARGS(xid, tid, sesid, fid, oflags, cflags), 1379 TP_STRUCT__entry( 1380 __field(unsigned int, xid) 1381 __field(__u32, tid) 1382 __field(__u64, sesid) 1383 __field(__u64, fid) 1384 __field(unsigned int, oflags) 1385 __field(unsigned int, cflags) 1386 ), 1387 TP_fast_assign( 1388 __entry->xid = xid; 1389 __entry->tid = tid; 1390 __entry->sesid = sesid; 1391 __entry->fid = fid; 1392 __entry->oflags = oflags; 1393 __entry->cflags = cflags; 1394 ), 1395 TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx oflags=0x%x cflags=0x%x", 1396 __entry->xid, __entry->sesid, __entry->tid, __entry->fid, 1397 __entry->oflags, __entry->cflags) 1398 ); 1399 1400 TRACE_EVENT(smb3_close_cached, 1401 TP_PROTO(__u32 tid, 1402 __u64 sesid, 1403 __u64 fid, 1404 unsigned long delay_jiffies), 1405 TP_ARGS(tid, sesid, fid, delay_jiffies), 1406 TP_STRUCT__entry( 1407 __field(__u32, tid) 1408 __field(__u64, sesid) 1409 __field(__u64, fid) 1410 __field(unsigned long, delay_jiffies) 1411 ), 1412 TP_fast_assign( 1413 __entry->tid = tid; 1414 __entry->sesid = sesid; 1415 __entry->fid = fid; 1416 __entry->delay_jiffies = delay_jiffies; 1417 ), 1418 TP_printk("sid=0x%llx tid=0x%x fid=0x%llx delay_jiffies=%lu", 1419 __entry->sesid, __entry->tid, __entry->fid, __entry->delay_jiffies) 1420 ); 1421 1422 1423 DECLARE_EVENT_CLASS(smb3_lease_done_class, 1424 TP_PROTO(__u32 lease_state, 1425 __u32 tid, 1426 __u64 sesid, 1427 __u64 lease_key_low, 1428 __u64 lease_key_high), 1429 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high), 1430 TP_STRUCT__entry( 1431 __field(__u32, lease_state) 1432 __field(__u32, tid) 1433 __field(__u64, sesid) 1434 __field(__u64, lease_key_low) 1435 __field(__u64, lease_key_high) 1436 ), 1437 TP_fast_assign( 1438 __entry->lease_state = lease_state; 1439 __entry->tid = tid; 1440 __entry->sesid = sesid; 1441 __entry->lease_key_low = lease_key_low; 1442 __entry->lease_key_high = lease_key_high; 1443 ), 1444 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x", 1445 __entry->sesid, __entry->tid, __entry->lease_key_high, 1446 __entry->lease_key_low, __entry->lease_state) 1447 ) 1448 1449 #define DEFINE_SMB3_LEASE_DONE_EVENT(name) \ 1450 DEFINE_EVENT(smb3_lease_done_class, smb3_##name, \ 1451 TP_PROTO(__u32 lease_state, \ 1452 __u32 tid, \ 1453 __u64 sesid, \ 1454 __u64 lease_key_low, \ 1455 __u64 lease_key_high), \ 1456 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high)) 1457 1458 DEFINE_SMB3_LEASE_DONE_EVENT(lease_ack_done); 1459 /* Tracepoint when a lease break request is received/entered (includes epoch and flags) */ 1460 DECLARE_EVENT_CLASS(smb3_lease_enter_class, 1461 TP_PROTO(__u32 lease_state, 1462 __u32 flags, 1463 __u16 epoch, 1464 __u32 tid, 1465 __u64 sesid, 1466 __u64 lease_key_low, 1467 __u64 lease_key_high), 1468 TP_ARGS(lease_state, flags, epoch, tid, sesid, lease_key_low, lease_key_high), 1469 TP_STRUCT__entry( 1470 __field(__u32, lease_state) 1471 __field(__u32, flags) 1472 __field(__u16, epoch) 1473 __field(__u32, tid) 1474 __field(__u64, sesid) 1475 __field(__u64, lease_key_low) 1476 __field(__u64, lease_key_high) 1477 ), 1478 TP_fast_assign( 1479 __entry->lease_state = lease_state; 1480 __entry->flags = flags; 1481 __entry->epoch = epoch; 1482 __entry->tid = tid; 1483 __entry->sesid = sesid; 1484 __entry->lease_key_low = lease_key_low; 1485 __entry->lease_key_high = lease_key_high; 1486 ), 1487 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x flags=0x%x epoch=%u", 1488 __entry->sesid, __entry->tid, __entry->lease_key_high, 1489 __entry->lease_key_low, __entry->lease_state, __entry->flags, __entry->epoch) 1490 ) 1491 1492 #define DEFINE_SMB3_LEASE_ENTER_EVENT(name) \ 1493 DEFINE_EVENT(smb3_lease_enter_class, smb3_##name, \ 1494 TP_PROTO(__u32 lease_state, \ 1495 __u32 flags, \ 1496 __u16 epoch, \ 1497 __u32 tid, \ 1498 __u64 sesid, \ 1499 __u64 lease_key_low, \ 1500 __u64 lease_key_high), \ 1501 TP_ARGS(lease_state, flags, epoch, tid, sesid, lease_key_low, lease_key_high)) 1502 1503 DEFINE_SMB3_LEASE_ENTER_EVENT(lease_break_enter); 1504 /* Lease not found: reuse lease_enter payload (includes epoch and flags) */ 1505 DEFINE_SMB3_LEASE_ENTER_EVENT(lease_not_found); 1506 1507 DECLARE_EVENT_CLASS(smb3_lease_err_class, 1508 TP_PROTO(__u32 lease_state, 1509 __u32 tid, 1510 __u64 sesid, 1511 __u64 lease_key_low, 1512 __u64 lease_key_high, 1513 int rc), 1514 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc), 1515 TP_STRUCT__entry( 1516 __field(__u32, lease_state) 1517 __field(__u32, tid) 1518 __field(__u64, sesid) 1519 __field(__u64, lease_key_low) 1520 __field(__u64, lease_key_high) 1521 __field(int, rc) 1522 ), 1523 TP_fast_assign( 1524 __entry->lease_state = lease_state; 1525 __entry->tid = tid; 1526 __entry->sesid = sesid; 1527 __entry->lease_key_low = lease_key_low; 1528 __entry->lease_key_high = lease_key_high; 1529 __entry->rc = rc; 1530 ), 1531 TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d", 1532 __entry->sesid, __entry->tid, __entry->lease_key_high, 1533 __entry->lease_key_low, __entry->lease_state, __entry->rc) 1534 ) 1535 1536 #define DEFINE_SMB3_LEASE_ERR_EVENT(name) \ 1537 DEFINE_EVENT(smb3_lease_err_class, smb3_##name, \ 1538 TP_PROTO(__u32 lease_state, \ 1539 __u32 tid, \ 1540 __u64 sesid, \ 1541 __u64 lease_key_low, \ 1542 __u64 lease_key_high, \ 1543 int rc), \ 1544 TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc)) 1545 1546 DEFINE_SMB3_LEASE_ERR_EVENT(lease_ack_err); 1547 1548 DECLARE_EVENT_CLASS(smb3_connect_class, 1549 TP_PROTO(char *hostname, 1550 __u64 conn_id, 1551 const struct __kernel_sockaddr_storage *dst_addr), 1552 TP_ARGS(hostname, conn_id, dst_addr), 1553 TP_STRUCT__entry( 1554 __string(hostname, hostname) 1555 __field(__u64, conn_id) 1556 __array(__u8, dst_addr, sizeof(struct sockaddr_storage)) 1557 ), 1558 TP_fast_assign( 1559 struct sockaddr_storage *pss = NULL; 1560 1561 __entry->conn_id = conn_id; 1562 pss = (struct sockaddr_storage *)__entry->dst_addr; 1563 *pss = *dst_addr; 1564 __assign_str(hostname); 1565 ), 1566 TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc", 1567 __entry->conn_id, 1568 __get_str(hostname), 1569 __entry->dst_addr) 1570 ) 1571 1572 #define DEFINE_SMB3_CONNECT_EVENT(name) \ 1573 DEFINE_EVENT(smb3_connect_class, smb3_##name, \ 1574 TP_PROTO(char *hostname, \ 1575 __u64 conn_id, \ 1576 const struct __kernel_sockaddr_storage *addr), \ 1577 TP_ARGS(hostname, conn_id, addr)) 1578 1579 DEFINE_SMB3_CONNECT_EVENT(connect_done); 1580 DEFINE_SMB3_CONNECT_EVENT(smbd_connect_done); 1581 DEFINE_SMB3_CONNECT_EVENT(smbd_connect_err); 1582 1583 DECLARE_EVENT_CLASS(smb3_connect_err_class, 1584 TP_PROTO(char *hostname, __u64 conn_id, 1585 const struct __kernel_sockaddr_storage *dst_addr, int rc), 1586 TP_ARGS(hostname, conn_id, dst_addr, rc), 1587 TP_STRUCT__entry( 1588 __string(hostname, hostname) 1589 __field(__u64, conn_id) 1590 __array(__u8, dst_addr, sizeof(struct sockaddr_storage)) 1591 __field(int, rc) 1592 ), 1593 TP_fast_assign( 1594 struct sockaddr_storage *pss = NULL; 1595 1596 __entry->conn_id = conn_id; 1597 __entry->rc = rc; 1598 pss = (struct sockaddr_storage *)__entry->dst_addr; 1599 *pss = *dst_addr; 1600 __assign_str(hostname); 1601 ), 1602 TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc", 1603 __entry->rc, 1604 __entry->conn_id, 1605 __get_str(hostname), 1606 __entry->dst_addr) 1607 ) 1608 1609 #define DEFINE_SMB3_CONNECT_ERR_EVENT(name) \ 1610 DEFINE_EVENT(smb3_connect_err_class, smb3_##name, \ 1611 TP_PROTO(char *hostname, \ 1612 __u64 conn_id, \ 1613 const struct __kernel_sockaddr_storage *addr, \ 1614 int rc), \ 1615 TP_ARGS(hostname, conn_id, addr, rc)) 1616 1617 DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err); 1618 1619 DECLARE_EVENT_CLASS(smb3_sess_setup_err_class, 1620 TP_PROTO(char *hostname, char *username, __u64 conn_id, 1621 const struct __kernel_sockaddr_storage *dst_addr, int rc), 1622 TP_ARGS(hostname, username, conn_id, dst_addr, rc), 1623 TP_STRUCT__entry( 1624 __string(hostname, hostname) 1625 __string(username, username) 1626 __field(__u64, conn_id) 1627 __array(__u8, dst_addr, sizeof(struct sockaddr_storage)) 1628 __field(int, rc) 1629 ), 1630 TP_fast_assign( 1631 struct sockaddr_storage *pss = NULL; 1632 1633 __entry->conn_id = conn_id; 1634 __entry->rc = rc; 1635 pss = (struct sockaddr_storage *)__entry->dst_addr; 1636 *pss = *dst_addr; 1637 __assign_str(hostname); 1638 __assign_str(username); 1639 ), 1640 TP_printk("rc=%d user=%s conn_id=0x%llx server=%s addr=%pISpsfc", 1641 __entry->rc, 1642 __get_str(username), 1643 __entry->conn_id, 1644 __get_str(hostname), 1645 __entry->dst_addr) 1646 ) 1647 1648 #define DEFINE_SMB3_SES_SETUP_ERR_EVENT(name) \ 1649 DEFINE_EVENT(smb3_sess_setup_err_class, smb3_##name, \ 1650 TP_PROTO(char *hostname, \ 1651 char *username, \ 1652 __u64 conn_id, \ 1653 const struct __kernel_sockaddr_storage *addr, \ 1654 int rc), \ 1655 TP_ARGS(hostname, username, conn_id, addr, rc)) 1656 1657 DEFINE_SMB3_SES_SETUP_ERR_EVENT(key_expired); 1658 1659 DECLARE_EVENT_CLASS(smb3_reconnect_class, 1660 TP_PROTO(__u64 currmid, 1661 __u64 conn_id, 1662 char *hostname), 1663 TP_ARGS(currmid, conn_id, hostname), 1664 TP_STRUCT__entry( 1665 __field(__u64, currmid) 1666 __field(__u64, conn_id) 1667 __string(hostname, hostname) 1668 ), 1669 TP_fast_assign( 1670 __entry->currmid = currmid; 1671 __entry->conn_id = conn_id; 1672 __assign_str(hostname); 1673 ), 1674 TP_printk("conn_id=0x%llx server=%s current_mid=%llu", 1675 __entry->conn_id, 1676 __get_str(hostname), 1677 __entry->currmid) 1678 ) 1679 1680 #define DEFINE_SMB3_RECONNECT_EVENT(name) \ 1681 DEFINE_EVENT(smb3_reconnect_class, smb3_##name, \ 1682 TP_PROTO(__u64 currmid, \ 1683 __u64 conn_id, \ 1684 char *hostname), \ 1685 TP_ARGS(currmid, conn_id, hostname)) 1686 1687 DEFINE_SMB3_RECONNECT_EVENT(reconnect); 1688 DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect); 1689 1690 DECLARE_EVENT_CLASS(smb3_ses_class, 1691 TP_PROTO(__u64 sesid), 1692 TP_ARGS(sesid), 1693 TP_STRUCT__entry( 1694 __field(__u64, sesid) 1695 ), 1696 TP_fast_assign( 1697 __entry->sesid = sesid; 1698 ), 1699 TP_printk("sid=0x%llx", 1700 __entry->sesid) 1701 ) 1702 1703 #define DEFINE_SMB3_SES_EVENT(name) \ 1704 DEFINE_EVENT(smb3_ses_class, smb3_##name, \ 1705 TP_PROTO(__u64 sesid), \ 1706 TP_ARGS(sesid)) 1707 1708 DEFINE_SMB3_SES_EVENT(ses_not_found); 1709 1710 DECLARE_EVENT_CLASS(smb3_ioctl_class, 1711 TP_PROTO(unsigned int xid, 1712 __u64 fid, 1713 unsigned int command), 1714 TP_ARGS(xid, fid, command), 1715 TP_STRUCT__entry( 1716 __field(unsigned int, xid) 1717 __field(__u64, fid) 1718 __field(unsigned int, command) 1719 ), 1720 TP_fast_assign( 1721 __entry->xid = xid; 1722 __entry->fid = fid; 1723 __entry->command = command; 1724 ), 1725 TP_printk("xid=%u fid=0x%llx ioctl cmd=0x%x", 1726 __entry->xid, __entry->fid, __entry->command) 1727 ) 1728 1729 #define DEFINE_SMB3_IOCTL_EVENT(name) \ 1730 DEFINE_EVENT(smb3_ioctl_class, smb3_##name, \ 1731 TP_PROTO(unsigned int xid, \ 1732 __u64 fid, \ 1733 unsigned int command), \ 1734 TP_ARGS(xid, fid, command)) 1735 1736 DEFINE_SMB3_IOCTL_EVENT(ioctl); 1737 DEFINE_SMB3_IOCTL_EVENT(unsupported_ioctl); 1738 1739 DECLARE_EVENT_CLASS(smb3_shutdown_class, 1740 TP_PROTO(__u32 flags, 1741 __u32 tid), 1742 TP_ARGS(flags, tid), 1743 TP_STRUCT__entry( 1744 __field(__u32, flags) 1745 __field(__u32, tid) 1746 ), 1747 TP_fast_assign( 1748 __entry->flags = flags; 1749 __entry->tid = tid; 1750 ), 1751 TP_printk("flags=0x%x tid=0x%x", 1752 __entry->flags, __entry->tid) 1753 ) 1754 1755 #define DEFINE_SMB3_SHUTDOWN_EVENT(name) \ 1756 DEFINE_EVENT(smb3_shutdown_class, smb3_##name, \ 1757 TP_PROTO(__u32 flags, \ 1758 __u32 tid), \ 1759 TP_ARGS(flags, tid)) 1760 1761 DEFINE_SMB3_SHUTDOWN_EVENT(shutdown_enter); 1762 DEFINE_SMB3_SHUTDOWN_EVENT(shutdown_done); 1763 1764 DECLARE_EVENT_CLASS(smb3_shutdown_err_class, 1765 TP_PROTO(int rc, 1766 __u32 flags, 1767 __u32 tid), 1768 TP_ARGS(rc, flags, tid), 1769 TP_STRUCT__entry( 1770 __field(int, rc) 1771 __field(__u32, flags) 1772 __field(__u32, tid) 1773 ), 1774 TP_fast_assign( 1775 __entry->rc = rc; 1776 __entry->flags = flags; 1777 __entry->tid = tid; 1778 ), 1779 TP_printk("rc=%d flags=0x%x tid=0x%x", 1780 __entry->rc, __entry->flags, __entry->tid) 1781 ) 1782 1783 #define DEFINE_SMB3_SHUTDOWN_ERR_EVENT(name) \ 1784 DEFINE_EVENT(smb3_shutdown_err_class, smb3_##name, \ 1785 TP_PROTO(int rc, \ 1786 __u32 flags, \ 1787 __u32 tid), \ 1788 TP_ARGS(rc, flags, tid)) 1789 1790 DEFINE_SMB3_SHUTDOWN_ERR_EVENT(shutdown_err); 1791 1792 DECLARE_EVENT_CLASS(smb3_credit_class, 1793 TP_PROTO(__u64 currmid, 1794 __u64 conn_id, 1795 char *hostname, 1796 int credits, 1797 int credits_to_add, 1798 int in_flight), 1799 TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight), 1800 TP_STRUCT__entry( 1801 __field(__u64, currmid) 1802 __field(__u64, conn_id) 1803 __string(hostname, hostname) 1804 __field(int, credits) 1805 __field(int, credits_to_add) 1806 __field(int, in_flight) 1807 ), 1808 TP_fast_assign( 1809 __entry->currmid = currmid; 1810 __entry->conn_id = conn_id; 1811 __assign_str(hostname); 1812 __entry->credits = credits; 1813 __entry->credits_to_add = credits_to_add; 1814 __entry->in_flight = in_flight; 1815 ), 1816 TP_printk("conn_id=0x%llx server=%s current_mid=%llu " 1817 "credits=%d credit_change=%d in_flight=%d", 1818 __entry->conn_id, 1819 __get_str(hostname), 1820 __entry->currmid, 1821 __entry->credits, 1822 __entry->credits_to_add, 1823 __entry->in_flight) 1824 ) 1825 1826 #define DEFINE_SMB3_CREDIT_EVENT(name) \ 1827 DEFINE_EVENT(smb3_credit_class, smb3_##name, \ 1828 TP_PROTO(__u64 currmid, \ 1829 __u64 conn_id, \ 1830 char *hostname, \ 1831 int credits, \ 1832 int credits_to_add, \ 1833 int in_flight), \ 1834 TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight)) 1835 1836 DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits); 1837 DEFINE_SMB3_CREDIT_EVENT(reconnect_detected); 1838 DEFINE_SMB3_CREDIT_EVENT(credit_timeout); 1839 DEFINE_SMB3_CREDIT_EVENT(insufficient_credits); 1840 DEFINE_SMB3_CREDIT_EVENT(too_many_credits); 1841 DEFINE_SMB3_CREDIT_EVENT(add_credits); 1842 DEFINE_SMB3_CREDIT_EVENT(adj_credits); 1843 DEFINE_SMB3_CREDIT_EVENT(hdr_credits); 1844 DEFINE_SMB3_CREDIT_EVENT(nblk_credits); 1845 DEFINE_SMB3_CREDIT_EVENT(pend_credits); 1846 DEFINE_SMB3_CREDIT_EVENT(wait_credits); 1847 DEFINE_SMB3_CREDIT_EVENT(waitff_credits); 1848 DEFINE_SMB3_CREDIT_EVENT(overflow_credits); 1849 DEFINE_SMB3_CREDIT_EVENT(set_credits); 1850 1851 TRACE_EVENT(smb3_kerberos_auth, 1852 TP_PROTO(struct TCP_Server_Info *server, 1853 struct cifs_ses *ses, 1854 int rc), 1855 TP_ARGS(server, ses, rc), 1856 TP_STRUCT__entry( 1857 __field(pid_t, pid) 1858 __field(uid_t, uid) 1859 __field(uid_t, cruid) 1860 __string(host, server->hostname) 1861 __string(user, ses->user_name) 1862 __array(__u8, addr, sizeof(struct sockaddr_storage)) 1863 __array(char, sec, sizeof("ntlmsspi")) 1864 __array(char, upcall_target, sizeof("mount")) 1865 __field(int, rc) 1866 ), 1867 TP_fast_assign( 1868 __entry->pid = current->pid; 1869 __entry->uid = from_kuid_munged(&init_user_ns, ses->linux_uid); 1870 __entry->cruid = from_kuid_munged(&init_user_ns, ses->cred_uid); 1871 __assign_str(host); 1872 __assign_str(user); 1873 memcpy(__entry->addr, &server->dstaddr, sizeof(__entry->addr)); 1874 1875 if (server->sec_kerberos) 1876 memcpy(__entry->sec, "krb5", sizeof("krb5")); 1877 else if (server->sec_mskerberos) 1878 memcpy(__entry->sec, "mskrb5", sizeof("mskrb5")); 1879 else if (server->sec_iakerb) 1880 memcpy(__entry->sec, "iakerb", sizeof("iakerb")); 1881 else 1882 memcpy(__entry->sec, "krb5", sizeof("krb5")); 1883 1884 if (ses->upcall_target == UPTARGET_MOUNT) 1885 memcpy(__entry->upcall_target, "mount", sizeof("mount")); 1886 else 1887 memcpy(__entry->upcall_target, "app", sizeof("app")); 1888 __entry->rc = rc; 1889 ), 1890 TP_printk("vers=%d host=%s ip=%pISpsfc sec=%s uid=%d cruid=%d user=%s pid=%d upcall_target=%s err=%d", 1891 CIFS_SPNEGO_UPCALL_VERSION, __get_str(host), __entry->addr, 1892 __entry->sec, __entry->uid, __entry->cruid, __get_str(user), 1893 __entry->pid, __entry->upcall_target, __entry->rc)) 1894 1895 TRACE_EVENT(smb3_tcon_ref, 1896 TP_PROTO(unsigned int tcon_debug_id, int ref, 1897 enum smb3_tcon_ref_trace trace), 1898 TP_ARGS(tcon_debug_id, ref, trace), 1899 TP_STRUCT__entry( 1900 __field(unsigned int, tcon) 1901 __field(int, ref) 1902 __field(enum smb3_tcon_ref_trace, trace) 1903 ), 1904 TP_fast_assign( 1905 __entry->tcon = tcon_debug_id; 1906 __entry->ref = ref; 1907 __entry->trace = trace; 1908 ), 1909 TP_printk("TC=%08x %s r=%u", 1910 __entry->tcon, 1911 __print_symbolic(__entry->trace, smb3_tcon_ref_traces), 1912 __entry->ref) 1913 ); 1914 1915 TRACE_EVENT(smb3_rw_credits, 1916 TP_PROTO(unsigned int rreq_debug_id, 1917 unsigned int subreq_debug_index, 1918 unsigned int subreq_credits, 1919 unsigned int server_credits, 1920 int server_in_flight, 1921 int credit_change, 1922 enum smb3_rw_credits_trace trace), 1923 TP_ARGS(rreq_debug_id, subreq_debug_index, subreq_credits, 1924 server_credits, server_in_flight, credit_change, trace), 1925 TP_STRUCT__entry( 1926 __field(unsigned int, rreq_debug_id) 1927 __field(unsigned int, subreq_debug_index) 1928 __field(unsigned int, subreq_credits) 1929 __field(unsigned int, server_credits) 1930 __field(int, in_flight) 1931 __field(int, credit_change) 1932 __field(enum smb3_rw_credits_trace, trace) 1933 ), 1934 TP_fast_assign( 1935 __entry->rreq_debug_id = rreq_debug_id; 1936 __entry->subreq_debug_index = subreq_debug_index; 1937 __entry->subreq_credits = subreq_credits; 1938 __entry->server_credits = server_credits; 1939 __entry->in_flight = server_in_flight; 1940 __entry->credit_change = credit_change; 1941 __entry->trace = trace; 1942 ), 1943 TP_printk("R=%08x[%x] %s cred=%u chg=%d pool=%u ifl=%d", 1944 __entry->rreq_debug_id, __entry->subreq_debug_index, 1945 __print_symbolic(__entry->trace, smb3_rw_credits_traces), 1946 __entry->subreq_credits, __entry->credit_change, 1947 __entry->server_credits, __entry->in_flight) 1948 ); 1949 1950 TRACE_EVENT(smb3_eio, 1951 TP_PROTO(enum smb_eio_trace trace, unsigned long info, unsigned long info2), 1952 TP_ARGS(trace, info, info2), 1953 TP_STRUCT__entry( 1954 __field(enum smb_eio_trace, trace) 1955 __field(unsigned long, info) 1956 __field(unsigned long, info2) 1957 ), 1958 TP_fast_assign( 1959 __entry->trace = trace; 1960 __entry->info = info; 1961 __entry->info2 = info2; 1962 ), 1963 TP_printk("%s info=%lx,%lx", 1964 __print_symbolic(__entry->trace, smb_eio_traces), 1965 __entry->info, __entry->info2) 1966 ); 1967 1968 #undef EM 1969 #undef E_ 1970 #endif /* _CIFS_TRACE_H */ 1971 1972 #undef TRACE_INCLUDE_PATH 1973 #define TRACE_INCLUDE_PATH . 1974 #define TRACE_INCLUDE_FILE trace 1975 #include <trace/define_trace.h> 1976