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