File Index
Files and directories
Sign in
FILE

trace.h

File preview with syntax highlighting.

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