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