xref: /openbmc/linux/fs/smb/client/trace.h (revision 61986a58)
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>
638c8a9a5SSteve French  */
738c8a9a5SSteve French #undef TRACE_SYSTEM
838c8a9a5SSteve French #define TRACE_SYSTEM cifs
938c8a9a5SSteve French 
1038c8a9a5SSteve French #if !defined(_CIFS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
1138c8a9a5SSteve French #define _CIFS_TRACE_H
1238c8a9a5SSteve French 
1338c8a9a5SSteve French #include <linux/tracepoint.h>
1438c8a9a5SSteve French #include <linux/net.h>
1538c8a9a5SSteve French #include <linux/inet.h>
1638c8a9a5SSteve French 
1738c8a9a5SSteve French /*
1838c8a9a5SSteve French  * Please use this 3-part article as a reference for writing new tracepoints:
1938c8a9a5SSteve French  * https://lwn.net/Articles/379903/
2038c8a9a5SSteve French  */
2138c8a9a5SSteve French 
2238c8a9a5SSteve French /* For logging errors in read or write */
2338c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_rw_err_class,
2438c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
2538c8a9a5SSteve French 		__u64	fid,
2638c8a9a5SSteve French 		__u32	tid,
2738c8a9a5SSteve French 		__u64	sesid,
2838c8a9a5SSteve French 		__u64	offset,
2938c8a9a5SSteve French 		__u32	len,
3038c8a9a5SSteve French 		int	rc),
3138c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset, len, rc),
3238c8a9a5SSteve French 	TP_STRUCT__entry(
3338c8a9a5SSteve French 		__field(unsigned int, xid)
3438c8a9a5SSteve French 		__field(__u64, fid)
3538c8a9a5SSteve French 		__field(__u32, tid)
3638c8a9a5SSteve French 		__field(__u64, sesid)
3738c8a9a5SSteve French 		__field(__u64, offset)
3838c8a9a5SSteve French 		__field(__u32, len)
3938c8a9a5SSteve French 		__field(int, rc)
4038c8a9a5SSteve French 	),
4138c8a9a5SSteve French 	TP_fast_assign(
4238c8a9a5SSteve French 		__entry->xid = xid;
4338c8a9a5SSteve French 		__entry->fid = fid;
4438c8a9a5SSteve French 		__entry->tid = tid;
4538c8a9a5SSteve French 		__entry->sesid = sesid;
4638c8a9a5SSteve French 		__entry->offset = offset;
4738c8a9a5SSteve French 		__entry->len = len;
4838c8a9a5SSteve French 		__entry->rc = rc;
4938c8a9a5SSteve French 	),
5038c8a9a5SSteve French 	TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d",
5138c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
5238c8a9a5SSteve French 		__entry->offset, __entry->len, __entry->rc)
5338c8a9a5SSteve French )
5438c8a9a5SSteve French 
5538c8a9a5SSteve French #define DEFINE_SMB3_RW_ERR_EVENT(name)          \
5638c8a9a5SSteve French DEFINE_EVENT(smb3_rw_err_class, smb3_##name,    \
5738c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
5838c8a9a5SSteve French 		__u64	fid,			\
5938c8a9a5SSteve French 		__u32	tid,			\
6038c8a9a5SSteve French 		__u64	sesid,			\
6138c8a9a5SSteve French 		__u64	offset,			\
6238c8a9a5SSteve French 		__u32	len,			\
6338c8a9a5SSteve French 		int	rc),			\
6438c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset, len, rc))
6538c8a9a5SSteve French 
6638c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(write_err);
6738c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(read_err);
6838c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(query_dir_err);
6938c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(zero_err);
7038c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(falloc_err);
7138c8a9a5SSteve French 
7238c8a9a5SSteve French 
7338c8a9a5SSteve French /* For logging successful read or write */
7438c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_rw_done_class,
7538c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
7638c8a9a5SSteve French 		__u64	fid,
7738c8a9a5SSteve French 		__u32	tid,
7838c8a9a5SSteve French 		__u64	sesid,
7938c8a9a5SSteve French 		__u64	offset,
8038c8a9a5SSteve French 		__u32	len),
8138c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset, len),
8238c8a9a5SSteve French 	TP_STRUCT__entry(
8338c8a9a5SSteve French 		__field(unsigned int, xid)
8438c8a9a5SSteve French 		__field(__u64, fid)
8538c8a9a5SSteve French 		__field(__u32, tid)
8638c8a9a5SSteve French 		__field(__u64, sesid)
8738c8a9a5SSteve French 		__field(__u64, offset)
8838c8a9a5SSteve French 		__field(__u32, len)
8938c8a9a5SSteve French 	),
9038c8a9a5SSteve French 	TP_fast_assign(
9138c8a9a5SSteve French 		__entry->xid = xid;
9238c8a9a5SSteve French 		__entry->fid = fid;
9338c8a9a5SSteve French 		__entry->tid = tid;
9438c8a9a5SSteve French 		__entry->sesid = sesid;
9538c8a9a5SSteve French 		__entry->offset = offset;
9638c8a9a5SSteve French 		__entry->len = len;
9738c8a9a5SSteve French 	),
9838c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x",
9938c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
10038c8a9a5SSteve French 		__entry->offset, __entry->len)
10138c8a9a5SSteve French )
10238c8a9a5SSteve French 
10338c8a9a5SSteve French #define DEFINE_SMB3_RW_DONE_EVENT(name)         \
10438c8a9a5SSteve French DEFINE_EVENT(smb3_rw_done_class, smb3_##name,   \
10538c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
10638c8a9a5SSteve French 		__u64	fid,			\
10738c8a9a5SSteve French 		__u32	tid,			\
10838c8a9a5SSteve French 		__u64	sesid,			\
10938c8a9a5SSteve French 		__u64	offset,			\
11038c8a9a5SSteve French 		__u32	len),			\
11138c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset, len))
11238c8a9a5SSteve French 
11338c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(write_enter);
11438c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(read_enter);
11538c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(query_dir_enter);
11638c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(zero_enter);
11738c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(falloc_enter);
11838c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(write_done);
11938c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(read_done);
12038c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(query_dir_done);
12138c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(zero_done);
12238c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(falloc_done);
12338c8a9a5SSteve French 
12438c8a9a5SSteve French /* For logging successful set EOF (truncate) */
12538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_eof_class,
12638c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
12738c8a9a5SSteve French 		__u64	fid,
12838c8a9a5SSteve French 		__u32	tid,
12938c8a9a5SSteve French 		__u64	sesid,
13038c8a9a5SSteve French 		__u64	offset),
13138c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset),
13238c8a9a5SSteve French 	TP_STRUCT__entry(
13338c8a9a5SSteve French 		__field(unsigned int, xid)
13438c8a9a5SSteve French 		__field(__u64, fid)
13538c8a9a5SSteve French 		__field(__u32, tid)
13638c8a9a5SSteve French 		__field(__u64, sesid)
13738c8a9a5SSteve French 		__field(__u64, offset)
13838c8a9a5SSteve French 	),
13938c8a9a5SSteve French 	TP_fast_assign(
14038c8a9a5SSteve French 		__entry->xid = xid;
14138c8a9a5SSteve French 		__entry->fid = fid;
14238c8a9a5SSteve French 		__entry->tid = tid;
14338c8a9a5SSteve French 		__entry->sesid = sesid;
14438c8a9a5SSteve French 		__entry->offset = offset;
14538c8a9a5SSteve French 	),
14638c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx",
14738c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
14838c8a9a5SSteve French 		__entry->offset)
14938c8a9a5SSteve French )
15038c8a9a5SSteve French 
15138c8a9a5SSteve French #define DEFINE_SMB3_EOF_EVENT(name)         \
15238c8a9a5SSteve French DEFINE_EVENT(smb3_eof_class, smb3_##name,   \
15338c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
15438c8a9a5SSteve French 		__u64	fid,			\
15538c8a9a5SSteve French 		__u32	tid,			\
15638c8a9a5SSteve French 		__u64	sesid,			\
15738c8a9a5SSteve French 		__u64	offset),		\
15838c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset))
15938c8a9a5SSteve French 
16038c8a9a5SSteve French DEFINE_SMB3_EOF_EVENT(set_eof);
16138c8a9a5SSteve French 
16238c8a9a5SSteve French /*
16338c8a9a5SSteve French  * For handle based calls other than read and write, and get/set info
16438c8a9a5SSteve French  */
16538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_fd_class,
16638c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
16738c8a9a5SSteve French 		__u64	fid,
16838c8a9a5SSteve French 		__u32	tid,
16938c8a9a5SSteve French 		__u64	sesid),
17038c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid),
17138c8a9a5SSteve French 	TP_STRUCT__entry(
17238c8a9a5SSteve French 		__field(unsigned int, xid)
17338c8a9a5SSteve French 		__field(__u64, fid)
17438c8a9a5SSteve French 		__field(__u32, tid)
17538c8a9a5SSteve French 		__field(__u64, sesid)
17638c8a9a5SSteve French 	),
17738c8a9a5SSteve French 	TP_fast_assign(
17838c8a9a5SSteve French 		__entry->xid = xid;
17938c8a9a5SSteve French 		__entry->fid = fid;
18038c8a9a5SSteve French 		__entry->tid = tid;
18138c8a9a5SSteve French 		__entry->sesid = sesid;
18238c8a9a5SSteve French 	),
18338c8a9a5SSteve French 	TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx",
18438c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid)
18538c8a9a5SSteve French )
18638c8a9a5SSteve French 
18738c8a9a5SSteve French #define DEFINE_SMB3_FD_EVENT(name)          \
18838c8a9a5SSteve French DEFINE_EVENT(smb3_fd_class, smb3_##name,    \
18938c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
19038c8a9a5SSteve French 		__u64	fid,			\
19138c8a9a5SSteve French 		__u32	tid,			\
19238c8a9a5SSteve French 		__u64	sesid),			\
19338c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid))
19438c8a9a5SSteve French 
19538c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(flush_enter);
19638c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(flush_done);
19738c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(close_enter);
19838c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(close_done);
19938c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(oplock_not_found);
20038c8a9a5SSteve French 
20138c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_fd_err_class,
20238c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
20338c8a9a5SSteve French 		__u64	fid,
20438c8a9a5SSteve French 		__u32	tid,
20538c8a9a5SSteve French 		__u64	sesid,
20638c8a9a5SSteve French 		int	rc),
20738c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, rc),
20838c8a9a5SSteve French 	TP_STRUCT__entry(
20938c8a9a5SSteve French 		__field(unsigned int, xid)
21038c8a9a5SSteve French 		__field(__u64, fid)
21138c8a9a5SSteve French 		__field(__u32, tid)
21238c8a9a5SSteve French 		__field(__u64, sesid)
21338c8a9a5SSteve French 		__field(int, rc)
21438c8a9a5SSteve French 	),
21538c8a9a5SSteve French 	TP_fast_assign(
21638c8a9a5SSteve French 		__entry->xid = xid;
21738c8a9a5SSteve French 		__entry->fid = fid;
21838c8a9a5SSteve French 		__entry->tid = tid;
21938c8a9a5SSteve French 		__entry->sesid = sesid;
22038c8a9a5SSteve French 		__entry->rc = rc;
22138c8a9a5SSteve French 	),
22238c8a9a5SSteve French 	TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d",
22338c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
22438c8a9a5SSteve French 		__entry->rc)
22538c8a9a5SSteve French )
22638c8a9a5SSteve French 
22738c8a9a5SSteve French #define DEFINE_SMB3_FD_ERR_EVENT(name)          \
22838c8a9a5SSteve French DEFINE_EVENT(smb3_fd_err_class, smb3_##name,    \
22938c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
23038c8a9a5SSteve French 		__u64	fid,			\
23138c8a9a5SSteve French 		__u32	tid,			\
23238c8a9a5SSteve French 		__u64	sesid,			\
23338c8a9a5SSteve French 		int	rc),			\
23438c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, rc))
23538c8a9a5SSteve French 
23638c8a9a5SSteve French DEFINE_SMB3_FD_ERR_EVENT(flush_err);
23738c8a9a5SSteve French DEFINE_SMB3_FD_ERR_EVENT(lock_err);
23838c8a9a5SSteve French DEFINE_SMB3_FD_ERR_EVENT(close_err);
23938c8a9a5SSteve French 
24038c8a9a5SSteve French /*
24138c8a9a5SSteve French  * For handle based query/set info calls
24238c8a9a5SSteve French  */
24338c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_enter_class,
24438c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
24538c8a9a5SSteve French 		__u64	fid,
24638c8a9a5SSteve French 		__u32	tid,
24738c8a9a5SSteve French 		__u64	sesid,
24838c8a9a5SSteve French 		__u8	infclass,
24938c8a9a5SSteve French 		__u32	type),
25038c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, infclass, type),
25138c8a9a5SSteve French 	TP_STRUCT__entry(
25238c8a9a5SSteve French 		__field(unsigned int, xid)
25338c8a9a5SSteve French 		__field(__u64, fid)
25438c8a9a5SSteve French 		__field(__u32, tid)
25538c8a9a5SSteve French 		__field(__u64, sesid)
25638c8a9a5SSteve French 		__field(__u8, infclass)
25738c8a9a5SSteve French 		__field(__u32, type)
25838c8a9a5SSteve French 	),
25938c8a9a5SSteve French 	TP_fast_assign(
26038c8a9a5SSteve French 		__entry->xid = xid;
26138c8a9a5SSteve French 		__entry->fid = fid;
26238c8a9a5SSteve French 		__entry->tid = tid;
26338c8a9a5SSteve French 		__entry->sesid = sesid;
26438c8a9a5SSteve French 		__entry->infclass = infclass;
26538c8a9a5SSteve French 		__entry->type = type;
26638c8a9a5SSteve French 	),
26738c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x",
26838c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
26938c8a9a5SSteve French 		__entry->infclass, __entry->type)
27038c8a9a5SSteve French )
27138c8a9a5SSteve French 
27238c8a9a5SSteve French #define DEFINE_SMB3_INF_ENTER_EVENT(name)          \
27338c8a9a5SSteve French DEFINE_EVENT(smb3_inf_enter_class, smb3_##name,    \
27438c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
27538c8a9a5SSteve French 		__u64	fid,			\
27638c8a9a5SSteve French 		__u32	tid,			\
27738c8a9a5SSteve French 		__u64	sesid,			\
27838c8a9a5SSteve French 		__u8	infclass,		\
27938c8a9a5SSteve French 		__u32	type),			\
28038c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, infclass, type))
28138c8a9a5SSteve French 
28238c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter);
28338c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(query_info_done);
28438c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(notify_enter);
28538c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(notify_done);
28638c8a9a5SSteve French 
28738c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_err_class,
28838c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
28938c8a9a5SSteve French 		__u64	fid,
29038c8a9a5SSteve French 		__u32	tid,
29138c8a9a5SSteve French 		__u64	sesid,
29238c8a9a5SSteve French 		__u8	infclass,
29338c8a9a5SSteve French 		__u32	type,
29438c8a9a5SSteve French 		int	rc),
29538c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, infclass, type, rc),
29638c8a9a5SSteve French 	TP_STRUCT__entry(
29738c8a9a5SSteve French 		__field(unsigned int, xid)
29838c8a9a5SSteve French 		__field(__u64, fid)
29938c8a9a5SSteve French 		__field(__u32, tid)
30038c8a9a5SSteve French 		__field(__u64, sesid)
30138c8a9a5SSteve French 		__field(__u8, infclass)
30238c8a9a5SSteve French 		__field(__u32, type)
30338c8a9a5SSteve French 		__field(int, rc)
30438c8a9a5SSteve French 	),
30538c8a9a5SSteve French 	TP_fast_assign(
30638c8a9a5SSteve French 		__entry->xid = xid;
30738c8a9a5SSteve French 		__entry->fid = fid;
30838c8a9a5SSteve French 		__entry->tid = tid;
30938c8a9a5SSteve French 		__entry->sesid = sesid;
31038c8a9a5SSteve French 		__entry->infclass = infclass;
31138c8a9a5SSteve French 		__entry->type = type;
31238c8a9a5SSteve French 		__entry->rc = rc;
31338c8a9a5SSteve French 	),
31438c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d",
31538c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
31638c8a9a5SSteve French 		__entry->infclass, __entry->type, __entry->rc)
31738c8a9a5SSteve French )
31838c8a9a5SSteve French 
31938c8a9a5SSteve French #define DEFINE_SMB3_INF_ERR_EVENT(name)          \
32038c8a9a5SSteve French DEFINE_EVENT(smb3_inf_err_class, smb3_##name,    \
32138c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
32238c8a9a5SSteve French 		__u64	fid,			\
32338c8a9a5SSteve French 		__u32	tid,			\
32438c8a9a5SSteve French 		__u64	sesid,			\
32538c8a9a5SSteve French 		__u8	infclass,		\
32638c8a9a5SSteve French 		__u32	type,			\
32738c8a9a5SSteve French 		int	rc),			\
32838c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, infclass, type, rc))
32938c8a9a5SSteve French 
33038c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(query_info_err);
33138c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(set_info_err);
33238c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(notify_err);
33338c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(fsctl_err);
33438c8a9a5SSteve French 
33538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class,
33638c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
33738c8a9a5SSteve French 		__u32	tid,
33838c8a9a5SSteve French 		__u64	sesid,
33938c8a9a5SSteve French 		const char *full_path),
34038c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, full_path),
34138c8a9a5SSteve French 	TP_STRUCT__entry(
34238c8a9a5SSteve French 		__field(unsigned int, xid)
34338c8a9a5SSteve French 		__field(__u32, tid)
34438c8a9a5SSteve French 		__field(__u64, sesid)
34538c8a9a5SSteve French 		__string(path, full_path)
34638c8a9a5SSteve French 	),
34738c8a9a5SSteve French 	TP_fast_assign(
34838c8a9a5SSteve French 		__entry->xid = xid;
34938c8a9a5SSteve French 		__entry->tid = tid;
35038c8a9a5SSteve French 		__entry->sesid = sesid;
35138c8a9a5SSteve French 		__assign_str(path, full_path);
35238c8a9a5SSteve French 	),
35338c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s",
35438c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid,
35538c8a9a5SSteve French 		__get_str(path))
35638c8a9a5SSteve French )
35738c8a9a5SSteve French 
35838c8a9a5SSteve French #define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name)     \
35938c8a9a5SSteve French DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name,    \
36038c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
36138c8a9a5SSteve French 		__u32	tid,			\
36238c8a9a5SSteve French 		__u64	sesid,			\
36338c8a9a5SSteve French 		const char *full_path),		\
36438c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, full_path))
36538c8a9a5SSteve French 
36638c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter);
36738c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter);
36838c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter);
36938c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter);
37038c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter);
37138c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter);
37238c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter);
37338c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter);
37438c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter);
37538c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(tdis_enter);
37638c8a9a5SSteve French 
37738c8a9a5SSteve French 
37838c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_compound_done_class,
37938c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
38038c8a9a5SSteve French 		__u32	tid,
38138c8a9a5SSteve French 		__u64	sesid),
38238c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid),
38338c8a9a5SSteve French 	TP_STRUCT__entry(
38438c8a9a5SSteve French 		__field(unsigned int, xid)
38538c8a9a5SSteve French 		__field(__u32, tid)
38638c8a9a5SSteve French 		__field(__u64, sesid)
38738c8a9a5SSteve French 	),
38838c8a9a5SSteve French 	TP_fast_assign(
38938c8a9a5SSteve French 		__entry->xid = xid;
39038c8a9a5SSteve French 		__entry->tid = tid;
39138c8a9a5SSteve French 		__entry->sesid = sesid;
39238c8a9a5SSteve French 	),
39338c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x",
39438c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid)
39538c8a9a5SSteve French )
39638c8a9a5SSteve French 
39738c8a9a5SSteve French #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name)     \
39838c8a9a5SSteve French DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name,    \
39938c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
40038c8a9a5SSteve French 		__u32	tid,			\
40138c8a9a5SSteve French 		__u64	sesid),			\
40238c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid))
40338c8a9a5SSteve French 
40438c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done);
40538c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done);
40638c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done);
40738c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done);
40838c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done);
40938c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done);
41038c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done);
41138c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done);
41238c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done);
41338c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(tdis_done);
41438c8a9a5SSteve French 
41538c8a9a5SSteve French 
41638c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_compound_err_class,
41738c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
41838c8a9a5SSteve French 		__u32	tid,
41938c8a9a5SSteve French 		__u64	sesid,
42038c8a9a5SSteve French 		int	rc),
42138c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, rc),
42238c8a9a5SSteve French 	TP_STRUCT__entry(
42338c8a9a5SSteve French 		__field(unsigned int, xid)
42438c8a9a5SSteve French 		__field(__u32, tid)
42538c8a9a5SSteve French 		__field(__u64, sesid)
42638c8a9a5SSteve French 		__field(int, rc)
42738c8a9a5SSteve French 	),
42838c8a9a5SSteve French 	TP_fast_assign(
42938c8a9a5SSteve French 		__entry->xid = xid;
43038c8a9a5SSteve French 		__entry->tid = tid;
43138c8a9a5SSteve French 		__entry->sesid = sesid;
43238c8a9a5SSteve French 		__entry->rc = rc;
43338c8a9a5SSteve French 	),
43438c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d",
43538c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid,
43638c8a9a5SSteve French 		__entry->rc)
43738c8a9a5SSteve French )
43838c8a9a5SSteve French 
43938c8a9a5SSteve French #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name)     \
44038c8a9a5SSteve French DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name,    \
44138c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
44238c8a9a5SSteve French 		__u32	tid,			\
44338c8a9a5SSteve French 		__u64	sesid,			\
44438c8a9a5SSteve French 		int rc),			\
44538c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, rc))
44638c8a9a5SSteve French 
44738c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err);
44838c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err);
44938c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err);
45038c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err);
45138c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err);
45238c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err);
45338c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err);
45438c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err);
45538c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err);
45638c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(tdis_err);
45738c8a9a5SSteve French 
45838c8a9a5SSteve French /*
45938c8a9a5SSteve French  * For logging SMB3 Status code and Command for responses which return errors
46038c8a9a5SSteve French  */
46138c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_cmd_err_class,
46238c8a9a5SSteve French 	TP_PROTO(__u32	tid,
46338c8a9a5SSteve French 		__u64	sesid,
46438c8a9a5SSteve French 		__u16	cmd,
46538c8a9a5SSteve French 		__u64	mid,
46638c8a9a5SSteve French 		__u32	status,
46738c8a9a5SSteve French 		int	rc),
46838c8a9a5SSteve French 	TP_ARGS(tid, sesid, cmd, mid, status, rc),
46938c8a9a5SSteve French 	TP_STRUCT__entry(
47038c8a9a5SSteve French 		__field(__u32, tid)
47138c8a9a5SSteve French 		__field(__u64, sesid)
47238c8a9a5SSteve French 		__field(__u16, cmd)
47338c8a9a5SSteve French 		__field(__u64, mid)
47438c8a9a5SSteve French 		__field(__u32, status)
47538c8a9a5SSteve French 		__field(int, rc)
47638c8a9a5SSteve French 	),
47738c8a9a5SSteve French 	TP_fast_assign(
47838c8a9a5SSteve French 		__entry->tid = tid;
47938c8a9a5SSteve French 		__entry->sesid = sesid;
48038c8a9a5SSteve French 		__entry->cmd = cmd;
48138c8a9a5SSteve French 		__entry->mid = mid;
48238c8a9a5SSteve French 		__entry->status = status;
48338c8a9a5SSteve French 		__entry->rc = rc;
48438c8a9a5SSteve French 	),
48538c8a9a5SSteve French 	TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d",
48638c8a9a5SSteve French 		__entry->sesid, __entry->tid, __entry->cmd, __entry->mid,
48738c8a9a5SSteve French 		__entry->status, __entry->rc)
48838c8a9a5SSteve French )
48938c8a9a5SSteve French 
49038c8a9a5SSteve French #define DEFINE_SMB3_CMD_ERR_EVENT(name)          \
49138c8a9a5SSteve French DEFINE_EVENT(smb3_cmd_err_class, smb3_##name,    \
49238c8a9a5SSteve French 	TP_PROTO(__u32	tid,			\
49338c8a9a5SSteve French 		__u64	sesid,			\
49438c8a9a5SSteve French 		__u16	cmd,			\
49538c8a9a5SSteve French 		__u64	mid,			\
49638c8a9a5SSteve French 		__u32	status,			\
49738c8a9a5SSteve French 		int	rc),			\
49838c8a9a5SSteve French 	TP_ARGS(tid, sesid, cmd, mid, status, rc))
49938c8a9a5SSteve French 
50038c8a9a5SSteve French DEFINE_SMB3_CMD_ERR_EVENT(cmd_err);
50138c8a9a5SSteve French 
50238c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_cmd_done_class,
50338c8a9a5SSteve French 	TP_PROTO(__u32	tid,
50438c8a9a5SSteve French 		__u64	sesid,
50538c8a9a5SSteve French 		__u16	cmd,
50638c8a9a5SSteve French 		__u64	mid),
50738c8a9a5SSteve French 	TP_ARGS(tid, sesid, cmd, mid),
50838c8a9a5SSteve French 	TP_STRUCT__entry(
50938c8a9a5SSteve French 		__field(__u32, tid)
51038c8a9a5SSteve French 		__field(__u64, sesid)
51138c8a9a5SSteve French 		__field(__u16, cmd)
51238c8a9a5SSteve French 		__field(__u64, mid)
51338c8a9a5SSteve French 	),
51438c8a9a5SSteve French 	TP_fast_assign(
51538c8a9a5SSteve French 		__entry->tid = tid;
51638c8a9a5SSteve French 		__entry->sesid = sesid;
51738c8a9a5SSteve French 		__entry->cmd = cmd;
51838c8a9a5SSteve French 		__entry->mid = mid;
51938c8a9a5SSteve French 	),
52038c8a9a5SSteve French 	TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu",
52138c8a9a5SSteve French 		__entry->sesid, __entry->tid,
52238c8a9a5SSteve French 		__entry->cmd, __entry->mid)
52338c8a9a5SSteve French )
52438c8a9a5SSteve French 
52538c8a9a5SSteve French #define DEFINE_SMB3_CMD_DONE_EVENT(name)          \
52638c8a9a5SSteve French DEFINE_EVENT(smb3_cmd_done_class, smb3_##name,    \
52738c8a9a5SSteve French 	TP_PROTO(__u32	tid,			\
52838c8a9a5SSteve French 		__u64	sesid,			\
52938c8a9a5SSteve French 		__u16	cmd,			\
53038c8a9a5SSteve French 		__u64	mid),			\
53138c8a9a5SSteve French 	TP_ARGS(tid, sesid, cmd, mid))
53238c8a9a5SSteve French 
53338c8a9a5SSteve French DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter);
53438c8a9a5SSteve French DEFINE_SMB3_CMD_DONE_EVENT(cmd_done);
53538c8a9a5SSteve French DEFINE_SMB3_CMD_DONE_EVENT(ses_expired);
53638c8a9a5SSteve French 
53738c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_mid_class,
53838c8a9a5SSteve French 	TP_PROTO(__u16	cmd,
53938c8a9a5SSteve French 		__u64	mid,
54038c8a9a5SSteve French 		__u32	pid,
54138c8a9a5SSteve French 		unsigned long when_sent,
54238c8a9a5SSteve French 		unsigned long when_received),
54338c8a9a5SSteve French 	TP_ARGS(cmd, mid, pid, when_sent, when_received),
54438c8a9a5SSteve French 	TP_STRUCT__entry(
54538c8a9a5SSteve French 		__field(__u16, cmd)
54638c8a9a5SSteve French 		__field(__u64, mid)
54738c8a9a5SSteve French 		__field(__u32, pid)
54838c8a9a5SSteve French 		__field(unsigned long, when_sent)
54938c8a9a5SSteve French 		__field(unsigned long, when_received)
55038c8a9a5SSteve French 	),
55138c8a9a5SSteve French 	TP_fast_assign(
55238c8a9a5SSteve French 		__entry->cmd = cmd;
55338c8a9a5SSteve French 		__entry->mid = mid;
55438c8a9a5SSteve French 		__entry->pid = pid;
55538c8a9a5SSteve French 		__entry->when_sent = when_sent;
55638c8a9a5SSteve French 		__entry->when_received = when_received;
55738c8a9a5SSteve French 	),
55838c8a9a5SSteve French 	TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu",
55938c8a9a5SSteve French 		__entry->cmd, __entry->mid, __entry->pid, __entry->when_sent,
56038c8a9a5SSteve French 		__entry->when_received)
56138c8a9a5SSteve French )
56238c8a9a5SSteve French 
56338c8a9a5SSteve French #define DEFINE_SMB3_MID_EVENT(name)          \
56438c8a9a5SSteve French DEFINE_EVENT(smb3_mid_class, smb3_##name,    \
56538c8a9a5SSteve French 	TP_PROTO(__u16	cmd,			\
56638c8a9a5SSteve French 		__u64	mid,			\
56738c8a9a5SSteve French 		__u32	pid,			\
56838c8a9a5SSteve French 		unsigned long when_sent,	\
56938c8a9a5SSteve French 		unsigned long when_received),	\
57038c8a9a5SSteve French 	TP_ARGS(cmd, mid, pid, when_sent, when_received))
57138c8a9a5SSteve French 
57238c8a9a5SSteve French DEFINE_SMB3_MID_EVENT(slow_rsp);
57338c8a9a5SSteve French 
57438c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_exit_err_class,
57538c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
57638c8a9a5SSteve French 		const char *func_name,
57738c8a9a5SSteve French 		int	rc),
57838c8a9a5SSteve French 	TP_ARGS(xid, func_name, rc),
57938c8a9a5SSteve French 	TP_STRUCT__entry(
58038c8a9a5SSteve French 		__field(unsigned int, xid)
58138c8a9a5SSteve French 		__string(func_name, func_name)
58238c8a9a5SSteve French 		__field(int, rc)
58338c8a9a5SSteve French 	),
58438c8a9a5SSteve French 	TP_fast_assign(
58538c8a9a5SSteve French 		__entry->xid = xid;
58638c8a9a5SSteve French 		__assign_str(func_name, func_name);
58738c8a9a5SSteve French 		__entry->rc = rc;
58838c8a9a5SSteve French 	),
58938c8a9a5SSteve French 	TP_printk("\t%s: xid=%u rc=%d",
59038c8a9a5SSteve French 		__get_str(func_name), __entry->xid, __entry->rc)
59138c8a9a5SSteve French )
59238c8a9a5SSteve French 
59338c8a9a5SSteve French #define DEFINE_SMB3_EXIT_ERR_EVENT(name)          \
59438c8a9a5SSteve French DEFINE_EVENT(smb3_exit_err_class, smb3_##name,    \
59538c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
59638c8a9a5SSteve French 		const char *func_name,		\
59738c8a9a5SSteve French 		int	rc),			\
59838c8a9a5SSteve French 	TP_ARGS(xid, func_name, rc))
59938c8a9a5SSteve French 
60038c8a9a5SSteve French DEFINE_SMB3_EXIT_ERR_EVENT(exit_err);
60138c8a9a5SSteve French 
60238c8a9a5SSteve French 
60338c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_sync_err_class,
60438c8a9a5SSteve French 	TP_PROTO(unsigned long ino,
60538c8a9a5SSteve French 		int	rc),
60638c8a9a5SSteve French 	TP_ARGS(ino, rc),
60738c8a9a5SSteve French 	TP_STRUCT__entry(
60838c8a9a5SSteve French 		__field(unsigned long, ino)
60938c8a9a5SSteve French 		__field(int, rc)
61038c8a9a5SSteve French 	),
61138c8a9a5SSteve French 	TP_fast_assign(
61238c8a9a5SSteve French 		__entry->ino = ino;
61338c8a9a5SSteve French 		__entry->rc = rc;
61438c8a9a5SSteve French 	),
61538c8a9a5SSteve French 	TP_printk("\tino=%lu rc=%d",
61638c8a9a5SSteve French 		__entry->ino, __entry->rc)
61738c8a9a5SSteve French )
61838c8a9a5SSteve French 
61938c8a9a5SSteve French #define DEFINE_SMB3_SYNC_ERR_EVENT(name)          \
62038c8a9a5SSteve French DEFINE_EVENT(smb3_sync_err_class, cifs_##name,    \
62138c8a9a5SSteve French 	TP_PROTO(unsigned long ino,		\
62238c8a9a5SSteve French 		int	rc),			\
62338c8a9a5SSteve French 	TP_ARGS(ino, rc))
62438c8a9a5SSteve French 
62538c8a9a5SSteve French DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err);
62638c8a9a5SSteve French DEFINE_SMB3_SYNC_ERR_EVENT(flush_err);
62738c8a9a5SSteve French 
62838c8a9a5SSteve French 
62938c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_enter_exit_class,
63038c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
63138c8a9a5SSteve French 		const char *func_name),
63238c8a9a5SSteve French 	TP_ARGS(xid, func_name),
63338c8a9a5SSteve French 	TP_STRUCT__entry(
63438c8a9a5SSteve French 		__field(unsigned int, xid)
63538c8a9a5SSteve French 		__string(func_name, func_name)
63638c8a9a5SSteve French 	),
63738c8a9a5SSteve French 	TP_fast_assign(
63838c8a9a5SSteve French 		__entry->xid = xid;
63938c8a9a5SSteve French 		__assign_str(func_name, func_name);
64038c8a9a5SSteve French 	),
64138c8a9a5SSteve French 	TP_printk("\t%s: xid=%u",
64238c8a9a5SSteve French 		__get_str(func_name), __entry->xid)
64338c8a9a5SSteve French )
64438c8a9a5SSteve French 
64538c8a9a5SSteve French #define DEFINE_SMB3_ENTER_EXIT_EVENT(name)        \
64638c8a9a5SSteve French DEFINE_EVENT(smb3_enter_exit_class, smb3_##name,  \
64738c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
64838c8a9a5SSteve French 		const char *func_name),		\
64938c8a9a5SSteve French 	TP_ARGS(xid, func_name))
65038c8a9a5SSteve French 
65138c8a9a5SSteve French DEFINE_SMB3_ENTER_EXIT_EVENT(enter);
65238c8a9a5SSteve French DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done);
65338c8a9a5SSteve French 
65438c8a9a5SSteve French /*
65538c8a9a5SSteve French  * For SMB2/SMB3 tree connect
65638c8a9a5SSteve French  */
65738c8a9a5SSteve French 
65838c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_tcon_class,
65938c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
66038c8a9a5SSteve French 		__u32	tid,
66138c8a9a5SSteve French 		__u64	sesid,
66238c8a9a5SSteve French 		const char *unc_name,
66338c8a9a5SSteve French 		int	rc),
66438c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, unc_name, rc),
66538c8a9a5SSteve French 	TP_STRUCT__entry(
66638c8a9a5SSteve French 		__field(unsigned int, xid)
66738c8a9a5SSteve French 		__field(__u32, tid)
66838c8a9a5SSteve French 		__field(__u64, sesid)
66938c8a9a5SSteve French 		__string(name, unc_name)
67038c8a9a5SSteve French 		__field(int, rc)
67138c8a9a5SSteve French 	),
67238c8a9a5SSteve French 	TP_fast_assign(
67338c8a9a5SSteve French 		__entry->xid = xid;
67438c8a9a5SSteve French 		__entry->tid = tid;
67538c8a9a5SSteve French 		__entry->sesid = sesid;
67638c8a9a5SSteve French 		__assign_str(name, unc_name);
67738c8a9a5SSteve French 		__entry->rc = rc;
67838c8a9a5SSteve French 	),
67938c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d",
68038c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid,
68138c8a9a5SSteve French 		__get_str(name), __entry->rc)
68238c8a9a5SSteve French )
68338c8a9a5SSteve French 
68438c8a9a5SSteve French #define DEFINE_SMB3_TCON_EVENT(name)          \
68538c8a9a5SSteve French DEFINE_EVENT(smb3_tcon_class, smb3_##name,    \
68638c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
68738c8a9a5SSteve French 		__u32	tid,			\
68838c8a9a5SSteve French 		__u64	sesid,			\
68938c8a9a5SSteve French 		const char *unc_name,		\
69038c8a9a5SSteve French 		int	rc),			\
69138c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, unc_name, rc))
69238c8a9a5SSteve French 
69338c8a9a5SSteve French DEFINE_SMB3_TCON_EVENT(tcon);
69438c8a9a5SSteve French 
69538c8a9a5SSteve French 
69638c8a9a5SSteve French /*
69738c8a9a5SSteve French  * For smb2/smb3 open (including create and mkdir) calls
69838c8a9a5SSteve French  */
69938c8a9a5SSteve French 
70038c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_open_enter_class,
70138c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
70238c8a9a5SSteve French 		__u32	tid,
70338c8a9a5SSteve French 		__u64	sesid,
70438c8a9a5SSteve French 		const char *full_path,
70538c8a9a5SSteve French 		int	create_options,
70638c8a9a5SSteve French 		int	desired_access),
70738c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access),
70838c8a9a5SSteve French 	TP_STRUCT__entry(
70938c8a9a5SSteve French 		__field(unsigned int, xid)
71038c8a9a5SSteve French 		__field(__u32, tid)
71138c8a9a5SSteve French 		__field(__u64, sesid)
71238c8a9a5SSteve French 		__string(path, full_path)
71338c8a9a5SSteve French 		__field(int, create_options)
71438c8a9a5SSteve French 		__field(int, desired_access)
71538c8a9a5SSteve French 	),
71638c8a9a5SSteve French 	TP_fast_assign(
71738c8a9a5SSteve French 		__entry->xid = xid;
71838c8a9a5SSteve French 		__entry->tid = tid;
71938c8a9a5SSteve French 		__entry->sesid = sesid;
72038c8a9a5SSteve French 		__assign_str(path, full_path);
72138c8a9a5SSteve French 		__entry->create_options = create_options;
72238c8a9a5SSteve French 		__entry->desired_access = desired_access;
72338c8a9a5SSteve French 	),
72438c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s cr_opts=0x%x des_access=0x%x",
72538c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __get_str(path),
72638c8a9a5SSteve French 		__entry->create_options, __entry->desired_access)
72738c8a9a5SSteve French )
72838c8a9a5SSteve French 
72938c8a9a5SSteve French #define DEFINE_SMB3_OPEN_ENTER_EVENT(name)        \
73038c8a9a5SSteve French DEFINE_EVENT(smb3_open_enter_class, smb3_##name,  \
73138c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
73238c8a9a5SSteve French 		__u32	tid,			\
73338c8a9a5SSteve French 		__u64	sesid,			\
73438c8a9a5SSteve French 		const char *full_path,		\
73538c8a9a5SSteve French 		int	create_options,		\
73638c8a9a5SSteve French 		int	desired_access),	\
73738c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access))
73838c8a9a5SSteve French 
73938c8a9a5SSteve French DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter);
74038c8a9a5SSteve French DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter);
74138c8a9a5SSteve French 
74238c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_open_err_class,
74338c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
74438c8a9a5SSteve French 		__u32	tid,
74538c8a9a5SSteve French 		__u64	sesid,
74638c8a9a5SSteve French 		int	create_options,
74738c8a9a5SSteve French 		int	desired_access,
74838c8a9a5SSteve French 		int	rc),
74938c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, create_options, desired_access, rc),
75038c8a9a5SSteve French 	TP_STRUCT__entry(
75138c8a9a5SSteve French 		__field(unsigned int, xid)
75238c8a9a5SSteve French 		__field(__u32, tid)
75338c8a9a5SSteve French 		__field(__u64, sesid)
75438c8a9a5SSteve French 		__field(int,   create_options)
75538c8a9a5SSteve French 		__field(int, desired_access)
75638c8a9a5SSteve French 		__field(int, rc)
75738c8a9a5SSteve French 	),
75838c8a9a5SSteve French 	TP_fast_assign(
75938c8a9a5SSteve French 		__entry->xid = xid;
76038c8a9a5SSteve French 		__entry->tid = tid;
76138c8a9a5SSteve French 		__entry->sesid = sesid;
76238c8a9a5SSteve French 		__entry->create_options = create_options;
76338c8a9a5SSteve French 		__entry->desired_access = desired_access;
76438c8a9a5SSteve French 		__entry->rc = rc;
76538c8a9a5SSteve French 	),
76638c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d",
76738c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid,
76838c8a9a5SSteve French 		__entry->create_options, __entry->desired_access, __entry->rc)
76938c8a9a5SSteve French )
77038c8a9a5SSteve French 
77138c8a9a5SSteve French #define DEFINE_SMB3_OPEN_ERR_EVENT(name)          \
77238c8a9a5SSteve French DEFINE_EVENT(smb3_open_err_class, smb3_##name,    \
77338c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
77438c8a9a5SSteve French 		__u32	tid,			\
77538c8a9a5SSteve French 		__u64	sesid,			\
77638c8a9a5SSteve French 		int	create_options,		\
77738c8a9a5SSteve French 		int	desired_access,		\
77838c8a9a5SSteve French 		int	rc),			\
77938c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, create_options, desired_access, rc))
78038c8a9a5SSteve French 
78138c8a9a5SSteve French DEFINE_SMB3_OPEN_ERR_EVENT(open_err);
78238c8a9a5SSteve French DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err);
78338c8a9a5SSteve French 
78438c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_open_done_class,
78538c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
78638c8a9a5SSteve French 		__u64	fid,
78738c8a9a5SSteve French 		__u32	tid,
78838c8a9a5SSteve French 		__u64	sesid,
78938c8a9a5SSteve French 		int	create_options,
79038c8a9a5SSteve French 		int	desired_access),
79138c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, create_options, desired_access),
79238c8a9a5SSteve French 	TP_STRUCT__entry(
79338c8a9a5SSteve French 		__field(unsigned int, xid)
79438c8a9a5SSteve French 		__field(__u64, fid)
79538c8a9a5SSteve French 		__field(__u32, tid)
79638c8a9a5SSteve French 		__field(__u64, sesid)
79738c8a9a5SSteve French 		__field(int, create_options)
79838c8a9a5SSteve French 		__field(int, desired_access)
79938c8a9a5SSteve French 	),
80038c8a9a5SSteve French 	TP_fast_assign(
80138c8a9a5SSteve French 		__entry->xid = xid;
80238c8a9a5SSteve French 		__entry->fid = fid;
80338c8a9a5SSteve French 		__entry->tid = tid;
80438c8a9a5SSteve French 		__entry->sesid = sesid;
80538c8a9a5SSteve French 		__entry->create_options = create_options;
80638c8a9a5SSteve French 		__entry->desired_access = desired_access;
80738c8a9a5SSteve French 	),
80838c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x",
80938c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
81038c8a9a5SSteve French 		__entry->create_options, __entry->desired_access)
81138c8a9a5SSteve French )
81238c8a9a5SSteve French 
81338c8a9a5SSteve French #define DEFINE_SMB3_OPEN_DONE_EVENT(name)        \
81438c8a9a5SSteve French DEFINE_EVENT(smb3_open_done_class, smb3_##name,  \
81538c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
81638c8a9a5SSteve French 		__u64	fid,			\
81738c8a9a5SSteve French 		__u32	tid,			\
81838c8a9a5SSteve French 		__u64	sesid,			\
81938c8a9a5SSteve French 		int	create_options,		\
82038c8a9a5SSteve French 		int	desired_access),	\
82138c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, create_options, desired_access))
82238c8a9a5SSteve French 
82338c8a9a5SSteve French DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
82438c8a9a5SSteve French DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);
82538c8a9a5SSteve French 
82638c8a9a5SSteve French 
82738c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_lease_done_class,
82838c8a9a5SSteve French 	TP_PROTO(__u32	lease_state,
82938c8a9a5SSteve French 		__u32	tid,
83038c8a9a5SSteve French 		__u64	sesid,
83138c8a9a5SSteve French 		__u64	lease_key_low,
83238c8a9a5SSteve French 		__u64	lease_key_high),
83338c8a9a5SSteve French 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high),
83438c8a9a5SSteve French 	TP_STRUCT__entry(
83538c8a9a5SSteve French 		__field(__u32, lease_state)
83638c8a9a5SSteve French 		__field(__u32, tid)
83738c8a9a5SSteve French 		__field(__u64, sesid)
83838c8a9a5SSteve French 		__field(__u64, lease_key_low)
83938c8a9a5SSteve French 		__field(__u64, lease_key_high)
84038c8a9a5SSteve French 	),
84138c8a9a5SSteve French 	TP_fast_assign(
84238c8a9a5SSteve French 		__entry->lease_state = lease_state;
84338c8a9a5SSteve French 		__entry->tid = tid;
84438c8a9a5SSteve French 		__entry->sesid = sesid;
84538c8a9a5SSteve French 		__entry->lease_key_low = lease_key_low;
84638c8a9a5SSteve French 		__entry->lease_key_high = lease_key_high;
84738c8a9a5SSteve French 	),
84838c8a9a5SSteve French 	TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x",
84938c8a9a5SSteve French 		__entry->sesid, __entry->tid, __entry->lease_key_high,
85038c8a9a5SSteve French 		__entry->lease_key_low, __entry->lease_state)
85138c8a9a5SSteve French )
85238c8a9a5SSteve French 
85338c8a9a5SSteve French #define DEFINE_SMB3_LEASE_DONE_EVENT(name)        \
85438c8a9a5SSteve French DEFINE_EVENT(smb3_lease_done_class, smb3_##name,  \
85538c8a9a5SSteve French 	TP_PROTO(__u32	lease_state,		\
85638c8a9a5SSteve French 		__u32	tid,			\
85738c8a9a5SSteve French 		__u64	sesid,			\
85838c8a9a5SSteve French 		__u64	lease_key_low,		\
85938c8a9a5SSteve French 		__u64	lease_key_high),	\
86038c8a9a5SSteve French 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high))
86138c8a9a5SSteve French 
86238c8a9a5SSteve French DEFINE_SMB3_LEASE_DONE_EVENT(lease_done);
86338c8a9a5SSteve French DEFINE_SMB3_LEASE_DONE_EVENT(lease_not_found);
86438c8a9a5SSteve French 
86538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_lease_err_class,
86638c8a9a5SSteve French 	TP_PROTO(__u32	lease_state,
86738c8a9a5SSteve French 		__u32	tid,
86838c8a9a5SSteve French 		__u64	sesid,
86938c8a9a5SSteve French 		__u64	lease_key_low,
87038c8a9a5SSteve French 		__u64	lease_key_high,
87138c8a9a5SSteve French 		int	rc),
87238c8a9a5SSteve French 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc),
87338c8a9a5SSteve French 	TP_STRUCT__entry(
87438c8a9a5SSteve French 		__field(__u32, lease_state)
87538c8a9a5SSteve French 		__field(__u32, tid)
87638c8a9a5SSteve French 		__field(__u64, sesid)
87738c8a9a5SSteve French 		__field(__u64, lease_key_low)
87838c8a9a5SSteve French 		__field(__u64, lease_key_high)
87938c8a9a5SSteve French 		__field(int, rc)
88038c8a9a5SSteve French 	),
88138c8a9a5SSteve French 	TP_fast_assign(
88238c8a9a5SSteve French 		__entry->lease_state = lease_state;
88338c8a9a5SSteve French 		__entry->tid = tid;
88438c8a9a5SSteve French 		__entry->sesid = sesid;
88538c8a9a5SSteve French 		__entry->lease_key_low = lease_key_low;
88638c8a9a5SSteve French 		__entry->lease_key_high = lease_key_high;
88738c8a9a5SSteve French 		__entry->rc = rc;
88838c8a9a5SSteve French 	),
88938c8a9a5SSteve French 	TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d",
89038c8a9a5SSteve French 		__entry->sesid, __entry->tid, __entry->lease_key_high,
89138c8a9a5SSteve French 		__entry->lease_key_low, __entry->lease_state, __entry->rc)
89238c8a9a5SSteve French )
89338c8a9a5SSteve French 
89438c8a9a5SSteve French #define DEFINE_SMB3_LEASE_ERR_EVENT(name)        \
89538c8a9a5SSteve French DEFINE_EVENT(smb3_lease_err_class, smb3_##name,  \
89638c8a9a5SSteve French 	TP_PROTO(__u32	lease_state,		\
89738c8a9a5SSteve French 		__u32	tid,			\
89838c8a9a5SSteve French 		__u64	sesid,			\
89938c8a9a5SSteve French 		__u64	lease_key_low,		\
90038c8a9a5SSteve French 		__u64	lease_key_high,		\
90138c8a9a5SSteve French 		int	rc),			\
90238c8a9a5SSteve French 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc))
90338c8a9a5SSteve French 
90438c8a9a5SSteve French DEFINE_SMB3_LEASE_ERR_EVENT(lease_err);
90538c8a9a5SSteve French 
90638c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_connect_class,
90738c8a9a5SSteve French 	TP_PROTO(char *hostname,
90838c8a9a5SSteve French 		__u64 conn_id,
90938c8a9a5SSteve French 		const struct __kernel_sockaddr_storage *dst_addr),
91038c8a9a5SSteve French 	TP_ARGS(hostname, conn_id, dst_addr),
91138c8a9a5SSteve French 	TP_STRUCT__entry(
91238c8a9a5SSteve French 		__string(hostname, hostname)
91338c8a9a5SSteve French 		__field(__u64, conn_id)
91438c8a9a5SSteve French 		__array(__u8, dst_addr, sizeof(struct sockaddr_storage))
91538c8a9a5SSteve French 	),
91638c8a9a5SSteve French 	TP_fast_assign(
91738c8a9a5SSteve French 		struct sockaddr_storage *pss = NULL;
91838c8a9a5SSteve French 
91938c8a9a5SSteve French 		__entry->conn_id = conn_id;
92038c8a9a5SSteve French 		pss = (struct sockaddr_storage *)__entry->dst_addr;
92138c8a9a5SSteve French 		*pss = *dst_addr;
92238c8a9a5SSteve French 		__assign_str(hostname, hostname);
92338c8a9a5SSteve French 	),
92438c8a9a5SSteve French 	TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc",
92538c8a9a5SSteve French 		__entry->conn_id,
92638c8a9a5SSteve French 		__get_str(hostname),
92738c8a9a5SSteve French 		__entry->dst_addr)
92838c8a9a5SSteve French )
92938c8a9a5SSteve French 
93038c8a9a5SSteve French #define DEFINE_SMB3_CONNECT_EVENT(name)        \
93138c8a9a5SSteve French DEFINE_EVENT(smb3_connect_class, smb3_##name,  \
93238c8a9a5SSteve French 	TP_PROTO(char *hostname,		\
93338c8a9a5SSteve French 		__u64 conn_id,			\
93438c8a9a5SSteve French 		const struct __kernel_sockaddr_storage *addr),	\
93538c8a9a5SSteve French 	TP_ARGS(hostname, conn_id, addr))
93638c8a9a5SSteve French 
93738c8a9a5SSteve French DEFINE_SMB3_CONNECT_EVENT(connect_done);
93838c8a9a5SSteve French 
93938c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_connect_err_class,
94038c8a9a5SSteve French 	TP_PROTO(char *hostname, __u64 conn_id,
94138c8a9a5SSteve French 		const struct __kernel_sockaddr_storage *dst_addr, int rc),
94238c8a9a5SSteve French 	TP_ARGS(hostname, conn_id, dst_addr, rc),
94338c8a9a5SSteve French 	TP_STRUCT__entry(
94438c8a9a5SSteve French 		__string(hostname, hostname)
94538c8a9a5SSteve French 		__field(__u64, conn_id)
94638c8a9a5SSteve French 		__array(__u8, dst_addr, sizeof(struct sockaddr_storage))
94738c8a9a5SSteve French 		__field(int, rc)
94838c8a9a5SSteve French 	),
94938c8a9a5SSteve French 	TP_fast_assign(
95038c8a9a5SSteve French 		struct sockaddr_storage *pss = NULL;
95138c8a9a5SSteve French 
95238c8a9a5SSteve French 		__entry->conn_id = conn_id;
95338c8a9a5SSteve French 		__entry->rc = rc;
95438c8a9a5SSteve French 		pss = (struct sockaddr_storage *)__entry->dst_addr;
95538c8a9a5SSteve French 		*pss = *dst_addr;
95638c8a9a5SSteve French 		__assign_str(hostname, hostname);
95738c8a9a5SSteve French 	),
95838c8a9a5SSteve French 	TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc",
95938c8a9a5SSteve French 		__entry->rc,
96038c8a9a5SSteve French 		__entry->conn_id,
96138c8a9a5SSteve French 		__get_str(hostname),
96238c8a9a5SSteve French 		__entry->dst_addr)
96338c8a9a5SSteve French )
96438c8a9a5SSteve French 
96538c8a9a5SSteve French #define DEFINE_SMB3_CONNECT_ERR_EVENT(name)        \
96638c8a9a5SSteve French DEFINE_EVENT(smb3_connect_err_class, smb3_##name,  \
96738c8a9a5SSteve French 	TP_PROTO(char *hostname,		\
96838c8a9a5SSteve French 		__u64 conn_id,			\
96938c8a9a5SSteve French 		const struct __kernel_sockaddr_storage *addr,	\
97038c8a9a5SSteve French 		int rc),			\
97138c8a9a5SSteve French 	TP_ARGS(hostname, conn_id, addr, rc))
97238c8a9a5SSteve French 
97338c8a9a5SSteve French DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err);
97438c8a9a5SSteve French 
97538c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_reconnect_class,
97638c8a9a5SSteve French 	TP_PROTO(__u64	currmid,
97738c8a9a5SSteve French 		__u64 conn_id,
97838c8a9a5SSteve French 		char *hostname),
97938c8a9a5SSteve French 	TP_ARGS(currmid, conn_id, hostname),
98038c8a9a5SSteve French 	TP_STRUCT__entry(
98138c8a9a5SSteve French 		__field(__u64, currmid)
98238c8a9a5SSteve French 		__field(__u64, conn_id)
98338c8a9a5SSteve French 		__string(hostname, hostname)
98438c8a9a5SSteve French 	),
98538c8a9a5SSteve French 	TP_fast_assign(
98638c8a9a5SSteve French 		__entry->currmid = currmid;
98738c8a9a5SSteve French 		__entry->conn_id = conn_id;
98838c8a9a5SSteve French 		__assign_str(hostname, hostname);
98938c8a9a5SSteve French 	),
99038c8a9a5SSteve French 	TP_printk("conn_id=0x%llx server=%s current_mid=%llu",
99138c8a9a5SSteve French 		__entry->conn_id,
99238c8a9a5SSteve French 		__get_str(hostname),
99338c8a9a5SSteve French 		__entry->currmid)
99438c8a9a5SSteve French )
99538c8a9a5SSteve French 
99638c8a9a5SSteve French #define DEFINE_SMB3_RECONNECT_EVENT(name)        \
99738c8a9a5SSteve French DEFINE_EVENT(smb3_reconnect_class, smb3_##name,  \
99838c8a9a5SSteve French 	TP_PROTO(__u64	currmid,		\
99938c8a9a5SSteve French 		__u64 conn_id,			\
100038c8a9a5SSteve French 		char *hostname),				\
100138c8a9a5SSteve French 	TP_ARGS(currmid, conn_id, hostname))
100238c8a9a5SSteve French 
100338c8a9a5SSteve French DEFINE_SMB3_RECONNECT_EVENT(reconnect);
100438c8a9a5SSteve French DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect);
100538c8a9a5SSteve French 
1006*61986a58SShyam Prasad N DECLARE_EVENT_CLASS(smb3_ses_class,
1007*61986a58SShyam Prasad N 	TP_PROTO(__u64	sesid),
1008*61986a58SShyam Prasad N 	TP_ARGS(sesid),
1009*61986a58SShyam Prasad N 	TP_STRUCT__entry(
1010*61986a58SShyam Prasad N 		__field(__u64, sesid)
1011*61986a58SShyam Prasad N 	),
1012*61986a58SShyam Prasad N 	TP_fast_assign(
1013*61986a58SShyam Prasad N 		__entry->sesid = sesid;
1014*61986a58SShyam Prasad N 	),
1015*61986a58SShyam Prasad N 	TP_printk("sid=0x%llx",
1016*61986a58SShyam Prasad N 		__entry->sesid)
1017*61986a58SShyam Prasad N )
1018*61986a58SShyam Prasad N 
1019*61986a58SShyam Prasad N #define DEFINE_SMB3_SES_EVENT(name)        \
1020*61986a58SShyam Prasad N DEFINE_EVENT(smb3_ses_class, smb3_##name,  \
1021*61986a58SShyam Prasad N 	TP_PROTO(__u64	sesid),				\
1022*61986a58SShyam Prasad N 	TP_ARGS(sesid))
1023*61986a58SShyam Prasad N 
1024*61986a58SShyam Prasad N DEFINE_SMB3_SES_EVENT(ses_not_found);
1025*61986a58SShyam Prasad N 
102638c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_credit_class,
102738c8a9a5SSteve French 	TP_PROTO(__u64	currmid,
102838c8a9a5SSteve French 		__u64 conn_id,
102938c8a9a5SSteve French 		char *hostname,
103038c8a9a5SSteve French 		int credits,
103138c8a9a5SSteve French 		int credits_to_add,
103238c8a9a5SSteve French 		int in_flight),
103338c8a9a5SSteve French 	TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight),
103438c8a9a5SSteve French 	TP_STRUCT__entry(
103538c8a9a5SSteve French 		__field(__u64, currmid)
103638c8a9a5SSteve French 		__field(__u64, conn_id)
103738c8a9a5SSteve French 		__string(hostname, hostname)
103838c8a9a5SSteve French 		__field(int, credits)
103938c8a9a5SSteve French 		__field(int, credits_to_add)
104038c8a9a5SSteve French 		__field(int, in_flight)
104138c8a9a5SSteve French 	),
104238c8a9a5SSteve French 	TP_fast_assign(
104338c8a9a5SSteve French 		__entry->currmid = currmid;
104438c8a9a5SSteve French 		__entry->conn_id = conn_id;
104538c8a9a5SSteve French 		__assign_str(hostname, hostname);
104638c8a9a5SSteve French 		__entry->credits = credits;
104738c8a9a5SSteve French 		__entry->credits_to_add = credits_to_add;
104838c8a9a5SSteve French 		__entry->in_flight = in_flight;
104938c8a9a5SSteve French 	),
105038c8a9a5SSteve French 	TP_printk("conn_id=0x%llx server=%s current_mid=%llu "
105138c8a9a5SSteve French 			"credits=%d credit_change=%d in_flight=%d",
105238c8a9a5SSteve French 		__entry->conn_id,
105338c8a9a5SSteve French 		__get_str(hostname),
105438c8a9a5SSteve French 		__entry->currmid,
105538c8a9a5SSteve French 		__entry->credits,
105638c8a9a5SSteve French 		__entry->credits_to_add,
105738c8a9a5SSteve French 		__entry->in_flight)
105838c8a9a5SSteve French )
105938c8a9a5SSteve French 
106038c8a9a5SSteve French #define DEFINE_SMB3_CREDIT_EVENT(name)        \
106138c8a9a5SSteve French DEFINE_EVENT(smb3_credit_class, smb3_##name,  \
106238c8a9a5SSteve French 	TP_PROTO(__u64	currmid,		\
106338c8a9a5SSteve French 		__u64 conn_id,			\
106438c8a9a5SSteve French 		char *hostname,			\
106538c8a9a5SSteve French 		int  credits,			\
106638c8a9a5SSteve French 		int  credits_to_add,	\
106738c8a9a5SSteve French 		int in_flight),			\
106838c8a9a5SSteve French 	TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight))
106938c8a9a5SSteve French 
107038c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits);
107138c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(reconnect_detected);
107238c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(credit_timeout);
107338c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(insufficient_credits);
107438c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(too_many_credits);
107538c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(add_credits);
107638c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(adj_credits);
107738c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(hdr_credits);
107838c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(nblk_credits);
107938c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(pend_credits);
108038c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(wait_credits);
108138c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(waitff_credits);
108238c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(overflow_credits);
108338c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(set_credits);
108438c8a9a5SSteve French 
108538c8a9a5SSteve French #endif /* _CIFS_TRACE_H */
108638c8a9a5SSteve French 
108738c8a9a5SSteve French #undef TRACE_INCLUDE_PATH
108838c8a9a5SSteve French #define TRACE_INCLUDE_PATH .
108938c8a9a5SSteve French #define TRACE_INCLUDE_FILE trace
109038c8a9a5SSteve French #include <trace/define_trace.h>
1091