xref: /openbmc/linux/fs/smb/client/trace.h (revision 07e76ea1)
138c8a9a5SSteve French /* SPDX-License-Identifier: GPL-2.0 */
238c8a9a5SSteve French /*
338c8a9a5SSteve French  *   Copyright (C) 2018, Microsoft Corporation.
438c8a9a5SSteve French  *
538c8a9a5SSteve French  *   Author(s): Steve French <stfrench@microsoft.com>
607e76ea1SDavid Howells  *
707e76ea1SDavid Howells  * Please use this 3-part article as a reference for writing new tracepoints:
807e76ea1SDavid Howells  * https://lwn.net/Articles/379903/
938c8a9a5SSteve French  */
1038c8a9a5SSteve French #undef TRACE_SYSTEM
1138c8a9a5SSteve French #define TRACE_SYSTEM cifs
1238c8a9a5SSteve French 
1338c8a9a5SSteve French #if !defined(_CIFS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
1438c8a9a5SSteve French #define _CIFS_TRACE_H
1538c8a9a5SSteve French 
1638c8a9a5SSteve French #include <linux/tracepoint.h>
1738c8a9a5SSteve French #include <linux/net.h>
1838c8a9a5SSteve French #include <linux/inet.h>
1938c8a9a5SSteve French 
2038c8a9a5SSteve French /*
2107e76ea1SDavid Howells  * Specify enums for tracing information.
2238c8a9a5SSteve French  */
2307e76ea1SDavid Howells #define smb3_tcon_ref_traces					      \
2407e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_dec_dfs_refer,		"DEC DfsRef") \
2507e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_free,			"FRE       ") \
2607e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_free_fail,		"FRE Fail  ") \
2707e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_free_ipc,		"FRE Ipc   ") \
2807e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_free_ipc_fail,		"FRE Ipc-F ") \
2907e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_free_reconnect_server,	"FRE Reconn") \
3007e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_get_cancelled_close,	"GET Cn-Cls") \
3107e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_get_dfs_refer,		"GET DfsRef") \
3207e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_get_find,		"GET Find  ") \
3307e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_get_find_sess_tcon,	"GET FndSes") \
3407e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_get_reconnect_server,	"GET Reconn") \
3507e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_new,			"NEW       ") \
3607e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_new_ipc,		"NEW Ipc   ") \
3707e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_new_reconnect_server,	"NEW Reconn") \
3807e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_put_cancelled_close,	"PUT Cn-Cls") \
3907e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_put_cancelled_close_fid, "PUT Cn-Fid") \
4007e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_put_cancelled_mid,	"PUT Cn-Mid") \
4107e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_put_mnt_ctx,		"PUT MntCtx") \
4207e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_put_reconnect_server,	"PUT Reconn") \
4307e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_put_tlink,		"PUT Tlink ") \
4407e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_see_cancelled_close,	"SEE Cn-Cls") \
4507e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_see_fscache_collision,	"SEE FV-CO!") \
4607e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_see_fscache_okay,	"SEE FV-Ok ") \
4707e76ea1SDavid Howells 	EM(netfs_trace_tcon_ref_see_fscache_relinq,	"SEE FV-Rlq") \
4807e76ea1SDavid Howells 	E_(netfs_trace_tcon_ref_see_umount,		"SEE Umount")
4907e76ea1SDavid Howells 
5007e76ea1SDavid Howells #undef EM
5107e76ea1SDavid Howells #undef E_
5207e76ea1SDavid Howells 
5307e76ea1SDavid Howells /*
5407e76ea1SDavid Howells  * Define those tracing enums.
5507e76ea1SDavid Howells  */
5607e76ea1SDavid Howells #ifndef __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY
5707e76ea1SDavid Howells #define __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY
5807e76ea1SDavid Howells 
5907e76ea1SDavid Howells #define EM(a, b) a,
6007e76ea1SDavid Howells #define E_(a, b) a
6107e76ea1SDavid Howells 
6207e76ea1SDavid Howells enum smb3_tcon_ref_trace { smb3_tcon_ref_traces } __mode(byte);
6307e76ea1SDavid Howells 
6407e76ea1SDavid Howells #undef EM
6507e76ea1SDavid Howells #undef E_
6607e76ea1SDavid Howells #endif
6707e76ea1SDavid Howells 
6807e76ea1SDavid Howells /*
6907e76ea1SDavid Howells  * Export enum symbols via userspace.
7007e76ea1SDavid Howells  */
7107e76ea1SDavid Howells #define EM(a, b) TRACE_DEFINE_ENUM(a);
7207e76ea1SDavid Howells #define E_(a, b) TRACE_DEFINE_ENUM(a);
7307e76ea1SDavid Howells 
7407e76ea1SDavid Howells smb3_tcon_ref_traces;
7507e76ea1SDavid Howells 
7607e76ea1SDavid Howells #undef EM
7707e76ea1SDavid Howells #undef E_
7807e76ea1SDavid Howells 
7907e76ea1SDavid Howells /*
8007e76ea1SDavid Howells  * Now redefine the EM() and E_() macros to map the enums to the strings that
8107e76ea1SDavid Howells  * will be printed in the output.
8207e76ea1SDavid Howells  */
8307e76ea1SDavid Howells #define EM(a, b)	{ a, b },
8407e76ea1SDavid Howells #define E_(a, b)	{ a, b }
8538c8a9a5SSteve French 
8638c8a9a5SSteve French /* For logging errors in read or write */
8738c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_rw_err_class,
8838c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
8938c8a9a5SSteve French 		__u64	fid,
9038c8a9a5SSteve French 		__u32	tid,
9138c8a9a5SSteve French 		__u64	sesid,
9238c8a9a5SSteve French 		__u64	offset,
9338c8a9a5SSteve French 		__u32	len,
9438c8a9a5SSteve French 		int	rc),
9538c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset, len, rc),
9638c8a9a5SSteve French 	TP_STRUCT__entry(
9738c8a9a5SSteve French 		__field(unsigned int, xid)
9838c8a9a5SSteve French 		__field(__u64, fid)
9938c8a9a5SSteve French 		__field(__u32, tid)
10038c8a9a5SSteve French 		__field(__u64, sesid)
10138c8a9a5SSteve French 		__field(__u64, offset)
10238c8a9a5SSteve French 		__field(__u32, len)
10338c8a9a5SSteve French 		__field(int, rc)
10438c8a9a5SSteve French 	),
10538c8a9a5SSteve French 	TP_fast_assign(
10638c8a9a5SSteve French 		__entry->xid = xid;
10738c8a9a5SSteve French 		__entry->fid = fid;
10838c8a9a5SSteve French 		__entry->tid = tid;
10938c8a9a5SSteve French 		__entry->sesid = sesid;
11038c8a9a5SSteve French 		__entry->offset = offset;
11138c8a9a5SSteve French 		__entry->len = len;
11238c8a9a5SSteve French 		__entry->rc = rc;
11338c8a9a5SSteve French 	),
11438c8a9a5SSteve French 	TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d",
11538c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
11638c8a9a5SSteve French 		__entry->offset, __entry->len, __entry->rc)
11738c8a9a5SSteve French )
11838c8a9a5SSteve French 
11938c8a9a5SSteve French #define DEFINE_SMB3_RW_ERR_EVENT(name)          \
12038c8a9a5SSteve French DEFINE_EVENT(smb3_rw_err_class, smb3_##name,    \
12138c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
12238c8a9a5SSteve French 		__u64	fid,			\
12338c8a9a5SSteve French 		__u32	tid,			\
12438c8a9a5SSteve French 		__u64	sesid,			\
12538c8a9a5SSteve French 		__u64	offset,			\
12638c8a9a5SSteve French 		__u32	len,			\
12738c8a9a5SSteve French 		int	rc),			\
12838c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset, len, rc))
12938c8a9a5SSteve French 
13038c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(write_err);
13138c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(read_err);
13238c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(query_dir_err);
13338c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(zero_err);
13438c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(falloc_err);
13538c8a9a5SSteve French 
13638c8a9a5SSteve French 
13738c8a9a5SSteve French /* For logging successful read or write */
13838c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_rw_done_class,
13938c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
14038c8a9a5SSteve French 		__u64	fid,
14138c8a9a5SSteve French 		__u32	tid,
14238c8a9a5SSteve French 		__u64	sesid,
14338c8a9a5SSteve French 		__u64	offset,
14438c8a9a5SSteve French 		__u32	len),
14538c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset, len),
14638c8a9a5SSteve French 	TP_STRUCT__entry(
14738c8a9a5SSteve French 		__field(unsigned int, xid)
14838c8a9a5SSteve French 		__field(__u64, fid)
14938c8a9a5SSteve French 		__field(__u32, tid)
15038c8a9a5SSteve French 		__field(__u64, sesid)
15138c8a9a5SSteve French 		__field(__u64, offset)
15238c8a9a5SSteve French 		__field(__u32, len)
15338c8a9a5SSteve French 	),
15438c8a9a5SSteve French 	TP_fast_assign(
15538c8a9a5SSteve French 		__entry->xid = xid;
15638c8a9a5SSteve French 		__entry->fid = fid;
15738c8a9a5SSteve French 		__entry->tid = tid;
15838c8a9a5SSteve French 		__entry->sesid = sesid;
15938c8a9a5SSteve French 		__entry->offset = offset;
16038c8a9a5SSteve French 		__entry->len = len;
16138c8a9a5SSteve French 	),
16238c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x",
16338c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
16438c8a9a5SSteve French 		__entry->offset, __entry->len)
16538c8a9a5SSteve French )
16638c8a9a5SSteve French 
16738c8a9a5SSteve French #define DEFINE_SMB3_RW_DONE_EVENT(name)         \
16838c8a9a5SSteve French DEFINE_EVENT(smb3_rw_done_class, smb3_##name,   \
16938c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
17038c8a9a5SSteve French 		__u64	fid,			\
17138c8a9a5SSteve French 		__u32	tid,			\
17238c8a9a5SSteve French 		__u64	sesid,			\
17338c8a9a5SSteve French 		__u64	offset,			\
17438c8a9a5SSteve French 		__u32	len),			\
17538c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset, len))
17638c8a9a5SSteve French 
17738c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(write_enter);
17838c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(read_enter);
17938c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(query_dir_enter);
18038c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(zero_enter);
18138c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(falloc_enter);
18238c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(write_done);
18338c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(read_done);
18438c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(query_dir_done);
18538c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(zero_done);
18638c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(falloc_done);
18738c8a9a5SSteve French 
18838c8a9a5SSteve French /* For logging successful set EOF (truncate) */
18938c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_eof_class,
19038c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
19138c8a9a5SSteve French 		__u64	fid,
19238c8a9a5SSteve French 		__u32	tid,
19338c8a9a5SSteve French 		__u64	sesid,
19438c8a9a5SSteve French 		__u64	offset),
19538c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset),
19638c8a9a5SSteve French 	TP_STRUCT__entry(
19738c8a9a5SSteve French 		__field(unsigned int, xid)
19838c8a9a5SSteve French 		__field(__u64, fid)
19938c8a9a5SSteve French 		__field(__u32, tid)
20038c8a9a5SSteve French 		__field(__u64, sesid)
20138c8a9a5SSteve French 		__field(__u64, offset)
20238c8a9a5SSteve French 	),
20338c8a9a5SSteve French 	TP_fast_assign(
20438c8a9a5SSteve French 		__entry->xid = xid;
20538c8a9a5SSteve French 		__entry->fid = fid;
20638c8a9a5SSteve French 		__entry->tid = tid;
20738c8a9a5SSteve French 		__entry->sesid = sesid;
20838c8a9a5SSteve French 		__entry->offset = offset;
20938c8a9a5SSteve French 	),
21038c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx",
21138c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
21238c8a9a5SSteve French 		__entry->offset)
21338c8a9a5SSteve French )
21438c8a9a5SSteve French 
21538c8a9a5SSteve French #define DEFINE_SMB3_EOF_EVENT(name)         \
21638c8a9a5SSteve French DEFINE_EVENT(smb3_eof_class, smb3_##name,   \
21738c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
21838c8a9a5SSteve French 		__u64	fid,			\
21938c8a9a5SSteve French 		__u32	tid,			\
22038c8a9a5SSteve French 		__u64	sesid,			\
22138c8a9a5SSteve French 		__u64	offset),		\
22238c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset))
22338c8a9a5SSteve French 
22438c8a9a5SSteve French DEFINE_SMB3_EOF_EVENT(set_eof);
22538c8a9a5SSteve French 
22638c8a9a5SSteve French /*
22738c8a9a5SSteve French  * For handle based calls other than read and write, and get/set info
22838c8a9a5SSteve French  */
22938c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_fd_class,
23038c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
23138c8a9a5SSteve French 		__u64	fid,
23238c8a9a5SSteve French 		__u32	tid,
23338c8a9a5SSteve French 		__u64	sesid),
23438c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid),
23538c8a9a5SSteve French 	TP_STRUCT__entry(
23638c8a9a5SSteve French 		__field(unsigned int, xid)
23738c8a9a5SSteve French 		__field(__u64, fid)
23838c8a9a5SSteve French 		__field(__u32, tid)
23938c8a9a5SSteve French 		__field(__u64, sesid)
24038c8a9a5SSteve French 	),
24138c8a9a5SSteve French 	TP_fast_assign(
24238c8a9a5SSteve French 		__entry->xid = xid;
24338c8a9a5SSteve French 		__entry->fid = fid;
24438c8a9a5SSteve French 		__entry->tid = tid;
24538c8a9a5SSteve French 		__entry->sesid = sesid;
24638c8a9a5SSteve French 	),
24738c8a9a5SSteve French 	TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx",
24838c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid)
24938c8a9a5SSteve French )
25038c8a9a5SSteve French 
25138c8a9a5SSteve French #define DEFINE_SMB3_FD_EVENT(name)          \
25238c8a9a5SSteve French DEFINE_EVENT(smb3_fd_class, smb3_##name,    \
25338c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
25438c8a9a5SSteve French 		__u64	fid,			\
25538c8a9a5SSteve French 		__u32	tid,			\
25638c8a9a5SSteve French 		__u64	sesid),			\
25738c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid))
25838c8a9a5SSteve French 
25938c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(flush_enter);
26038c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(flush_done);
26138c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(close_enter);
26238c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(close_done);
26338c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(oplock_not_found);
26438c8a9a5SSteve French 
26538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_fd_err_class,
26638c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
26738c8a9a5SSteve French 		__u64	fid,
26838c8a9a5SSteve French 		__u32	tid,
26938c8a9a5SSteve French 		__u64	sesid,
27038c8a9a5SSteve French 		int	rc),
27138c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, rc),
27238c8a9a5SSteve French 	TP_STRUCT__entry(
27338c8a9a5SSteve French 		__field(unsigned int, xid)
27438c8a9a5SSteve French 		__field(__u64, fid)
27538c8a9a5SSteve French 		__field(__u32, tid)
27638c8a9a5SSteve French 		__field(__u64, sesid)
27738c8a9a5SSteve French 		__field(int, rc)
27838c8a9a5SSteve French 	),
27938c8a9a5SSteve French 	TP_fast_assign(
28038c8a9a5SSteve French 		__entry->xid = xid;
28138c8a9a5SSteve French 		__entry->fid = fid;
28238c8a9a5SSteve French 		__entry->tid = tid;
28338c8a9a5SSteve French 		__entry->sesid = sesid;
28438c8a9a5SSteve French 		__entry->rc = rc;
28538c8a9a5SSteve French 	),
28638c8a9a5SSteve French 	TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d",
28738c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
28838c8a9a5SSteve French 		__entry->rc)
28938c8a9a5SSteve French )
29038c8a9a5SSteve French 
29138c8a9a5SSteve French #define DEFINE_SMB3_FD_ERR_EVENT(name)          \
29238c8a9a5SSteve French DEFINE_EVENT(smb3_fd_err_class, smb3_##name,    \
29338c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
29438c8a9a5SSteve French 		__u64	fid,			\
29538c8a9a5SSteve French 		__u32	tid,			\
29638c8a9a5SSteve French 		__u64	sesid,			\
29738c8a9a5SSteve French 		int	rc),			\
29838c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, rc))
29938c8a9a5SSteve French 
30038c8a9a5SSteve French DEFINE_SMB3_FD_ERR_EVENT(flush_err);
30138c8a9a5SSteve French DEFINE_SMB3_FD_ERR_EVENT(lock_err);
30238c8a9a5SSteve French DEFINE_SMB3_FD_ERR_EVENT(close_err);
30338c8a9a5SSteve French 
30438c8a9a5SSteve French /*
30538c8a9a5SSteve French  * For handle based query/set info calls
30638c8a9a5SSteve French  */
30738c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_enter_class,
30838c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
30938c8a9a5SSteve French 		__u64	fid,
31038c8a9a5SSteve French 		__u32	tid,
31138c8a9a5SSteve French 		__u64	sesid,
31238c8a9a5SSteve French 		__u8	infclass,
31338c8a9a5SSteve French 		__u32	type),
31438c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, infclass, type),
31538c8a9a5SSteve French 	TP_STRUCT__entry(
31638c8a9a5SSteve French 		__field(unsigned int, xid)
31738c8a9a5SSteve French 		__field(__u64, fid)
31838c8a9a5SSteve French 		__field(__u32, tid)
31938c8a9a5SSteve French 		__field(__u64, sesid)
32038c8a9a5SSteve French 		__field(__u8, infclass)
32138c8a9a5SSteve French 		__field(__u32, type)
32238c8a9a5SSteve French 	),
32338c8a9a5SSteve French 	TP_fast_assign(
32438c8a9a5SSteve French 		__entry->xid = xid;
32538c8a9a5SSteve French 		__entry->fid = fid;
32638c8a9a5SSteve French 		__entry->tid = tid;
32738c8a9a5SSteve French 		__entry->sesid = sesid;
32838c8a9a5SSteve French 		__entry->infclass = infclass;
32938c8a9a5SSteve French 		__entry->type = type;
33038c8a9a5SSteve French 	),
33138c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x",
33238c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
33338c8a9a5SSteve French 		__entry->infclass, __entry->type)
33438c8a9a5SSteve French )
33538c8a9a5SSteve French 
33638c8a9a5SSteve French #define DEFINE_SMB3_INF_ENTER_EVENT(name)          \
33738c8a9a5SSteve French DEFINE_EVENT(smb3_inf_enter_class, smb3_##name,    \
33838c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
33938c8a9a5SSteve French 		__u64	fid,			\
34038c8a9a5SSteve French 		__u32	tid,			\
34138c8a9a5SSteve French 		__u64	sesid,			\
34238c8a9a5SSteve French 		__u8	infclass,		\
34338c8a9a5SSteve French 		__u32	type),			\
34438c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, infclass, type))
34538c8a9a5SSteve French 
34638c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter);
34738c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(query_info_done);
34838c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(notify_enter);
34938c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(notify_done);
35038c8a9a5SSteve French 
35138c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_err_class,
35238c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
35338c8a9a5SSteve French 		__u64	fid,
35438c8a9a5SSteve French 		__u32	tid,
35538c8a9a5SSteve French 		__u64	sesid,
35638c8a9a5SSteve French 		__u8	infclass,
35738c8a9a5SSteve French 		__u32	type,
35838c8a9a5SSteve French 		int	rc),
35938c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, infclass, type, rc),
36038c8a9a5SSteve French 	TP_STRUCT__entry(
36138c8a9a5SSteve French 		__field(unsigned int, xid)
36238c8a9a5SSteve French 		__field(__u64, fid)
36338c8a9a5SSteve French 		__field(__u32, tid)
36438c8a9a5SSteve French 		__field(__u64, sesid)
36538c8a9a5SSteve French 		__field(__u8, infclass)
36638c8a9a5SSteve French 		__field(__u32, type)
36738c8a9a5SSteve French 		__field(int, rc)
36838c8a9a5SSteve French 	),
36938c8a9a5SSteve French 	TP_fast_assign(
37038c8a9a5SSteve French 		__entry->xid = xid;
37138c8a9a5SSteve French 		__entry->fid = fid;
37238c8a9a5SSteve French 		__entry->tid = tid;
37338c8a9a5SSteve French 		__entry->sesid = sesid;
37438c8a9a5SSteve French 		__entry->infclass = infclass;
37538c8a9a5SSteve French 		__entry->type = type;
37638c8a9a5SSteve French 		__entry->rc = rc;
37738c8a9a5SSteve French 	),
37838c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d",
37938c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
38038c8a9a5SSteve French 		__entry->infclass, __entry->type, __entry->rc)
38138c8a9a5SSteve French )
38238c8a9a5SSteve French 
38338c8a9a5SSteve French #define DEFINE_SMB3_INF_ERR_EVENT(name)          \
38438c8a9a5SSteve French DEFINE_EVENT(smb3_inf_err_class, smb3_##name,    \
38538c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
38638c8a9a5SSteve French 		__u64	fid,			\
38738c8a9a5SSteve French 		__u32	tid,			\
38838c8a9a5SSteve French 		__u64	sesid,			\
38938c8a9a5SSteve French 		__u8	infclass,		\
39038c8a9a5SSteve French 		__u32	type,			\
39138c8a9a5SSteve French 		int	rc),			\
39238c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, infclass, type, rc))
39338c8a9a5SSteve French 
39438c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(query_info_err);
39538c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(set_info_err);
39638c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(notify_err);
39738c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(fsctl_err);
39838c8a9a5SSteve French 
39938c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class,
40038c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
40138c8a9a5SSteve French 		__u32	tid,
40238c8a9a5SSteve French 		__u64	sesid,
40338c8a9a5SSteve French 		const char *full_path),
40438c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, full_path),
40538c8a9a5SSteve French 	TP_STRUCT__entry(
40638c8a9a5SSteve French 		__field(unsigned int, xid)
40738c8a9a5SSteve French 		__field(__u32, tid)
40838c8a9a5SSteve French 		__field(__u64, sesid)
40938c8a9a5SSteve French 		__string(path, full_path)
41038c8a9a5SSteve French 	),
41138c8a9a5SSteve French 	TP_fast_assign(
41238c8a9a5SSteve French 		__entry->xid = xid;
41338c8a9a5SSteve French 		__entry->tid = tid;
41438c8a9a5SSteve French 		__entry->sesid = sesid;
41538c8a9a5SSteve French 		__assign_str(path, full_path);
41638c8a9a5SSteve French 	),
41738c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s",
41838c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid,
41938c8a9a5SSteve French 		__get_str(path))
42038c8a9a5SSteve French )
42138c8a9a5SSteve French 
42238c8a9a5SSteve French #define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name)     \
42338c8a9a5SSteve French DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name,    \
42438c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
42538c8a9a5SSteve French 		__u32	tid,			\
42638c8a9a5SSteve French 		__u64	sesid,			\
42738c8a9a5SSteve French 		const char *full_path),		\
42838c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, full_path))
42938c8a9a5SSteve French 
43038c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter);
43138c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter);
43238c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter);
43338c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter);
43438c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter);
43538c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter);
43638c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter);
43702bcf865SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_reparse_compound_enter);
438a158bb66SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(get_reparse_compound_enter);
43938c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter);
44038c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter);
44138c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(tdis_enter);
442dbd2df36SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mknod_enter);
44338c8a9a5SSteve French 
44438c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_compound_done_class,
44538c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
44638c8a9a5SSteve French 		__u32	tid,
44738c8a9a5SSteve French 		__u64	sesid),
44838c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid),
44938c8a9a5SSteve French 	TP_STRUCT__entry(
45038c8a9a5SSteve French 		__field(unsigned int, xid)
45138c8a9a5SSteve French 		__field(__u32, tid)
45238c8a9a5SSteve French 		__field(__u64, sesid)
45338c8a9a5SSteve French 	),
45438c8a9a5SSteve French 	TP_fast_assign(
45538c8a9a5SSteve French 		__entry->xid = xid;
45638c8a9a5SSteve French 		__entry->tid = tid;
45738c8a9a5SSteve French 		__entry->sesid = sesid;
45838c8a9a5SSteve French 	),
45938c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x",
46038c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid)
46138c8a9a5SSteve French )
46238c8a9a5SSteve French 
46338c8a9a5SSteve French #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name)     \
46438c8a9a5SSteve French DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name,    \
46538c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
46638c8a9a5SSteve French 		__u32	tid,			\
46738c8a9a5SSteve French 		__u64	sesid),			\
46838c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid))
46938c8a9a5SSteve French 
47038c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done);
47138c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done);
47238c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done);
47338c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done);
47438c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done);
47538c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done);
47638c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done);
47702bcf865SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_reparse_compound_done);
478a158bb66SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(get_reparse_compound_done);
4797449d736SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_wsl_ea_compound_done);
48038c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done);
48138c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done);
48238c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(tdis_done);
483dbd2df36SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mknod_done);
48438c8a9a5SSteve French 
48538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_compound_err_class,
48638c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
48738c8a9a5SSteve French 		__u32	tid,
48838c8a9a5SSteve French 		__u64	sesid,
48938c8a9a5SSteve French 		int	rc),
49038c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, rc),
49138c8a9a5SSteve French 	TP_STRUCT__entry(
49238c8a9a5SSteve French 		__field(unsigned int, xid)
49338c8a9a5SSteve French 		__field(__u32, tid)
49438c8a9a5SSteve French 		__field(__u64, sesid)
49538c8a9a5SSteve French 		__field(int, rc)
49638c8a9a5SSteve French 	),
49738c8a9a5SSteve French 	TP_fast_assign(
49838c8a9a5SSteve French 		__entry->xid = xid;
49938c8a9a5SSteve French 		__entry->tid = tid;
50038c8a9a5SSteve French 		__entry->sesid = sesid;
50138c8a9a5SSteve French 		__entry->rc = rc;
50238c8a9a5SSteve French 	),
50338c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d",
50438c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid,
50538c8a9a5SSteve French 		__entry->rc)
50638c8a9a5SSteve French )
50738c8a9a5SSteve French 
50838c8a9a5SSteve French #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name)     \
50938c8a9a5SSteve French DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name,    \
51038c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
51138c8a9a5SSteve French 		__u32	tid,			\
51238c8a9a5SSteve French 		__u64	sesid,			\
51338c8a9a5SSteve French 		int rc),			\
51438c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, rc))
51538c8a9a5SSteve French 
51638c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err);
51738c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err);
51838c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err);
51938c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err);
52038c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err);
52138c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err);
52238c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err);
52302bcf865SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_reparse_compound_err);
524a158bb66SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(get_reparse_compound_err);
5257449d736SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_wsl_ea_compound_err);
52638c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err);
52738c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err);
52838c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(tdis_err);
529dbd2df36SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mknod_err);
53038c8a9a5SSteve French 
53138c8a9a5SSteve French /*
53238c8a9a5SSteve French  * For logging SMB3 Status code and Command for responses which return errors
53338c8a9a5SSteve French  */
53438c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_cmd_err_class,
53538c8a9a5SSteve French 	TP_PROTO(__u32	tid,
53638c8a9a5SSteve French 		__u64	sesid,
53738c8a9a5SSteve French 		__u16	cmd,
53838c8a9a5SSteve French 		__u64	mid,
53938c8a9a5SSteve French 		__u32	status,
54038c8a9a5SSteve French 		int	rc),
54138c8a9a5SSteve French 	TP_ARGS(tid, sesid, cmd, mid, status, rc),
54238c8a9a5SSteve French 	TP_STRUCT__entry(
54338c8a9a5SSteve French 		__field(__u32, tid)
54438c8a9a5SSteve French 		__field(__u64, sesid)
54538c8a9a5SSteve French 		__field(__u16, cmd)
54638c8a9a5SSteve French 		__field(__u64, mid)
54738c8a9a5SSteve French 		__field(__u32, status)
54838c8a9a5SSteve French 		__field(int, rc)
54938c8a9a5SSteve French 	),
55038c8a9a5SSteve French 	TP_fast_assign(
55138c8a9a5SSteve French 		__entry->tid = tid;
55238c8a9a5SSteve French 		__entry->sesid = sesid;
55338c8a9a5SSteve French 		__entry->cmd = cmd;
55438c8a9a5SSteve French 		__entry->mid = mid;
55538c8a9a5SSteve French 		__entry->status = status;
55638c8a9a5SSteve French 		__entry->rc = rc;
55738c8a9a5SSteve French 	),
55838c8a9a5SSteve French 	TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d",
55938c8a9a5SSteve French 		__entry->sesid, __entry->tid, __entry->cmd, __entry->mid,
56038c8a9a5SSteve French 		__entry->status, __entry->rc)
56138c8a9a5SSteve French )
56238c8a9a5SSteve French 
56338c8a9a5SSteve French #define DEFINE_SMB3_CMD_ERR_EVENT(name)          \
56438c8a9a5SSteve French DEFINE_EVENT(smb3_cmd_err_class, smb3_##name,    \
56538c8a9a5SSteve French 	TP_PROTO(__u32	tid,			\
56638c8a9a5SSteve French 		__u64	sesid,			\
56738c8a9a5SSteve French 		__u16	cmd,			\
56838c8a9a5SSteve French 		__u64	mid,			\
56938c8a9a5SSteve French 		__u32	status,			\
57038c8a9a5SSteve French 		int	rc),			\
57138c8a9a5SSteve French 	TP_ARGS(tid, sesid, cmd, mid, status, rc))
57238c8a9a5SSteve French 
57338c8a9a5SSteve French DEFINE_SMB3_CMD_ERR_EVENT(cmd_err);
57438c8a9a5SSteve French 
57538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_cmd_done_class,
57638c8a9a5SSteve French 	TP_PROTO(__u32	tid,
57738c8a9a5SSteve French 		__u64	sesid,
57838c8a9a5SSteve French 		__u16	cmd,
57938c8a9a5SSteve French 		__u64	mid),
58038c8a9a5SSteve French 	TP_ARGS(tid, sesid, cmd, mid),
58138c8a9a5SSteve French 	TP_STRUCT__entry(
58238c8a9a5SSteve French 		__field(__u32, tid)
58338c8a9a5SSteve French 		__field(__u64, sesid)
58438c8a9a5SSteve French 		__field(__u16, cmd)
58538c8a9a5SSteve French 		__field(__u64, mid)
58638c8a9a5SSteve French 	),
58738c8a9a5SSteve French 	TP_fast_assign(
58838c8a9a5SSteve French 		__entry->tid = tid;
58938c8a9a5SSteve French 		__entry->sesid = sesid;
59038c8a9a5SSteve French 		__entry->cmd = cmd;
59138c8a9a5SSteve French 		__entry->mid = mid;
59238c8a9a5SSteve French 	),
59338c8a9a5SSteve French 	TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu",
59438c8a9a5SSteve French 		__entry->sesid, __entry->tid,
59538c8a9a5SSteve French 		__entry->cmd, __entry->mid)
59638c8a9a5SSteve French )
59738c8a9a5SSteve French 
59838c8a9a5SSteve French #define DEFINE_SMB3_CMD_DONE_EVENT(name)          \
59938c8a9a5SSteve French DEFINE_EVENT(smb3_cmd_done_class, smb3_##name,    \
60038c8a9a5SSteve French 	TP_PROTO(__u32	tid,			\
60138c8a9a5SSteve French 		__u64	sesid,			\
60238c8a9a5SSteve French 		__u16	cmd,			\
60338c8a9a5SSteve French 		__u64	mid),			\
60438c8a9a5SSteve French 	TP_ARGS(tid, sesid, cmd, mid))
60538c8a9a5SSteve French 
60638c8a9a5SSteve French DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter);
60738c8a9a5SSteve French DEFINE_SMB3_CMD_DONE_EVENT(cmd_done);
60838c8a9a5SSteve French DEFINE_SMB3_CMD_DONE_EVENT(ses_expired);
60938c8a9a5SSteve French 
61038c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_mid_class,
61138c8a9a5SSteve French 	TP_PROTO(__u16	cmd,
61238c8a9a5SSteve French 		__u64	mid,
61338c8a9a5SSteve French 		__u32	pid,
61438c8a9a5SSteve French 		unsigned long when_sent,
61538c8a9a5SSteve French 		unsigned long when_received),
61638c8a9a5SSteve French 	TP_ARGS(cmd, mid, pid, when_sent, when_received),
61738c8a9a5SSteve French 	TP_STRUCT__entry(
61838c8a9a5SSteve French 		__field(__u16, cmd)
61938c8a9a5SSteve French 		__field(__u64, mid)
62038c8a9a5SSteve French 		__field(__u32, pid)
62138c8a9a5SSteve French 		__field(unsigned long, when_sent)
62238c8a9a5SSteve French 		__field(unsigned long, when_received)
62338c8a9a5SSteve French 	),
62438c8a9a5SSteve French 	TP_fast_assign(
62538c8a9a5SSteve French 		__entry->cmd = cmd;
62638c8a9a5SSteve French 		__entry->mid = mid;
62738c8a9a5SSteve French 		__entry->pid = pid;
62838c8a9a5SSteve French 		__entry->when_sent = when_sent;
62938c8a9a5SSteve French 		__entry->when_received = when_received;
63038c8a9a5SSteve French 	),
63138c8a9a5SSteve French 	TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu",
63238c8a9a5SSteve French 		__entry->cmd, __entry->mid, __entry->pid, __entry->when_sent,
63338c8a9a5SSteve French 		__entry->when_received)
63438c8a9a5SSteve French )
63538c8a9a5SSteve French 
63638c8a9a5SSteve French #define DEFINE_SMB3_MID_EVENT(name)          \
63738c8a9a5SSteve French DEFINE_EVENT(smb3_mid_class, smb3_##name,    \
63838c8a9a5SSteve French 	TP_PROTO(__u16	cmd,			\
63938c8a9a5SSteve French 		__u64	mid,			\
64038c8a9a5SSteve French 		__u32	pid,			\
64138c8a9a5SSteve French 		unsigned long when_sent,	\
64238c8a9a5SSteve French 		unsigned long when_received),	\
64338c8a9a5SSteve French 	TP_ARGS(cmd, mid, pid, when_sent, when_received))
64438c8a9a5SSteve French 
64538c8a9a5SSteve French DEFINE_SMB3_MID_EVENT(slow_rsp);
64638c8a9a5SSteve French 
64738c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_exit_err_class,
64838c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
64938c8a9a5SSteve French 		const char *func_name,
65038c8a9a5SSteve French 		int	rc),
65138c8a9a5SSteve French 	TP_ARGS(xid, func_name, rc),
65238c8a9a5SSteve French 	TP_STRUCT__entry(
65338c8a9a5SSteve French 		__field(unsigned int, xid)
65438c8a9a5SSteve French 		__string(func_name, func_name)
65538c8a9a5SSteve French 		__field(int, rc)
65638c8a9a5SSteve French 	),
65738c8a9a5SSteve French 	TP_fast_assign(
65838c8a9a5SSteve French 		__entry->xid = xid;
65938c8a9a5SSteve French 		__assign_str(func_name, func_name);
66038c8a9a5SSteve French 		__entry->rc = rc;
66138c8a9a5SSteve French 	),
66238c8a9a5SSteve French 	TP_printk("\t%s: xid=%u rc=%d",
66338c8a9a5SSteve French 		__get_str(func_name), __entry->xid, __entry->rc)
66438c8a9a5SSteve French )
66538c8a9a5SSteve French 
66638c8a9a5SSteve French #define DEFINE_SMB3_EXIT_ERR_EVENT(name)          \
66738c8a9a5SSteve French DEFINE_EVENT(smb3_exit_err_class, smb3_##name,    \
66838c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
66938c8a9a5SSteve French 		const char *func_name,		\
67038c8a9a5SSteve French 		int	rc),			\
67138c8a9a5SSteve French 	TP_ARGS(xid, func_name, rc))
67238c8a9a5SSteve French 
67338c8a9a5SSteve French DEFINE_SMB3_EXIT_ERR_EVENT(exit_err);
67438c8a9a5SSteve French 
67538c8a9a5SSteve French 
67638c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_sync_err_class,
67738c8a9a5SSteve French 	TP_PROTO(unsigned long ino,
67838c8a9a5SSteve French 		int	rc),
67938c8a9a5SSteve French 	TP_ARGS(ino, rc),
68038c8a9a5SSteve French 	TP_STRUCT__entry(
68138c8a9a5SSteve French 		__field(unsigned long, ino)
68238c8a9a5SSteve French 		__field(int, rc)
68338c8a9a5SSteve French 	),
68438c8a9a5SSteve French 	TP_fast_assign(
68538c8a9a5SSteve French 		__entry->ino = ino;
68638c8a9a5SSteve French 		__entry->rc = rc;
68738c8a9a5SSteve French 	),
68838c8a9a5SSteve French 	TP_printk("\tino=%lu rc=%d",
68938c8a9a5SSteve French 		__entry->ino, __entry->rc)
69038c8a9a5SSteve French )
69138c8a9a5SSteve French 
69238c8a9a5SSteve French #define DEFINE_SMB3_SYNC_ERR_EVENT(name)          \
69338c8a9a5SSteve French DEFINE_EVENT(smb3_sync_err_class, cifs_##name,    \
69438c8a9a5SSteve French 	TP_PROTO(unsigned long ino,		\
69538c8a9a5SSteve French 		int	rc),			\
69638c8a9a5SSteve French 	TP_ARGS(ino, rc))
69738c8a9a5SSteve French 
69838c8a9a5SSteve French DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err);
69938c8a9a5SSteve French DEFINE_SMB3_SYNC_ERR_EVENT(flush_err);
70038c8a9a5SSteve French 
70138c8a9a5SSteve French 
70238c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_enter_exit_class,
70338c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
70438c8a9a5SSteve French 		const char *func_name),
70538c8a9a5SSteve French 	TP_ARGS(xid, func_name),
70638c8a9a5SSteve French 	TP_STRUCT__entry(
70738c8a9a5SSteve French 		__field(unsigned int, xid)
70838c8a9a5SSteve French 		__string(func_name, func_name)
70938c8a9a5SSteve French 	),
71038c8a9a5SSteve French 	TP_fast_assign(
71138c8a9a5SSteve French 		__entry->xid = xid;
71238c8a9a5SSteve French 		__assign_str(func_name, func_name);
71338c8a9a5SSteve French 	),
71438c8a9a5SSteve French 	TP_printk("\t%s: xid=%u",
71538c8a9a5SSteve French 		__get_str(func_name), __entry->xid)
71638c8a9a5SSteve French )
71738c8a9a5SSteve French 
71838c8a9a5SSteve French #define DEFINE_SMB3_ENTER_EXIT_EVENT(name)        \
71938c8a9a5SSteve French DEFINE_EVENT(smb3_enter_exit_class, smb3_##name,  \
72038c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
72138c8a9a5SSteve French 		const char *func_name),		\
72238c8a9a5SSteve French 	TP_ARGS(xid, func_name))
72338c8a9a5SSteve French 
72438c8a9a5SSteve French DEFINE_SMB3_ENTER_EXIT_EVENT(enter);
72538c8a9a5SSteve French DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done);
72638c8a9a5SSteve French 
72738c8a9a5SSteve French /*
72838c8a9a5SSteve French  * For SMB2/SMB3 tree connect
72938c8a9a5SSteve French  */
73038c8a9a5SSteve French 
73138c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_tcon_class,
73238c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
73338c8a9a5SSteve French 		__u32	tid,
73438c8a9a5SSteve French 		__u64	sesid,
73538c8a9a5SSteve French 		const char *unc_name,
73638c8a9a5SSteve French 		int	rc),
73738c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, unc_name, rc),
73838c8a9a5SSteve French 	TP_STRUCT__entry(
73938c8a9a5SSteve French 		__field(unsigned int, xid)
74038c8a9a5SSteve French 		__field(__u32, tid)
74138c8a9a5SSteve French 		__field(__u64, sesid)
74238c8a9a5SSteve French 		__string(name, unc_name)
74338c8a9a5SSteve French 		__field(int, rc)
74438c8a9a5SSteve French 	),
74538c8a9a5SSteve French 	TP_fast_assign(
74638c8a9a5SSteve French 		__entry->xid = xid;
74738c8a9a5SSteve French 		__entry->tid = tid;
74838c8a9a5SSteve French 		__entry->sesid = sesid;
74938c8a9a5SSteve French 		__assign_str(name, unc_name);
75038c8a9a5SSteve French 		__entry->rc = rc;
75138c8a9a5SSteve French 	),
75238c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d",
75338c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid,
75438c8a9a5SSteve French 		__get_str(name), __entry->rc)
75538c8a9a5SSteve French )
75638c8a9a5SSteve French 
75738c8a9a5SSteve French #define DEFINE_SMB3_TCON_EVENT(name)          \
75838c8a9a5SSteve French DEFINE_EVENT(smb3_tcon_class, smb3_##name,    \
75938c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
76038c8a9a5SSteve French 		__u32	tid,			\
76138c8a9a5SSteve French 		__u64	sesid,			\
76238c8a9a5SSteve French 		const char *unc_name,		\
76338c8a9a5SSteve French 		int	rc),			\
76438c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, unc_name, rc))
76538c8a9a5SSteve French 
76638c8a9a5SSteve French DEFINE_SMB3_TCON_EVENT(tcon);
767feeec636SSteve French DEFINE_SMB3_TCON_EVENT(qfs_done);
76838c8a9a5SSteve French 
76938c8a9a5SSteve French /*
77038c8a9a5SSteve French  * For smb2/smb3 open (including create and mkdir) calls
77138c8a9a5SSteve French  */
77238c8a9a5SSteve French 
77338c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_open_enter_class,
77438c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
77538c8a9a5SSteve French 		__u32	tid,
77638c8a9a5SSteve French 		__u64	sesid,
77738c8a9a5SSteve French 		const char *full_path,
77838c8a9a5SSteve French 		int	create_options,
77938c8a9a5SSteve French 		int	desired_access),
78038c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access),
78138c8a9a5SSteve French 	TP_STRUCT__entry(
78238c8a9a5SSteve French 		__field(unsigned int, xid)
78338c8a9a5SSteve French 		__field(__u32, tid)
78438c8a9a5SSteve French 		__field(__u64, sesid)
78538c8a9a5SSteve French 		__string(path, full_path)
78638c8a9a5SSteve French 		__field(int, create_options)
78738c8a9a5SSteve French 		__field(int, desired_access)
78838c8a9a5SSteve French 	),
78938c8a9a5SSteve French 	TP_fast_assign(
79038c8a9a5SSteve French 		__entry->xid = xid;
79138c8a9a5SSteve French 		__entry->tid = tid;
79238c8a9a5SSteve French 		__entry->sesid = sesid;
79338c8a9a5SSteve French 		__assign_str(path, full_path);
79438c8a9a5SSteve French 		__entry->create_options = create_options;
79538c8a9a5SSteve French 		__entry->desired_access = desired_access;
79638c8a9a5SSteve French 	),
79738c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s cr_opts=0x%x des_access=0x%x",
79838c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __get_str(path),
79938c8a9a5SSteve French 		__entry->create_options, __entry->desired_access)
80038c8a9a5SSteve French )
80138c8a9a5SSteve French 
80238c8a9a5SSteve French #define DEFINE_SMB3_OPEN_ENTER_EVENT(name)        \
80338c8a9a5SSteve French DEFINE_EVENT(smb3_open_enter_class, smb3_##name,  \
80438c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
80538c8a9a5SSteve French 		__u32	tid,			\
80638c8a9a5SSteve French 		__u64	sesid,			\
80738c8a9a5SSteve French 		const char *full_path,		\
80838c8a9a5SSteve French 		int	create_options,		\
80938c8a9a5SSteve French 		int	desired_access),	\
81038c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access))
81138c8a9a5SSteve French 
81238c8a9a5SSteve French DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter);
81338c8a9a5SSteve French DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter);
81438c8a9a5SSteve French 
81538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_open_err_class,
81638c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
81738c8a9a5SSteve French 		__u32	tid,
81838c8a9a5SSteve French 		__u64	sesid,
81938c8a9a5SSteve French 		int	create_options,
82038c8a9a5SSteve French 		int	desired_access,
82138c8a9a5SSteve French 		int	rc),
82238c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, create_options, desired_access, rc),
82338c8a9a5SSteve French 	TP_STRUCT__entry(
82438c8a9a5SSteve French 		__field(unsigned int, xid)
82538c8a9a5SSteve French 		__field(__u32, tid)
82638c8a9a5SSteve French 		__field(__u64, sesid)
82738c8a9a5SSteve French 		__field(int,   create_options)
82838c8a9a5SSteve French 		__field(int, desired_access)
82938c8a9a5SSteve French 		__field(int, rc)
83038c8a9a5SSteve French 	),
83138c8a9a5SSteve French 	TP_fast_assign(
83238c8a9a5SSteve French 		__entry->xid = xid;
83338c8a9a5SSteve French 		__entry->tid = tid;
83438c8a9a5SSteve French 		__entry->sesid = sesid;
83538c8a9a5SSteve French 		__entry->create_options = create_options;
83638c8a9a5SSteve French 		__entry->desired_access = desired_access;
83738c8a9a5SSteve French 		__entry->rc = rc;
83838c8a9a5SSteve French 	),
83938c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d",
84038c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid,
84138c8a9a5SSteve French 		__entry->create_options, __entry->desired_access, __entry->rc)
84238c8a9a5SSteve French )
84338c8a9a5SSteve French 
84438c8a9a5SSteve French #define DEFINE_SMB3_OPEN_ERR_EVENT(name)          \
84538c8a9a5SSteve French DEFINE_EVENT(smb3_open_err_class, smb3_##name,    \
84638c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
84738c8a9a5SSteve French 		__u32	tid,			\
84838c8a9a5SSteve French 		__u64	sesid,			\
84938c8a9a5SSteve French 		int	create_options,		\
85038c8a9a5SSteve French 		int	desired_access,		\
85138c8a9a5SSteve French 		int	rc),			\
85238c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, create_options, desired_access, rc))
85338c8a9a5SSteve French 
85438c8a9a5SSteve French DEFINE_SMB3_OPEN_ERR_EVENT(open_err);
85538c8a9a5SSteve French DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err);
85638c8a9a5SSteve French 
85738c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_open_done_class,
85838c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
85938c8a9a5SSteve French 		__u64	fid,
86038c8a9a5SSteve French 		__u32	tid,
86138c8a9a5SSteve French 		__u64	sesid,
86238c8a9a5SSteve French 		int	create_options,
86338c8a9a5SSteve French 		int	desired_access),
86438c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, create_options, desired_access),
86538c8a9a5SSteve French 	TP_STRUCT__entry(
86638c8a9a5SSteve French 		__field(unsigned int, xid)
86738c8a9a5SSteve French 		__field(__u64, fid)
86838c8a9a5SSteve French 		__field(__u32, tid)
86938c8a9a5SSteve French 		__field(__u64, sesid)
87038c8a9a5SSteve French 		__field(int, create_options)
87138c8a9a5SSteve French 		__field(int, desired_access)
87238c8a9a5SSteve French 	),
87338c8a9a5SSteve French 	TP_fast_assign(
87438c8a9a5SSteve French 		__entry->xid = xid;
87538c8a9a5SSteve French 		__entry->fid = fid;
87638c8a9a5SSteve French 		__entry->tid = tid;
87738c8a9a5SSteve French 		__entry->sesid = sesid;
87838c8a9a5SSteve French 		__entry->create_options = create_options;
87938c8a9a5SSteve French 		__entry->desired_access = desired_access;
88038c8a9a5SSteve French 	),
88138c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x",
88238c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
88338c8a9a5SSteve French 		__entry->create_options, __entry->desired_access)
88438c8a9a5SSteve French )
88538c8a9a5SSteve French 
88638c8a9a5SSteve French #define DEFINE_SMB3_OPEN_DONE_EVENT(name)        \
88738c8a9a5SSteve French DEFINE_EVENT(smb3_open_done_class, smb3_##name,  \
88838c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
88938c8a9a5SSteve French 		__u64	fid,			\
89038c8a9a5SSteve French 		__u32	tid,			\
89138c8a9a5SSteve French 		__u64	sesid,			\
89238c8a9a5SSteve French 		int	create_options,		\
89338c8a9a5SSteve French 		int	desired_access),	\
89438c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, create_options, desired_access))
89538c8a9a5SSteve French 
89638c8a9a5SSteve French DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
89738c8a9a5SSteve French DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);
89838c8a9a5SSteve French 
89938c8a9a5SSteve French 
90038c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_lease_done_class,
90138c8a9a5SSteve French 	TP_PROTO(__u32	lease_state,
90238c8a9a5SSteve French 		__u32	tid,
90338c8a9a5SSteve French 		__u64	sesid,
90438c8a9a5SSteve French 		__u64	lease_key_low,
90538c8a9a5SSteve French 		__u64	lease_key_high),
90638c8a9a5SSteve French 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high),
90738c8a9a5SSteve French 	TP_STRUCT__entry(
90838c8a9a5SSteve French 		__field(__u32, lease_state)
90938c8a9a5SSteve French 		__field(__u32, tid)
91038c8a9a5SSteve French 		__field(__u64, sesid)
91138c8a9a5SSteve French 		__field(__u64, lease_key_low)
91238c8a9a5SSteve French 		__field(__u64, lease_key_high)
91338c8a9a5SSteve French 	),
91438c8a9a5SSteve French 	TP_fast_assign(
91538c8a9a5SSteve French 		__entry->lease_state = lease_state;
91638c8a9a5SSteve French 		__entry->tid = tid;
91738c8a9a5SSteve French 		__entry->sesid = sesid;
91838c8a9a5SSteve French 		__entry->lease_key_low = lease_key_low;
91938c8a9a5SSteve French 		__entry->lease_key_high = lease_key_high;
92038c8a9a5SSteve French 	),
92138c8a9a5SSteve French 	TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x",
92238c8a9a5SSteve French 		__entry->sesid, __entry->tid, __entry->lease_key_high,
92338c8a9a5SSteve French 		__entry->lease_key_low, __entry->lease_state)
92438c8a9a5SSteve French )
92538c8a9a5SSteve French 
92638c8a9a5SSteve French #define DEFINE_SMB3_LEASE_DONE_EVENT(name)        \
92738c8a9a5SSteve French DEFINE_EVENT(smb3_lease_done_class, smb3_##name,  \
92838c8a9a5SSteve French 	TP_PROTO(__u32	lease_state,		\
92938c8a9a5SSteve French 		__u32	tid,			\
93038c8a9a5SSteve French 		__u64	sesid,			\
93138c8a9a5SSteve French 		__u64	lease_key_low,		\
93238c8a9a5SSteve French 		__u64	lease_key_high),	\
93338c8a9a5SSteve French 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high))
93438c8a9a5SSteve French 
93538c8a9a5SSteve French DEFINE_SMB3_LEASE_DONE_EVENT(lease_done);
93638c8a9a5SSteve French DEFINE_SMB3_LEASE_DONE_EVENT(lease_not_found);
93738c8a9a5SSteve French 
93838c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_lease_err_class,
93938c8a9a5SSteve French 	TP_PROTO(__u32	lease_state,
94038c8a9a5SSteve French 		__u32	tid,
94138c8a9a5SSteve French 		__u64	sesid,
94238c8a9a5SSteve French 		__u64	lease_key_low,
94338c8a9a5SSteve French 		__u64	lease_key_high,
94438c8a9a5SSteve French 		int	rc),
94538c8a9a5SSteve French 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc),
94638c8a9a5SSteve French 	TP_STRUCT__entry(
94738c8a9a5SSteve French 		__field(__u32, lease_state)
94838c8a9a5SSteve French 		__field(__u32, tid)
94938c8a9a5SSteve French 		__field(__u64, sesid)
95038c8a9a5SSteve French 		__field(__u64, lease_key_low)
95138c8a9a5SSteve French 		__field(__u64, lease_key_high)
95238c8a9a5SSteve French 		__field(int, rc)
95338c8a9a5SSteve French 	),
95438c8a9a5SSteve French 	TP_fast_assign(
95538c8a9a5SSteve French 		__entry->lease_state = lease_state;
95638c8a9a5SSteve French 		__entry->tid = tid;
95738c8a9a5SSteve French 		__entry->sesid = sesid;
95838c8a9a5SSteve French 		__entry->lease_key_low = lease_key_low;
95938c8a9a5SSteve French 		__entry->lease_key_high = lease_key_high;
96038c8a9a5SSteve French 		__entry->rc = rc;
96138c8a9a5SSteve French 	),
96238c8a9a5SSteve French 	TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d",
96338c8a9a5SSteve French 		__entry->sesid, __entry->tid, __entry->lease_key_high,
96438c8a9a5SSteve French 		__entry->lease_key_low, __entry->lease_state, __entry->rc)
96538c8a9a5SSteve French )
96638c8a9a5SSteve French 
96738c8a9a5SSteve French #define DEFINE_SMB3_LEASE_ERR_EVENT(name)        \
96838c8a9a5SSteve French DEFINE_EVENT(smb3_lease_err_class, smb3_##name,  \
96938c8a9a5SSteve French 	TP_PROTO(__u32	lease_state,		\
97038c8a9a5SSteve French 		__u32	tid,			\
97138c8a9a5SSteve French 		__u64	sesid,			\
97238c8a9a5SSteve French 		__u64	lease_key_low,		\
97338c8a9a5SSteve French 		__u64	lease_key_high,		\
97438c8a9a5SSteve French 		int	rc),			\
97538c8a9a5SSteve French 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc))
97638c8a9a5SSteve French 
97738c8a9a5SSteve French DEFINE_SMB3_LEASE_ERR_EVENT(lease_err);
97838c8a9a5SSteve French 
97938c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_connect_class,
98038c8a9a5SSteve French 	TP_PROTO(char *hostname,
98138c8a9a5SSteve French 		__u64 conn_id,
98238c8a9a5SSteve French 		const struct __kernel_sockaddr_storage *dst_addr),
98338c8a9a5SSteve French 	TP_ARGS(hostname, conn_id, dst_addr),
98438c8a9a5SSteve French 	TP_STRUCT__entry(
98538c8a9a5SSteve French 		__string(hostname, hostname)
98638c8a9a5SSteve French 		__field(__u64, conn_id)
98738c8a9a5SSteve French 		__array(__u8, dst_addr, sizeof(struct sockaddr_storage))
98838c8a9a5SSteve French 	),
98938c8a9a5SSteve French 	TP_fast_assign(
99038c8a9a5SSteve French 		struct sockaddr_storage *pss = NULL;
99138c8a9a5SSteve French 
99238c8a9a5SSteve French 		__entry->conn_id = conn_id;
99338c8a9a5SSteve French 		pss = (struct sockaddr_storage *)__entry->dst_addr;
99438c8a9a5SSteve French 		*pss = *dst_addr;
99538c8a9a5SSteve French 		__assign_str(hostname, hostname);
99638c8a9a5SSteve French 	),
99738c8a9a5SSteve French 	TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc",
99838c8a9a5SSteve French 		__entry->conn_id,
99938c8a9a5SSteve French 		__get_str(hostname),
100038c8a9a5SSteve French 		__entry->dst_addr)
100138c8a9a5SSteve French )
100238c8a9a5SSteve French 
100338c8a9a5SSteve French #define DEFINE_SMB3_CONNECT_EVENT(name)        \
100438c8a9a5SSteve French DEFINE_EVENT(smb3_connect_class, smb3_##name,  \
100538c8a9a5SSteve French 	TP_PROTO(char *hostname,		\
100638c8a9a5SSteve French 		__u64 conn_id,			\
100738c8a9a5SSteve French 		const struct __kernel_sockaddr_storage *addr),	\
100838c8a9a5SSteve French 	TP_ARGS(hostname, conn_id, addr))
100938c8a9a5SSteve French 
101038c8a9a5SSteve French DEFINE_SMB3_CONNECT_EVENT(connect_done);
1011e3603ccfSSteve French DEFINE_SMB3_CONNECT_EVENT(smbd_connect_done);
1012e3603ccfSSteve French DEFINE_SMB3_CONNECT_EVENT(smbd_connect_err);
101338c8a9a5SSteve French 
101438c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_connect_err_class,
101538c8a9a5SSteve French 	TP_PROTO(char *hostname, __u64 conn_id,
101638c8a9a5SSteve French 		const struct __kernel_sockaddr_storage *dst_addr, int rc),
101738c8a9a5SSteve French 	TP_ARGS(hostname, conn_id, dst_addr, rc),
101838c8a9a5SSteve French 	TP_STRUCT__entry(
101938c8a9a5SSteve French 		__string(hostname, hostname)
102038c8a9a5SSteve French 		__field(__u64, conn_id)
102138c8a9a5SSteve French 		__array(__u8, dst_addr, sizeof(struct sockaddr_storage))
102238c8a9a5SSteve French 		__field(int, rc)
102338c8a9a5SSteve French 	),
102438c8a9a5SSteve French 	TP_fast_assign(
102538c8a9a5SSteve French 		struct sockaddr_storage *pss = NULL;
102638c8a9a5SSteve French 
102738c8a9a5SSteve French 		__entry->conn_id = conn_id;
102838c8a9a5SSteve French 		__entry->rc = rc;
102938c8a9a5SSteve French 		pss = (struct sockaddr_storage *)__entry->dst_addr;
103038c8a9a5SSteve French 		*pss = *dst_addr;
103138c8a9a5SSteve French 		__assign_str(hostname, hostname);
103238c8a9a5SSteve French 	),
103338c8a9a5SSteve French 	TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc",
103438c8a9a5SSteve French 		__entry->rc,
103538c8a9a5SSteve French 		__entry->conn_id,
103638c8a9a5SSteve French 		__get_str(hostname),
103738c8a9a5SSteve French 		__entry->dst_addr)
103838c8a9a5SSteve French )
103938c8a9a5SSteve French 
104038c8a9a5SSteve French #define DEFINE_SMB3_CONNECT_ERR_EVENT(name)        \
104138c8a9a5SSteve French DEFINE_EVENT(smb3_connect_err_class, smb3_##name,  \
104238c8a9a5SSteve French 	TP_PROTO(char *hostname,		\
104338c8a9a5SSteve French 		__u64 conn_id,			\
104438c8a9a5SSteve French 		const struct __kernel_sockaddr_storage *addr,	\
104538c8a9a5SSteve French 		int rc),			\
104638c8a9a5SSteve French 	TP_ARGS(hostname, conn_id, addr, rc))
104738c8a9a5SSteve French 
104838c8a9a5SSteve French DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err);
104938c8a9a5SSteve French 
105038c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_reconnect_class,
105138c8a9a5SSteve French 	TP_PROTO(__u64	currmid,
105238c8a9a5SSteve French 		__u64 conn_id,
105338c8a9a5SSteve French 		char *hostname),
105438c8a9a5SSteve French 	TP_ARGS(currmid, conn_id, hostname),
105538c8a9a5SSteve French 	TP_STRUCT__entry(
105638c8a9a5SSteve French 		__field(__u64, currmid)
105738c8a9a5SSteve French 		__field(__u64, conn_id)
105838c8a9a5SSteve French 		__string(hostname, hostname)
105938c8a9a5SSteve French 	),
106038c8a9a5SSteve French 	TP_fast_assign(
106138c8a9a5SSteve French 		__entry->currmid = currmid;
106238c8a9a5SSteve French 		__entry->conn_id = conn_id;
106338c8a9a5SSteve French 		__assign_str(hostname, hostname);
106438c8a9a5SSteve French 	),
106538c8a9a5SSteve French 	TP_printk("conn_id=0x%llx server=%s current_mid=%llu",
106638c8a9a5SSteve French 		__entry->conn_id,
106738c8a9a5SSteve French 		__get_str(hostname),
106838c8a9a5SSteve French 		__entry->currmid)
106938c8a9a5SSteve French )
107038c8a9a5SSteve French 
107138c8a9a5SSteve French #define DEFINE_SMB3_RECONNECT_EVENT(name)        \
107238c8a9a5SSteve French DEFINE_EVENT(smb3_reconnect_class, smb3_##name,  \
107338c8a9a5SSteve French 	TP_PROTO(__u64	currmid,		\
107438c8a9a5SSteve French 		__u64 conn_id,			\
107538c8a9a5SSteve French 		char *hostname),				\
107638c8a9a5SSteve French 	TP_ARGS(currmid, conn_id, hostname))
107738c8a9a5SSteve French 
107838c8a9a5SSteve French DEFINE_SMB3_RECONNECT_EVENT(reconnect);
107938c8a9a5SSteve French DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect);
108038c8a9a5SSteve French 
108161986a58SShyam Prasad N DECLARE_EVENT_CLASS(smb3_ses_class,
108261986a58SShyam Prasad N 	TP_PROTO(__u64	sesid),
108361986a58SShyam Prasad N 	TP_ARGS(sesid),
108461986a58SShyam Prasad N 	TP_STRUCT__entry(
108561986a58SShyam Prasad N 		__field(__u64, sesid)
108661986a58SShyam Prasad N 	),
108761986a58SShyam Prasad N 	TP_fast_assign(
108861986a58SShyam Prasad N 		__entry->sesid = sesid;
108961986a58SShyam Prasad N 	),
109061986a58SShyam Prasad N 	TP_printk("sid=0x%llx",
109161986a58SShyam Prasad N 		__entry->sesid)
109261986a58SShyam Prasad N )
109361986a58SShyam Prasad N 
109461986a58SShyam Prasad N #define DEFINE_SMB3_SES_EVENT(name)        \
109561986a58SShyam Prasad N DEFINE_EVENT(smb3_ses_class, smb3_##name,  \
109661986a58SShyam Prasad N 	TP_PROTO(__u64	sesid),				\
109761986a58SShyam Prasad N 	TP_ARGS(sesid))
109861986a58SShyam Prasad N 
109961986a58SShyam Prasad N DEFINE_SMB3_SES_EVENT(ses_not_found);
110061986a58SShyam Prasad N 
110125f3604fSSteve French DECLARE_EVENT_CLASS(smb3_ioctl_class,
110225f3604fSSteve French 	TP_PROTO(unsigned int xid,
110325f3604fSSteve French 		__u64	fid,
110425f3604fSSteve French 		unsigned int command),
110525f3604fSSteve French 	TP_ARGS(xid, fid, command),
110625f3604fSSteve French 	TP_STRUCT__entry(
110725f3604fSSteve French 		__field(unsigned int, xid)
110825f3604fSSteve French 		__field(__u64, fid)
110925f3604fSSteve French 		__field(unsigned int, command)
111025f3604fSSteve French 	),
111125f3604fSSteve French 	TP_fast_assign(
111225f3604fSSteve French 		__entry->xid = xid;
111325f3604fSSteve French 		__entry->fid = fid;
111425f3604fSSteve French 		__entry->command = command;
111525f3604fSSteve French 	),
111625f3604fSSteve French 	TP_printk("xid=%u fid=0x%llx ioctl cmd=0x%x",
111725f3604fSSteve French 		__entry->xid, __entry->fid, __entry->command)
111825f3604fSSteve French )
111925f3604fSSteve French 
112025f3604fSSteve French #define DEFINE_SMB3_IOCTL_EVENT(name)        \
112125f3604fSSteve French DEFINE_EVENT(smb3_ioctl_class, smb3_##name,  \
112225f3604fSSteve French 	TP_PROTO(unsigned int xid,	     \
112325f3604fSSteve French 		__u64 fid,		     \
112425f3604fSSteve French 		unsigned int command),	     \
112525f3604fSSteve French 	TP_ARGS(xid, fid, command))
112625f3604fSSteve French 
112725f3604fSSteve French DEFINE_SMB3_IOCTL_EVENT(ioctl);
112825f3604fSSteve French 
112925f3604fSSteve French 
113025f3604fSSteve French 
113125f3604fSSteve French 
113225f3604fSSteve French 
113338c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_credit_class,
113438c8a9a5SSteve French 	TP_PROTO(__u64	currmid,
113538c8a9a5SSteve French 		__u64 conn_id,
113638c8a9a5SSteve French 		char *hostname,
113738c8a9a5SSteve French 		int credits,
113838c8a9a5SSteve French 		int credits_to_add,
113938c8a9a5SSteve French 		int in_flight),
114038c8a9a5SSteve French 	TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight),
114138c8a9a5SSteve French 	TP_STRUCT__entry(
114238c8a9a5SSteve French 		__field(__u64, currmid)
114338c8a9a5SSteve French 		__field(__u64, conn_id)
114438c8a9a5SSteve French 		__string(hostname, hostname)
114538c8a9a5SSteve French 		__field(int, credits)
114638c8a9a5SSteve French 		__field(int, credits_to_add)
114738c8a9a5SSteve French 		__field(int, in_flight)
114838c8a9a5SSteve French 	),
114938c8a9a5SSteve French 	TP_fast_assign(
115038c8a9a5SSteve French 		__entry->currmid = currmid;
115138c8a9a5SSteve French 		__entry->conn_id = conn_id;
115238c8a9a5SSteve French 		__assign_str(hostname, hostname);
115338c8a9a5SSteve French 		__entry->credits = credits;
115438c8a9a5SSteve French 		__entry->credits_to_add = credits_to_add;
115538c8a9a5SSteve French 		__entry->in_flight = in_flight;
115638c8a9a5SSteve French 	),
115738c8a9a5SSteve French 	TP_printk("conn_id=0x%llx server=%s current_mid=%llu "
115838c8a9a5SSteve French 			"credits=%d credit_change=%d in_flight=%d",
115938c8a9a5SSteve French 		__entry->conn_id,
116038c8a9a5SSteve French 		__get_str(hostname),
116138c8a9a5SSteve French 		__entry->currmid,
116238c8a9a5SSteve French 		__entry->credits,
116338c8a9a5SSteve French 		__entry->credits_to_add,
116438c8a9a5SSteve French 		__entry->in_flight)
116538c8a9a5SSteve French )
116638c8a9a5SSteve French 
116738c8a9a5SSteve French #define DEFINE_SMB3_CREDIT_EVENT(name)        \
116838c8a9a5SSteve French DEFINE_EVENT(smb3_credit_class, smb3_##name,  \
116938c8a9a5SSteve French 	TP_PROTO(__u64	currmid,		\
117038c8a9a5SSteve French 		__u64 conn_id,			\
117138c8a9a5SSteve French 		char *hostname,			\
117238c8a9a5SSteve French 		int  credits,			\
117338c8a9a5SSteve French 		int  credits_to_add,	\
117438c8a9a5SSteve French 		int in_flight),			\
117538c8a9a5SSteve French 	TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight))
117638c8a9a5SSteve French 
117738c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits);
117838c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(reconnect_detected);
117938c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(credit_timeout);
118038c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(insufficient_credits);
118138c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(too_many_credits);
118238c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(add_credits);
118338c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(adj_credits);
118438c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(hdr_credits);
118538c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(nblk_credits);
118638c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(pend_credits);
118738c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(wait_credits);
118838c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(waitff_credits);
118938c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(overflow_credits);
119038c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(set_credits);
119138c8a9a5SSteve French 
119207e76ea1SDavid Howells 
119307e76ea1SDavid Howells TRACE_EVENT(smb3_tcon_ref,
119407e76ea1SDavid Howells 	    TP_PROTO(unsigned int tcon_debug_id, int ref,
119507e76ea1SDavid Howells 		     enum smb3_tcon_ref_trace trace),
119607e76ea1SDavid Howells 	    TP_ARGS(tcon_debug_id, ref, trace),
119707e76ea1SDavid Howells 	    TP_STRUCT__entry(
119807e76ea1SDavid Howells 		    __field(unsigned int,		tcon)
119907e76ea1SDavid Howells 		    __field(int,			ref)
120007e76ea1SDavid Howells 		    __field(enum smb3_tcon_ref_trace,	trace)
120107e76ea1SDavid Howells 			     ),
120207e76ea1SDavid Howells 	    TP_fast_assign(
120307e76ea1SDavid Howells 		    __entry->tcon	= tcon_debug_id;
120407e76ea1SDavid Howells 		    __entry->ref	= ref;
120507e76ea1SDavid Howells 		    __entry->trace	= trace;
120607e76ea1SDavid Howells 			   ),
120707e76ea1SDavid Howells 	    TP_printk("TC=%08x %s r=%u",
120807e76ea1SDavid Howells 		      __entry->tcon,
120907e76ea1SDavid Howells 		      __print_symbolic(__entry->trace, smb3_tcon_ref_traces),
121007e76ea1SDavid Howells 		      __entry->ref)
121107e76ea1SDavid Howells 	    );
121207e76ea1SDavid Howells 
121307e76ea1SDavid Howells 
121407e76ea1SDavid Howells #undef EM
121507e76ea1SDavid Howells #undef E_
121638c8a9a5SSteve French #endif /* _CIFS_TRACE_H */
121738c8a9a5SSteve French 
121838c8a9a5SSteve French #undef TRACE_INCLUDE_PATH
121938c8a9a5SSteve French #define TRACE_INCLUDE_PATH .
122038c8a9a5SSteve French #define TRACE_INCLUDE_FILE trace
122138c8a9a5SSteve French #include <trace/define_trace.h>
1222