xref: /openbmc/linux/fs/smb/client/trace.h (revision 38c8a9a5)
1*38c8a9a5SSteve French /* SPDX-License-Identifier: GPL-2.0 */
2*38c8a9a5SSteve French /*
3*38c8a9a5SSteve French  *   Copyright (C) 2018, Microsoft Corporation.
4*38c8a9a5SSteve French  *
5*38c8a9a5SSteve French  *   Author(s): Steve French <stfrench@microsoft.com>
6*38c8a9a5SSteve French  */
7*38c8a9a5SSteve French #undef TRACE_SYSTEM
8*38c8a9a5SSteve French #define TRACE_SYSTEM cifs
9*38c8a9a5SSteve French 
10*38c8a9a5SSteve French #if !defined(_CIFS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
11*38c8a9a5SSteve French #define _CIFS_TRACE_H
12*38c8a9a5SSteve French 
13*38c8a9a5SSteve French #include <linux/tracepoint.h>
14*38c8a9a5SSteve French #include <linux/net.h>
15*38c8a9a5SSteve French #include <linux/inet.h>
16*38c8a9a5SSteve French 
17*38c8a9a5SSteve French /*
18*38c8a9a5SSteve French  * Please use this 3-part article as a reference for writing new tracepoints:
19*38c8a9a5SSteve French  * https://lwn.net/Articles/379903/
20*38c8a9a5SSteve French  */
21*38c8a9a5SSteve French 
22*38c8a9a5SSteve French /* For logging errors in read or write */
23*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_rw_err_class,
24*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
25*38c8a9a5SSteve French 		__u64	fid,
26*38c8a9a5SSteve French 		__u32	tid,
27*38c8a9a5SSteve French 		__u64	sesid,
28*38c8a9a5SSteve French 		__u64	offset,
29*38c8a9a5SSteve French 		__u32	len,
30*38c8a9a5SSteve French 		int	rc),
31*38c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset, len, rc),
32*38c8a9a5SSteve French 	TP_STRUCT__entry(
33*38c8a9a5SSteve French 		__field(unsigned int, xid)
34*38c8a9a5SSteve French 		__field(__u64, fid)
35*38c8a9a5SSteve French 		__field(__u32, tid)
36*38c8a9a5SSteve French 		__field(__u64, sesid)
37*38c8a9a5SSteve French 		__field(__u64, offset)
38*38c8a9a5SSteve French 		__field(__u32, len)
39*38c8a9a5SSteve French 		__field(int, rc)
40*38c8a9a5SSteve French 	),
41*38c8a9a5SSteve French 	TP_fast_assign(
42*38c8a9a5SSteve French 		__entry->xid = xid;
43*38c8a9a5SSteve French 		__entry->fid = fid;
44*38c8a9a5SSteve French 		__entry->tid = tid;
45*38c8a9a5SSteve French 		__entry->sesid = sesid;
46*38c8a9a5SSteve French 		__entry->offset = offset;
47*38c8a9a5SSteve French 		__entry->len = len;
48*38c8a9a5SSteve French 		__entry->rc = rc;
49*38c8a9a5SSteve French 	),
50*38c8a9a5SSteve French 	TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d",
51*38c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
52*38c8a9a5SSteve French 		__entry->offset, __entry->len, __entry->rc)
53*38c8a9a5SSteve French )
54*38c8a9a5SSteve French 
55*38c8a9a5SSteve French #define DEFINE_SMB3_RW_ERR_EVENT(name)          \
56*38c8a9a5SSteve French DEFINE_EVENT(smb3_rw_err_class, smb3_##name,    \
57*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
58*38c8a9a5SSteve French 		__u64	fid,			\
59*38c8a9a5SSteve French 		__u32	tid,			\
60*38c8a9a5SSteve French 		__u64	sesid,			\
61*38c8a9a5SSteve French 		__u64	offset,			\
62*38c8a9a5SSteve French 		__u32	len,			\
63*38c8a9a5SSteve French 		int	rc),			\
64*38c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset, len, rc))
65*38c8a9a5SSteve French 
66*38c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(write_err);
67*38c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(read_err);
68*38c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(query_dir_err);
69*38c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(zero_err);
70*38c8a9a5SSteve French DEFINE_SMB3_RW_ERR_EVENT(falloc_err);
71*38c8a9a5SSteve French 
72*38c8a9a5SSteve French 
73*38c8a9a5SSteve French /* For logging successful read or write */
74*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_rw_done_class,
75*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
76*38c8a9a5SSteve French 		__u64	fid,
77*38c8a9a5SSteve French 		__u32	tid,
78*38c8a9a5SSteve French 		__u64	sesid,
79*38c8a9a5SSteve French 		__u64	offset,
80*38c8a9a5SSteve French 		__u32	len),
81*38c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset, len),
82*38c8a9a5SSteve French 	TP_STRUCT__entry(
83*38c8a9a5SSteve French 		__field(unsigned int, xid)
84*38c8a9a5SSteve French 		__field(__u64, fid)
85*38c8a9a5SSteve French 		__field(__u32, tid)
86*38c8a9a5SSteve French 		__field(__u64, sesid)
87*38c8a9a5SSteve French 		__field(__u64, offset)
88*38c8a9a5SSteve French 		__field(__u32, len)
89*38c8a9a5SSteve French 	),
90*38c8a9a5SSteve French 	TP_fast_assign(
91*38c8a9a5SSteve French 		__entry->xid = xid;
92*38c8a9a5SSteve French 		__entry->fid = fid;
93*38c8a9a5SSteve French 		__entry->tid = tid;
94*38c8a9a5SSteve French 		__entry->sesid = sesid;
95*38c8a9a5SSteve French 		__entry->offset = offset;
96*38c8a9a5SSteve French 		__entry->len = len;
97*38c8a9a5SSteve French 	),
98*38c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x",
99*38c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
100*38c8a9a5SSteve French 		__entry->offset, __entry->len)
101*38c8a9a5SSteve French )
102*38c8a9a5SSteve French 
103*38c8a9a5SSteve French #define DEFINE_SMB3_RW_DONE_EVENT(name)         \
104*38c8a9a5SSteve French DEFINE_EVENT(smb3_rw_done_class, smb3_##name,   \
105*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
106*38c8a9a5SSteve French 		__u64	fid,			\
107*38c8a9a5SSteve French 		__u32	tid,			\
108*38c8a9a5SSteve French 		__u64	sesid,			\
109*38c8a9a5SSteve French 		__u64	offset,			\
110*38c8a9a5SSteve French 		__u32	len),			\
111*38c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset, len))
112*38c8a9a5SSteve French 
113*38c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(write_enter);
114*38c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(read_enter);
115*38c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(query_dir_enter);
116*38c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(zero_enter);
117*38c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(falloc_enter);
118*38c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(write_done);
119*38c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(read_done);
120*38c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(query_dir_done);
121*38c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(zero_done);
122*38c8a9a5SSteve French DEFINE_SMB3_RW_DONE_EVENT(falloc_done);
123*38c8a9a5SSteve French 
124*38c8a9a5SSteve French /* For logging successful set EOF (truncate) */
125*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_eof_class,
126*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
127*38c8a9a5SSteve French 		__u64	fid,
128*38c8a9a5SSteve French 		__u32	tid,
129*38c8a9a5SSteve French 		__u64	sesid,
130*38c8a9a5SSteve French 		__u64	offset),
131*38c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset),
132*38c8a9a5SSteve French 	TP_STRUCT__entry(
133*38c8a9a5SSteve French 		__field(unsigned int, xid)
134*38c8a9a5SSteve French 		__field(__u64, fid)
135*38c8a9a5SSteve French 		__field(__u32, tid)
136*38c8a9a5SSteve French 		__field(__u64, sesid)
137*38c8a9a5SSteve French 		__field(__u64, offset)
138*38c8a9a5SSteve French 	),
139*38c8a9a5SSteve French 	TP_fast_assign(
140*38c8a9a5SSteve French 		__entry->xid = xid;
141*38c8a9a5SSteve French 		__entry->fid = fid;
142*38c8a9a5SSteve French 		__entry->tid = tid;
143*38c8a9a5SSteve French 		__entry->sesid = sesid;
144*38c8a9a5SSteve French 		__entry->offset = offset;
145*38c8a9a5SSteve French 	),
146*38c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx",
147*38c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
148*38c8a9a5SSteve French 		__entry->offset)
149*38c8a9a5SSteve French )
150*38c8a9a5SSteve French 
151*38c8a9a5SSteve French #define DEFINE_SMB3_EOF_EVENT(name)         \
152*38c8a9a5SSteve French DEFINE_EVENT(smb3_eof_class, smb3_##name,   \
153*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
154*38c8a9a5SSteve French 		__u64	fid,			\
155*38c8a9a5SSteve French 		__u32	tid,			\
156*38c8a9a5SSteve French 		__u64	sesid,			\
157*38c8a9a5SSteve French 		__u64	offset),		\
158*38c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, offset))
159*38c8a9a5SSteve French 
160*38c8a9a5SSteve French DEFINE_SMB3_EOF_EVENT(set_eof);
161*38c8a9a5SSteve French 
162*38c8a9a5SSteve French /*
163*38c8a9a5SSteve French  * For handle based calls other than read and write, and get/set info
164*38c8a9a5SSteve French  */
165*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_fd_class,
166*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
167*38c8a9a5SSteve French 		__u64	fid,
168*38c8a9a5SSteve French 		__u32	tid,
169*38c8a9a5SSteve French 		__u64	sesid),
170*38c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid),
171*38c8a9a5SSteve French 	TP_STRUCT__entry(
172*38c8a9a5SSteve French 		__field(unsigned int, xid)
173*38c8a9a5SSteve French 		__field(__u64, fid)
174*38c8a9a5SSteve French 		__field(__u32, tid)
175*38c8a9a5SSteve French 		__field(__u64, sesid)
176*38c8a9a5SSteve French 	),
177*38c8a9a5SSteve French 	TP_fast_assign(
178*38c8a9a5SSteve French 		__entry->xid = xid;
179*38c8a9a5SSteve French 		__entry->fid = fid;
180*38c8a9a5SSteve French 		__entry->tid = tid;
181*38c8a9a5SSteve French 		__entry->sesid = sesid;
182*38c8a9a5SSteve French 	),
183*38c8a9a5SSteve French 	TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx",
184*38c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid)
185*38c8a9a5SSteve French )
186*38c8a9a5SSteve French 
187*38c8a9a5SSteve French #define DEFINE_SMB3_FD_EVENT(name)          \
188*38c8a9a5SSteve French DEFINE_EVENT(smb3_fd_class, smb3_##name,    \
189*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
190*38c8a9a5SSteve French 		__u64	fid,			\
191*38c8a9a5SSteve French 		__u32	tid,			\
192*38c8a9a5SSteve French 		__u64	sesid),			\
193*38c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid))
194*38c8a9a5SSteve French 
195*38c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(flush_enter);
196*38c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(flush_done);
197*38c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(close_enter);
198*38c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(close_done);
199*38c8a9a5SSteve French DEFINE_SMB3_FD_EVENT(oplock_not_found);
200*38c8a9a5SSteve French 
201*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_fd_err_class,
202*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
203*38c8a9a5SSteve French 		__u64	fid,
204*38c8a9a5SSteve French 		__u32	tid,
205*38c8a9a5SSteve French 		__u64	sesid,
206*38c8a9a5SSteve French 		int	rc),
207*38c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, rc),
208*38c8a9a5SSteve French 	TP_STRUCT__entry(
209*38c8a9a5SSteve French 		__field(unsigned int, xid)
210*38c8a9a5SSteve French 		__field(__u64, fid)
211*38c8a9a5SSteve French 		__field(__u32, tid)
212*38c8a9a5SSteve French 		__field(__u64, sesid)
213*38c8a9a5SSteve French 		__field(int, rc)
214*38c8a9a5SSteve French 	),
215*38c8a9a5SSteve French 	TP_fast_assign(
216*38c8a9a5SSteve French 		__entry->xid = xid;
217*38c8a9a5SSteve French 		__entry->fid = fid;
218*38c8a9a5SSteve French 		__entry->tid = tid;
219*38c8a9a5SSteve French 		__entry->sesid = sesid;
220*38c8a9a5SSteve French 		__entry->rc = rc;
221*38c8a9a5SSteve French 	),
222*38c8a9a5SSteve French 	TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d",
223*38c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
224*38c8a9a5SSteve French 		__entry->rc)
225*38c8a9a5SSteve French )
226*38c8a9a5SSteve French 
227*38c8a9a5SSteve French #define DEFINE_SMB3_FD_ERR_EVENT(name)          \
228*38c8a9a5SSteve French DEFINE_EVENT(smb3_fd_err_class, smb3_##name,    \
229*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
230*38c8a9a5SSteve French 		__u64	fid,			\
231*38c8a9a5SSteve French 		__u32	tid,			\
232*38c8a9a5SSteve French 		__u64	sesid,			\
233*38c8a9a5SSteve French 		int	rc),			\
234*38c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, rc))
235*38c8a9a5SSteve French 
236*38c8a9a5SSteve French DEFINE_SMB3_FD_ERR_EVENT(flush_err);
237*38c8a9a5SSteve French DEFINE_SMB3_FD_ERR_EVENT(lock_err);
238*38c8a9a5SSteve French DEFINE_SMB3_FD_ERR_EVENT(close_err);
239*38c8a9a5SSteve French 
240*38c8a9a5SSteve French /*
241*38c8a9a5SSteve French  * For handle based query/set info calls
242*38c8a9a5SSteve French  */
243*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_enter_class,
244*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
245*38c8a9a5SSteve French 		__u64	fid,
246*38c8a9a5SSteve French 		__u32	tid,
247*38c8a9a5SSteve French 		__u64	sesid,
248*38c8a9a5SSteve French 		__u8	infclass,
249*38c8a9a5SSteve French 		__u32	type),
250*38c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, infclass, type),
251*38c8a9a5SSteve French 	TP_STRUCT__entry(
252*38c8a9a5SSteve French 		__field(unsigned int, xid)
253*38c8a9a5SSteve French 		__field(__u64, fid)
254*38c8a9a5SSteve French 		__field(__u32, tid)
255*38c8a9a5SSteve French 		__field(__u64, sesid)
256*38c8a9a5SSteve French 		__field(__u8, infclass)
257*38c8a9a5SSteve French 		__field(__u32, type)
258*38c8a9a5SSteve French 	),
259*38c8a9a5SSteve French 	TP_fast_assign(
260*38c8a9a5SSteve French 		__entry->xid = xid;
261*38c8a9a5SSteve French 		__entry->fid = fid;
262*38c8a9a5SSteve French 		__entry->tid = tid;
263*38c8a9a5SSteve French 		__entry->sesid = sesid;
264*38c8a9a5SSteve French 		__entry->infclass = infclass;
265*38c8a9a5SSteve French 		__entry->type = type;
266*38c8a9a5SSteve French 	),
267*38c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x",
268*38c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
269*38c8a9a5SSteve French 		__entry->infclass, __entry->type)
270*38c8a9a5SSteve French )
271*38c8a9a5SSteve French 
272*38c8a9a5SSteve French #define DEFINE_SMB3_INF_ENTER_EVENT(name)          \
273*38c8a9a5SSteve French DEFINE_EVENT(smb3_inf_enter_class, smb3_##name,    \
274*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
275*38c8a9a5SSteve French 		__u64	fid,			\
276*38c8a9a5SSteve French 		__u32	tid,			\
277*38c8a9a5SSteve French 		__u64	sesid,			\
278*38c8a9a5SSteve French 		__u8	infclass,		\
279*38c8a9a5SSteve French 		__u32	type),			\
280*38c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, infclass, type))
281*38c8a9a5SSteve French 
282*38c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter);
283*38c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(query_info_done);
284*38c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(notify_enter);
285*38c8a9a5SSteve French DEFINE_SMB3_INF_ENTER_EVENT(notify_done);
286*38c8a9a5SSteve French 
287*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_err_class,
288*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
289*38c8a9a5SSteve French 		__u64	fid,
290*38c8a9a5SSteve French 		__u32	tid,
291*38c8a9a5SSteve French 		__u64	sesid,
292*38c8a9a5SSteve French 		__u8	infclass,
293*38c8a9a5SSteve French 		__u32	type,
294*38c8a9a5SSteve French 		int	rc),
295*38c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, infclass, type, rc),
296*38c8a9a5SSteve French 	TP_STRUCT__entry(
297*38c8a9a5SSteve French 		__field(unsigned int, xid)
298*38c8a9a5SSteve French 		__field(__u64, fid)
299*38c8a9a5SSteve French 		__field(__u32, tid)
300*38c8a9a5SSteve French 		__field(__u64, sesid)
301*38c8a9a5SSteve French 		__field(__u8, infclass)
302*38c8a9a5SSteve French 		__field(__u32, type)
303*38c8a9a5SSteve French 		__field(int, rc)
304*38c8a9a5SSteve French 	),
305*38c8a9a5SSteve French 	TP_fast_assign(
306*38c8a9a5SSteve French 		__entry->xid = xid;
307*38c8a9a5SSteve French 		__entry->fid = fid;
308*38c8a9a5SSteve French 		__entry->tid = tid;
309*38c8a9a5SSteve French 		__entry->sesid = sesid;
310*38c8a9a5SSteve French 		__entry->infclass = infclass;
311*38c8a9a5SSteve French 		__entry->type = type;
312*38c8a9a5SSteve French 		__entry->rc = rc;
313*38c8a9a5SSteve French 	),
314*38c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d",
315*38c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
316*38c8a9a5SSteve French 		__entry->infclass, __entry->type, __entry->rc)
317*38c8a9a5SSteve French )
318*38c8a9a5SSteve French 
319*38c8a9a5SSteve French #define DEFINE_SMB3_INF_ERR_EVENT(name)          \
320*38c8a9a5SSteve French DEFINE_EVENT(smb3_inf_err_class, smb3_##name,    \
321*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
322*38c8a9a5SSteve French 		__u64	fid,			\
323*38c8a9a5SSteve French 		__u32	tid,			\
324*38c8a9a5SSteve French 		__u64	sesid,			\
325*38c8a9a5SSteve French 		__u8	infclass,		\
326*38c8a9a5SSteve French 		__u32	type,			\
327*38c8a9a5SSteve French 		int	rc),			\
328*38c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, infclass, type, rc))
329*38c8a9a5SSteve French 
330*38c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(query_info_err);
331*38c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(set_info_err);
332*38c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(notify_err);
333*38c8a9a5SSteve French DEFINE_SMB3_INF_ERR_EVENT(fsctl_err);
334*38c8a9a5SSteve French 
335*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class,
336*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
337*38c8a9a5SSteve French 		__u32	tid,
338*38c8a9a5SSteve French 		__u64	sesid,
339*38c8a9a5SSteve French 		const char *full_path),
340*38c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, full_path),
341*38c8a9a5SSteve French 	TP_STRUCT__entry(
342*38c8a9a5SSteve French 		__field(unsigned int, xid)
343*38c8a9a5SSteve French 		__field(__u32, tid)
344*38c8a9a5SSteve French 		__field(__u64, sesid)
345*38c8a9a5SSteve French 		__string(path, full_path)
346*38c8a9a5SSteve French 	),
347*38c8a9a5SSteve French 	TP_fast_assign(
348*38c8a9a5SSteve French 		__entry->xid = xid;
349*38c8a9a5SSteve French 		__entry->tid = tid;
350*38c8a9a5SSteve French 		__entry->sesid = sesid;
351*38c8a9a5SSteve French 		__assign_str(path, full_path);
352*38c8a9a5SSteve French 	),
353*38c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s",
354*38c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid,
355*38c8a9a5SSteve French 		__get_str(path))
356*38c8a9a5SSteve French )
357*38c8a9a5SSteve French 
358*38c8a9a5SSteve French #define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name)     \
359*38c8a9a5SSteve French DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name,    \
360*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
361*38c8a9a5SSteve French 		__u32	tid,			\
362*38c8a9a5SSteve French 		__u64	sesid,			\
363*38c8a9a5SSteve French 		const char *full_path),		\
364*38c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, full_path))
365*38c8a9a5SSteve French 
366*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter);
367*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter);
368*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter);
369*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter);
370*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter);
371*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter);
372*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter);
373*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter);
374*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter);
375*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(tdis_enter);
376*38c8a9a5SSteve French 
377*38c8a9a5SSteve French 
378*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_compound_done_class,
379*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
380*38c8a9a5SSteve French 		__u32	tid,
381*38c8a9a5SSteve French 		__u64	sesid),
382*38c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid),
383*38c8a9a5SSteve French 	TP_STRUCT__entry(
384*38c8a9a5SSteve French 		__field(unsigned int, xid)
385*38c8a9a5SSteve French 		__field(__u32, tid)
386*38c8a9a5SSteve French 		__field(__u64, sesid)
387*38c8a9a5SSteve French 	),
388*38c8a9a5SSteve French 	TP_fast_assign(
389*38c8a9a5SSteve French 		__entry->xid = xid;
390*38c8a9a5SSteve French 		__entry->tid = tid;
391*38c8a9a5SSteve French 		__entry->sesid = sesid;
392*38c8a9a5SSteve French 	),
393*38c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x",
394*38c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid)
395*38c8a9a5SSteve French )
396*38c8a9a5SSteve French 
397*38c8a9a5SSteve French #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name)     \
398*38c8a9a5SSteve French DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name,    \
399*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
400*38c8a9a5SSteve French 		__u32	tid,			\
401*38c8a9a5SSteve French 		__u64	sesid),			\
402*38c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid))
403*38c8a9a5SSteve French 
404*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done);
405*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done);
406*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done);
407*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done);
408*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done);
409*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done);
410*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done);
411*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done);
412*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done);
413*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(tdis_done);
414*38c8a9a5SSteve French 
415*38c8a9a5SSteve French 
416*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_inf_compound_err_class,
417*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
418*38c8a9a5SSteve French 		__u32	tid,
419*38c8a9a5SSteve French 		__u64	sesid,
420*38c8a9a5SSteve French 		int	rc),
421*38c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, rc),
422*38c8a9a5SSteve French 	TP_STRUCT__entry(
423*38c8a9a5SSteve French 		__field(unsigned int, xid)
424*38c8a9a5SSteve French 		__field(__u32, tid)
425*38c8a9a5SSteve French 		__field(__u64, sesid)
426*38c8a9a5SSteve French 		__field(int, rc)
427*38c8a9a5SSteve French 	),
428*38c8a9a5SSteve French 	TP_fast_assign(
429*38c8a9a5SSteve French 		__entry->xid = xid;
430*38c8a9a5SSteve French 		__entry->tid = tid;
431*38c8a9a5SSteve French 		__entry->sesid = sesid;
432*38c8a9a5SSteve French 		__entry->rc = rc;
433*38c8a9a5SSteve French 	),
434*38c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d",
435*38c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid,
436*38c8a9a5SSteve French 		__entry->rc)
437*38c8a9a5SSteve French )
438*38c8a9a5SSteve French 
439*38c8a9a5SSteve French #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name)     \
440*38c8a9a5SSteve French DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name,    \
441*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
442*38c8a9a5SSteve French 		__u32	tid,			\
443*38c8a9a5SSteve French 		__u64	sesid,			\
444*38c8a9a5SSteve French 		int rc),			\
445*38c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, rc))
446*38c8a9a5SSteve French 
447*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err);
448*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err);
449*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err);
450*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err);
451*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err);
452*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err);
453*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err);
454*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err);
455*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err);
456*38c8a9a5SSteve French DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(tdis_err);
457*38c8a9a5SSteve French 
458*38c8a9a5SSteve French /*
459*38c8a9a5SSteve French  * For logging SMB3 Status code and Command for responses which return errors
460*38c8a9a5SSteve French  */
461*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_cmd_err_class,
462*38c8a9a5SSteve French 	TP_PROTO(__u32	tid,
463*38c8a9a5SSteve French 		__u64	sesid,
464*38c8a9a5SSteve French 		__u16	cmd,
465*38c8a9a5SSteve French 		__u64	mid,
466*38c8a9a5SSteve French 		__u32	status,
467*38c8a9a5SSteve French 		int	rc),
468*38c8a9a5SSteve French 	TP_ARGS(tid, sesid, cmd, mid, status, rc),
469*38c8a9a5SSteve French 	TP_STRUCT__entry(
470*38c8a9a5SSteve French 		__field(__u32, tid)
471*38c8a9a5SSteve French 		__field(__u64, sesid)
472*38c8a9a5SSteve French 		__field(__u16, cmd)
473*38c8a9a5SSteve French 		__field(__u64, mid)
474*38c8a9a5SSteve French 		__field(__u32, status)
475*38c8a9a5SSteve French 		__field(int, rc)
476*38c8a9a5SSteve French 	),
477*38c8a9a5SSteve French 	TP_fast_assign(
478*38c8a9a5SSteve French 		__entry->tid = tid;
479*38c8a9a5SSteve French 		__entry->sesid = sesid;
480*38c8a9a5SSteve French 		__entry->cmd = cmd;
481*38c8a9a5SSteve French 		__entry->mid = mid;
482*38c8a9a5SSteve French 		__entry->status = status;
483*38c8a9a5SSteve French 		__entry->rc = rc;
484*38c8a9a5SSteve French 	),
485*38c8a9a5SSteve French 	TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d",
486*38c8a9a5SSteve French 		__entry->sesid, __entry->tid, __entry->cmd, __entry->mid,
487*38c8a9a5SSteve French 		__entry->status, __entry->rc)
488*38c8a9a5SSteve French )
489*38c8a9a5SSteve French 
490*38c8a9a5SSteve French #define DEFINE_SMB3_CMD_ERR_EVENT(name)          \
491*38c8a9a5SSteve French DEFINE_EVENT(smb3_cmd_err_class, smb3_##name,    \
492*38c8a9a5SSteve French 	TP_PROTO(__u32	tid,			\
493*38c8a9a5SSteve French 		__u64	sesid,			\
494*38c8a9a5SSteve French 		__u16	cmd,			\
495*38c8a9a5SSteve French 		__u64	mid,			\
496*38c8a9a5SSteve French 		__u32	status,			\
497*38c8a9a5SSteve French 		int	rc),			\
498*38c8a9a5SSteve French 	TP_ARGS(tid, sesid, cmd, mid, status, rc))
499*38c8a9a5SSteve French 
500*38c8a9a5SSteve French DEFINE_SMB3_CMD_ERR_EVENT(cmd_err);
501*38c8a9a5SSteve French 
502*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_cmd_done_class,
503*38c8a9a5SSteve French 	TP_PROTO(__u32	tid,
504*38c8a9a5SSteve French 		__u64	sesid,
505*38c8a9a5SSteve French 		__u16	cmd,
506*38c8a9a5SSteve French 		__u64	mid),
507*38c8a9a5SSteve French 	TP_ARGS(tid, sesid, cmd, mid),
508*38c8a9a5SSteve French 	TP_STRUCT__entry(
509*38c8a9a5SSteve French 		__field(__u32, tid)
510*38c8a9a5SSteve French 		__field(__u64, sesid)
511*38c8a9a5SSteve French 		__field(__u16, cmd)
512*38c8a9a5SSteve French 		__field(__u64, mid)
513*38c8a9a5SSteve French 	),
514*38c8a9a5SSteve French 	TP_fast_assign(
515*38c8a9a5SSteve French 		__entry->tid = tid;
516*38c8a9a5SSteve French 		__entry->sesid = sesid;
517*38c8a9a5SSteve French 		__entry->cmd = cmd;
518*38c8a9a5SSteve French 		__entry->mid = mid;
519*38c8a9a5SSteve French 	),
520*38c8a9a5SSteve French 	TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu",
521*38c8a9a5SSteve French 		__entry->sesid, __entry->tid,
522*38c8a9a5SSteve French 		__entry->cmd, __entry->mid)
523*38c8a9a5SSteve French )
524*38c8a9a5SSteve French 
525*38c8a9a5SSteve French #define DEFINE_SMB3_CMD_DONE_EVENT(name)          \
526*38c8a9a5SSteve French DEFINE_EVENT(smb3_cmd_done_class, smb3_##name,    \
527*38c8a9a5SSteve French 	TP_PROTO(__u32	tid,			\
528*38c8a9a5SSteve French 		__u64	sesid,			\
529*38c8a9a5SSteve French 		__u16	cmd,			\
530*38c8a9a5SSteve French 		__u64	mid),			\
531*38c8a9a5SSteve French 	TP_ARGS(tid, sesid, cmd, mid))
532*38c8a9a5SSteve French 
533*38c8a9a5SSteve French DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter);
534*38c8a9a5SSteve French DEFINE_SMB3_CMD_DONE_EVENT(cmd_done);
535*38c8a9a5SSteve French DEFINE_SMB3_CMD_DONE_EVENT(ses_expired);
536*38c8a9a5SSteve French 
537*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_mid_class,
538*38c8a9a5SSteve French 	TP_PROTO(__u16	cmd,
539*38c8a9a5SSteve French 		__u64	mid,
540*38c8a9a5SSteve French 		__u32	pid,
541*38c8a9a5SSteve French 		unsigned long when_sent,
542*38c8a9a5SSteve French 		unsigned long when_received),
543*38c8a9a5SSteve French 	TP_ARGS(cmd, mid, pid, when_sent, when_received),
544*38c8a9a5SSteve French 	TP_STRUCT__entry(
545*38c8a9a5SSteve French 		__field(__u16, cmd)
546*38c8a9a5SSteve French 		__field(__u64, mid)
547*38c8a9a5SSteve French 		__field(__u32, pid)
548*38c8a9a5SSteve French 		__field(unsigned long, when_sent)
549*38c8a9a5SSteve French 		__field(unsigned long, when_received)
550*38c8a9a5SSteve French 	),
551*38c8a9a5SSteve French 	TP_fast_assign(
552*38c8a9a5SSteve French 		__entry->cmd = cmd;
553*38c8a9a5SSteve French 		__entry->mid = mid;
554*38c8a9a5SSteve French 		__entry->pid = pid;
555*38c8a9a5SSteve French 		__entry->when_sent = when_sent;
556*38c8a9a5SSteve French 		__entry->when_received = when_received;
557*38c8a9a5SSteve French 	),
558*38c8a9a5SSteve French 	TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu",
559*38c8a9a5SSteve French 		__entry->cmd, __entry->mid, __entry->pid, __entry->when_sent,
560*38c8a9a5SSteve French 		__entry->when_received)
561*38c8a9a5SSteve French )
562*38c8a9a5SSteve French 
563*38c8a9a5SSteve French #define DEFINE_SMB3_MID_EVENT(name)          \
564*38c8a9a5SSteve French DEFINE_EVENT(smb3_mid_class, smb3_##name,    \
565*38c8a9a5SSteve French 	TP_PROTO(__u16	cmd,			\
566*38c8a9a5SSteve French 		__u64	mid,			\
567*38c8a9a5SSteve French 		__u32	pid,			\
568*38c8a9a5SSteve French 		unsigned long when_sent,	\
569*38c8a9a5SSteve French 		unsigned long when_received),	\
570*38c8a9a5SSteve French 	TP_ARGS(cmd, mid, pid, when_sent, when_received))
571*38c8a9a5SSteve French 
572*38c8a9a5SSteve French DEFINE_SMB3_MID_EVENT(slow_rsp);
573*38c8a9a5SSteve French 
574*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_exit_err_class,
575*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
576*38c8a9a5SSteve French 		const char *func_name,
577*38c8a9a5SSteve French 		int	rc),
578*38c8a9a5SSteve French 	TP_ARGS(xid, func_name, rc),
579*38c8a9a5SSteve French 	TP_STRUCT__entry(
580*38c8a9a5SSteve French 		__field(unsigned int, xid)
581*38c8a9a5SSteve French 		__string(func_name, func_name)
582*38c8a9a5SSteve French 		__field(int, rc)
583*38c8a9a5SSteve French 	),
584*38c8a9a5SSteve French 	TP_fast_assign(
585*38c8a9a5SSteve French 		__entry->xid = xid;
586*38c8a9a5SSteve French 		__assign_str(func_name, func_name);
587*38c8a9a5SSteve French 		__entry->rc = rc;
588*38c8a9a5SSteve French 	),
589*38c8a9a5SSteve French 	TP_printk("\t%s: xid=%u rc=%d",
590*38c8a9a5SSteve French 		__get_str(func_name), __entry->xid, __entry->rc)
591*38c8a9a5SSteve French )
592*38c8a9a5SSteve French 
593*38c8a9a5SSteve French #define DEFINE_SMB3_EXIT_ERR_EVENT(name)          \
594*38c8a9a5SSteve French DEFINE_EVENT(smb3_exit_err_class, smb3_##name,    \
595*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
596*38c8a9a5SSteve French 		const char *func_name,		\
597*38c8a9a5SSteve French 		int	rc),			\
598*38c8a9a5SSteve French 	TP_ARGS(xid, func_name, rc))
599*38c8a9a5SSteve French 
600*38c8a9a5SSteve French DEFINE_SMB3_EXIT_ERR_EVENT(exit_err);
601*38c8a9a5SSteve French 
602*38c8a9a5SSteve French 
603*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_sync_err_class,
604*38c8a9a5SSteve French 	TP_PROTO(unsigned long ino,
605*38c8a9a5SSteve French 		int	rc),
606*38c8a9a5SSteve French 	TP_ARGS(ino, rc),
607*38c8a9a5SSteve French 	TP_STRUCT__entry(
608*38c8a9a5SSteve French 		__field(unsigned long, ino)
609*38c8a9a5SSteve French 		__field(int, rc)
610*38c8a9a5SSteve French 	),
611*38c8a9a5SSteve French 	TP_fast_assign(
612*38c8a9a5SSteve French 		__entry->ino = ino;
613*38c8a9a5SSteve French 		__entry->rc = rc;
614*38c8a9a5SSteve French 	),
615*38c8a9a5SSteve French 	TP_printk("\tino=%lu rc=%d",
616*38c8a9a5SSteve French 		__entry->ino, __entry->rc)
617*38c8a9a5SSteve French )
618*38c8a9a5SSteve French 
619*38c8a9a5SSteve French #define DEFINE_SMB3_SYNC_ERR_EVENT(name)          \
620*38c8a9a5SSteve French DEFINE_EVENT(smb3_sync_err_class, cifs_##name,    \
621*38c8a9a5SSteve French 	TP_PROTO(unsigned long ino,		\
622*38c8a9a5SSteve French 		int	rc),			\
623*38c8a9a5SSteve French 	TP_ARGS(ino, rc))
624*38c8a9a5SSteve French 
625*38c8a9a5SSteve French DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err);
626*38c8a9a5SSteve French DEFINE_SMB3_SYNC_ERR_EVENT(flush_err);
627*38c8a9a5SSteve French 
628*38c8a9a5SSteve French 
629*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_enter_exit_class,
630*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
631*38c8a9a5SSteve French 		const char *func_name),
632*38c8a9a5SSteve French 	TP_ARGS(xid, func_name),
633*38c8a9a5SSteve French 	TP_STRUCT__entry(
634*38c8a9a5SSteve French 		__field(unsigned int, xid)
635*38c8a9a5SSteve French 		__string(func_name, func_name)
636*38c8a9a5SSteve French 	),
637*38c8a9a5SSteve French 	TP_fast_assign(
638*38c8a9a5SSteve French 		__entry->xid = xid;
639*38c8a9a5SSteve French 		__assign_str(func_name, func_name);
640*38c8a9a5SSteve French 	),
641*38c8a9a5SSteve French 	TP_printk("\t%s: xid=%u",
642*38c8a9a5SSteve French 		__get_str(func_name), __entry->xid)
643*38c8a9a5SSteve French )
644*38c8a9a5SSteve French 
645*38c8a9a5SSteve French #define DEFINE_SMB3_ENTER_EXIT_EVENT(name)        \
646*38c8a9a5SSteve French DEFINE_EVENT(smb3_enter_exit_class, smb3_##name,  \
647*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
648*38c8a9a5SSteve French 		const char *func_name),		\
649*38c8a9a5SSteve French 	TP_ARGS(xid, func_name))
650*38c8a9a5SSteve French 
651*38c8a9a5SSteve French DEFINE_SMB3_ENTER_EXIT_EVENT(enter);
652*38c8a9a5SSteve French DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done);
653*38c8a9a5SSteve French 
654*38c8a9a5SSteve French /*
655*38c8a9a5SSteve French  * For SMB2/SMB3 tree connect
656*38c8a9a5SSteve French  */
657*38c8a9a5SSteve French 
658*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_tcon_class,
659*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
660*38c8a9a5SSteve French 		__u32	tid,
661*38c8a9a5SSteve French 		__u64	sesid,
662*38c8a9a5SSteve French 		const char *unc_name,
663*38c8a9a5SSteve French 		int	rc),
664*38c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, unc_name, rc),
665*38c8a9a5SSteve French 	TP_STRUCT__entry(
666*38c8a9a5SSteve French 		__field(unsigned int, xid)
667*38c8a9a5SSteve French 		__field(__u32, tid)
668*38c8a9a5SSteve French 		__field(__u64, sesid)
669*38c8a9a5SSteve French 		__string(name, unc_name)
670*38c8a9a5SSteve French 		__field(int, rc)
671*38c8a9a5SSteve French 	),
672*38c8a9a5SSteve French 	TP_fast_assign(
673*38c8a9a5SSteve French 		__entry->xid = xid;
674*38c8a9a5SSteve French 		__entry->tid = tid;
675*38c8a9a5SSteve French 		__entry->sesid = sesid;
676*38c8a9a5SSteve French 		__assign_str(name, unc_name);
677*38c8a9a5SSteve French 		__entry->rc = rc;
678*38c8a9a5SSteve French 	),
679*38c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d",
680*38c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid,
681*38c8a9a5SSteve French 		__get_str(name), __entry->rc)
682*38c8a9a5SSteve French )
683*38c8a9a5SSteve French 
684*38c8a9a5SSteve French #define DEFINE_SMB3_TCON_EVENT(name)          \
685*38c8a9a5SSteve French DEFINE_EVENT(smb3_tcon_class, smb3_##name,    \
686*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
687*38c8a9a5SSteve French 		__u32	tid,			\
688*38c8a9a5SSteve French 		__u64	sesid,			\
689*38c8a9a5SSteve French 		const char *unc_name,		\
690*38c8a9a5SSteve French 		int	rc),			\
691*38c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, unc_name, rc))
692*38c8a9a5SSteve French 
693*38c8a9a5SSteve French DEFINE_SMB3_TCON_EVENT(tcon);
694*38c8a9a5SSteve French 
695*38c8a9a5SSteve French 
696*38c8a9a5SSteve French /*
697*38c8a9a5SSteve French  * For smb2/smb3 open (including create and mkdir) calls
698*38c8a9a5SSteve French  */
699*38c8a9a5SSteve French 
700*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_open_enter_class,
701*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
702*38c8a9a5SSteve French 		__u32	tid,
703*38c8a9a5SSteve French 		__u64	sesid,
704*38c8a9a5SSteve French 		const char *full_path,
705*38c8a9a5SSteve French 		int	create_options,
706*38c8a9a5SSteve French 		int	desired_access),
707*38c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access),
708*38c8a9a5SSteve French 	TP_STRUCT__entry(
709*38c8a9a5SSteve French 		__field(unsigned int, xid)
710*38c8a9a5SSteve French 		__field(__u32, tid)
711*38c8a9a5SSteve French 		__field(__u64, sesid)
712*38c8a9a5SSteve French 		__string(path, full_path)
713*38c8a9a5SSteve French 		__field(int, create_options)
714*38c8a9a5SSteve French 		__field(int, desired_access)
715*38c8a9a5SSteve French 	),
716*38c8a9a5SSteve French 	TP_fast_assign(
717*38c8a9a5SSteve French 		__entry->xid = xid;
718*38c8a9a5SSteve French 		__entry->tid = tid;
719*38c8a9a5SSteve French 		__entry->sesid = sesid;
720*38c8a9a5SSteve French 		__assign_str(path, full_path);
721*38c8a9a5SSteve French 		__entry->create_options = create_options;
722*38c8a9a5SSteve French 		__entry->desired_access = desired_access;
723*38c8a9a5SSteve French 	),
724*38c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s cr_opts=0x%x des_access=0x%x",
725*38c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __get_str(path),
726*38c8a9a5SSteve French 		__entry->create_options, __entry->desired_access)
727*38c8a9a5SSteve French )
728*38c8a9a5SSteve French 
729*38c8a9a5SSteve French #define DEFINE_SMB3_OPEN_ENTER_EVENT(name)        \
730*38c8a9a5SSteve French DEFINE_EVENT(smb3_open_enter_class, smb3_##name,  \
731*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
732*38c8a9a5SSteve French 		__u32	tid,			\
733*38c8a9a5SSteve French 		__u64	sesid,			\
734*38c8a9a5SSteve French 		const char *full_path,		\
735*38c8a9a5SSteve French 		int	create_options,		\
736*38c8a9a5SSteve French 		int	desired_access),	\
737*38c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access))
738*38c8a9a5SSteve French 
739*38c8a9a5SSteve French DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter);
740*38c8a9a5SSteve French DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter);
741*38c8a9a5SSteve French 
742*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_open_err_class,
743*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
744*38c8a9a5SSteve French 		__u32	tid,
745*38c8a9a5SSteve French 		__u64	sesid,
746*38c8a9a5SSteve French 		int	create_options,
747*38c8a9a5SSteve French 		int	desired_access,
748*38c8a9a5SSteve French 		int	rc),
749*38c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, create_options, desired_access, rc),
750*38c8a9a5SSteve French 	TP_STRUCT__entry(
751*38c8a9a5SSteve French 		__field(unsigned int, xid)
752*38c8a9a5SSteve French 		__field(__u32, tid)
753*38c8a9a5SSteve French 		__field(__u64, sesid)
754*38c8a9a5SSteve French 		__field(int,   create_options)
755*38c8a9a5SSteve French 		__field(int, desired_access)
756*38c8a9a5SSteve French 		__field(int, rc)
757*38c8a9a5SSteve French 	),
758*38c8a9a5SSteve French 	TP_fast_assign(
759*38c8a9a5SSteve French 		__entry->xid = xid;
760*38c8a9a5SSteve French 		__entry->tid = tid;
761*38c8a9a5SSteve French 		__entry->sesid = sesid;
762*38c8a9a5SSteve French 		__entry->create_options = create_options;
763*38c8a9a5SSteve French 		__entry->desired_access = desired_access;
764*38c8a9a5SSteve French 		__entry->rc = rc;
765*38c8a9a5SSteve French 	),
766*38c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d",
767*38c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid,
768*38c8a9a5SSteve French 		__entry->create_options, __entry->desired_access, __entry->rc)
769*38c8a9a5SSteve French )
770*38c8a9a5SSteve French 
771*38c8a9a5SSteve French #define DEFINE_SMB3_OPEN_ERR_EVENT(name)          \
772*38c8a9a5SSteve French DEFINE_EVENT(smb3_open_err_class, smb3_##name,    \
773*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
774*38c8a9a5SSteve French 		__u32	tid,			\
775*38c8a9a5SSteve French 		__u64	sesid,			\
776*38c8a9a5SSteve French 		int	create_options,		\
777*38c8a9a5SSteve French 		int	desired_access,		\
778*38c8a9a5SSteve French 		int	rc),			\
779*38c8a9a5SSteve French 	TP_ARGS(xid, tid, sesid, create_options, desired_access, rc))
780*38c8a9a5SSteve French 
781*38c8a9a5SSteve French DEFINE_SMB3_OPEN_ERR_EVENT(open_err);
782*38c8a9a5SSteve French DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err);
783*38c8a9a5SSteve French 
784*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_open_done_class,
785*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,
786*38c8a9a5SSteve French 		__u64	fid,
787*38c8a9a5SSteve French 		__u32	tid,
788*38c8a9a5SSteve French 		__u64	sesid,
789*38c8a9a5SSteve French 		int	create_options,
790*38c8a9a5SSteve French 		int	desired_access),
791*38c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, create_options, desired_access),
792*38c8a9a5SSteve French 	TP_STRUCT__entry(
793*38c8a9a5SSteve French 		__field(unsigned int, xid)
794*38c8a9a5SSteve French 		__field(__u64, fid)
795*38c8a9a5SSteve French 		__field(__u32, tid)
796*38c8a9a5SSteve French 		__field(__u64, sesid)
797*38c8a9a5SSteve French 		__field(int, create_options)
798*38c8a9a5SSteve French 		__field(int, desired_access)
799*38c8a9a5SSteve French 	),
800*38c8a9a5SSteve French 	TP_fast_assign(
801*38c8a9a5SSteve French 		__entry->xid = xid;
802*38c8a9a5SSteve French 		__entry->fid = fid;
803*38c8a9a5SSteve French 		__entry->tid = tid;
804*38c8a9a5SSteve French 		__entry->sesid = sesid;
805*38c8a9a5SSteve French 		__entry->create_options = create_options;
806*38c8a9a5SSteve French 		__entry->desired_access = desired_access;
807*38c8a9a5SSteve French 	),
808*38c8a9a5SSteve French 	TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x",
809*38c8a9a5SSteve French 		__entry->xid, __entry->sesid, __entry->tid, __entry->fid,
810*38c8a9a5SSteve French 		__entry->create_options, __entry->desired_access)
811*38c8a9a5SSteve French )
812*38c8a9a5SSteve French 
813*38c8a9a5SSteve French #define DEFINE_SMB3_OPEN_DONE_EVENT(name)        \
814*38c8a9a5SSteve French DEFINE_EVENT(smb3_open_done_class, smb3_##name,  \
815*38c8a9a5SSteve French 	TP_PROTO(unsigned int xid,		\
816*38c8a9a5SSteve French 		__u64	fid,			\
817*38c8a9a5SSteve French 		__u32	tid,			\
818*38c8a9a5SSteve French 		__u64	sesid,			\
819*38c8a9a5SSteve French 		int	create_options,		\
820*38c8a9a5SSteve French 		int	desired_access),	\
821*38c8a9a5SSteve French 	TP_ARGS(xid, fid, tid, sesid, create_options, desired_access))
822*38c8a9a5SSteve French 
823*38c8a9a5SSteve French DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
824*38c8a9a5SSteve French DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);
825*38c8a9a5SSteve French 
826*38c8a9a5SSteve French 
827*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_lease_done_class,
828*38c8a9a5SSteve French 	TP_PROTO(__u32	lease_state,
829*38c8a9a5SSteve French 		__u32	tid,
830*38c8a9a5SSteve French 		__u64	sesid,
831*38c8a9a5SSteve French 		__u64	lease_key_low,
832*38c8a9a5SSteve French 		__u64	lease_key_high),
833*38c8a9a5SSteve French 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high),
834*38c8a9a5SSteve French 	TP_STRUCT__entry(
835*38c8a9a5SSteve French 		__field(__u32, lease_state)
836*38c8a9a5SSteve French 		__field(__u32, tid)
837*38c8a9a5SSteve French 		__field(__u64, sesid)
838*38c8a9a5SSteve French 		__field(__u64, lease_key_low)
839*38c8a9a5SSteve French 		__field(__u64, lease_key_high)
840*38c8a9a5SSteve French 	),
841*38c8a9a5SSteve French 	TP_fast_assign(
842*38c8a9a5SSteve French 		__entry->lease_state = lease_state;
843*38c8a9a5SSteve French 		__entry->tid = tid;
844*38c8a9a5SSteve French 		__entry->sesid = sesid;
845*38c8a9a5SSteve French 		__entry->lease_key_low = lease_key_low;
846*38c8a9a5SSteve French 		__entry->lease_key_high = lease_key_high;
847*38c8a9a5SSteve French 	),
848*38c8a9a5SSteve French 	TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x",
849*38c8a9a5SSteve French 		__entry->sesid, __entry->tid, __entry->lease_key_high,
850*38c8a9a5SSteve French 		__entry->lease_key_low, __entry->lease_state)
851*38c8a9a5SSteve French )
852*38c8a9a5SSteve French 
853*38c8a9a5SSteve French #define DEFINE_SMB3_LEASE_DONE_EVENT(name)        \
854*38c8a9a5SSteve French DEFINE_EVENT(smb3_lease_done_class, smb3_##name,  \
855*38c8a9a5SSteve French 	TP_PROTO(__u32	lease_state,		\
856*38c8a9a5SSteve French 		__u32	tid,			\
857*38c8a9a5SSteve French 		__u64	sesid,			\
858*38c8a9a5SSteve French 		__u64	lease_key_low,		\
859*38c8a9a5SSteve French 		__u64	lease_key_high),	\
860*38c8a9a5SSteve French 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high))
861*38c8a9a5SSteve French 
862*38c8a9a5SSteve French DEFINE_SMB3_LEASE_DONE_EVENT(lease_done);
863*38c8a9a5SSteve French DEFINE_SMB3_LEASE_DONE_EVENT(lease_not_found);
864*38c8a9a5SSteve French 
865*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_lease_err_class,
866*38c8a9a5SSteve French 	TP_PROTO(__u32	lease_state,
867*38c8a9a5SSteve French 		__u32	tid,
868*38c8a9a5SSteve French 		__u64	sesid,
869*38c8a9a5SSteve French 		__u64	lease_key_low,
870*38c8a9a5SSteve French 		__u64	lease_key_high,
871*38c8a9a5SSteve French 		int	rc),
872*38c8a9a5SSteve French 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc),
873*38c8a9a5SSteve French 	TP_STRUCT__entry(
874*38c8a9a5SSteve French 		__field(__u32, lease_state)
875*38c8a9a5SSteve French 		__field(__u32, tid)
876*38c8a9a5SSteve French 		__field(__u64, sesid)
877*38c8a9a5SSteve French 		__field(__u64, lease_key_low)
878*38c8a9a5SSteve French 		__field(__u64, lease_key_high)
879*38c8a9a5SSteve French 		__field(int, rc)
880*38c8a9a5SSteve French 	),
881*38c8a9a5SSteve French 	TP_fast_assign(
882*38c8a9a5SSteve French 		__entry->lease_state = lease_state;
883*38c8a9a5SSteve French 		__entry->tid = tid;
884*38c8a9a5SSteve French 		__entry->sesid = sesid;
885*38c8a9a5SSteve French 		__entry->lease_key_low = lease_key_low;
886*38c8a9a5SSteve French 		__entry->lease_key_high = lease_key_high;
887*38c8a9a5SSteve French 		__entry->rc = rc;
888*38c8a9a5SSteve French 	),
889*38c8a9a5SSteve French 	TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d",
890*38c8a9a5SSteve French 		__entry->sesid, __entry->tid, __entry->lease_key_high,
891*38c8a9a5SSteve French 		__entry->lease_key_low, __entry->lease_state, __entry->rc)
892*38c8a9a5SSteve French )
893*38c8a9a5SSteve French 
894*38c8a9a5SSteve French #define DEFINE_SMB3_LEASE_ERR_EVENT(name)        \
895*38c8a9a5SSteve French DEFINE_EVENT(smb3_lease_err_class, smb3_##name,  \
896*38c8a9a5SSteve French 	TP_PROTO(__u32	lease_state,		\
897*38c8a9a5SSteve French 		__u32	tid,			\
898*38c8a9a5SSteve French 		__u64	sesid,			\
899*38c8a9a5SSteve French 		__u64	lease_key_low,		\
900*38c8a9a5SSteve French 		__u64	lease_key_high,		\
901*38c8a9a5SSteve French 		int	rc),			\
902*38c8a9a5SSteve French 	TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc))
903*38c8a9a5SSteve French 
904*38c8a9a5SSteve French DEFINE_SMB3_LEASE_ERR_EVENT(lease_err);
905*38c8a9a5SSteve French 
906*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_connect_class,
907*38c8a9a5SSteve French 	TP_PROTO(char *hostname,
908*38c8a9a5SSteve French 		__u64 conn_id,
909*38c8a9a5SSteve French 		const struct __kernel_sockaddr_storage *dst_addr),
910*38c8a9a5SSteve French 	TP_ARGS(hostname, conn_id, dst_addr),
911*38c8a9a5SSteve French 	TP_STRUCT__entry(
912*38c8a9a5SSteve French 		__string(hostname, hostname)
913*38c8a9a5SSteve French 		__field(__u64, conn_id)
914*38c8a9a5SSteve French 		__array(__u8, dst_addr, sizeof(struct sockaddr_storage))
915*38c8a9a5SSteve French 	),
916*38c8a9a5SSteve French 	TP_fast_assign(
917*38c8a9a5SSteve French 		struct sockaddr_storage *pss = NULL;
918*38c8a9a5SSteve French 
919*38c8a9a5SSteve French 		__entry->conn_id = conn_id;
920*38c8a9a5SSteve French 		pss = (struct sockaddr_storage *)__entry->dst_addr;
921*38c8a9a5SSteve French 		*pss = *dst_addr;
922*38c8a9a5SSteve French 		__assign_str(hostname, hostname);
923*38c8a9a5SSteve French 	),
924*38c8a9a5SSteve French 	TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc",
925*38c8a9a5SSteve French 		__entry->conn_id,
926*38c8a9a5SSteve French 		__get_str(hostname),
927*38c8a9a5SSteve French 		__entry->dst_addr)
928*38c8a9a5SSteve French )
929*38c8a9a5SSteve French 
930*38c8a9a5SSteve French #define DEFINE_SMB3_CONNECT_EVENT(name)        \
931*38c8a9a5SSteve French DEFINE_EVENT(smb3_connect_class, smb3_##name,  \
932*38c8a9a5SSteve French 	TP_PROTO(char *hostname,		\
933*38c8a9a5SSteve French 		__u64 conn_id,			\
934*38c8a9a5SSteve French 		const struct __kernel_sockaddr_storage *addr),	\
935*38c8a9a5SSteve French 	TP_ARGS(hostname, conn_id, addr))
936*38c8a9a5SSteve French 
937*38c8a9a5SSteve French DEFINE_SMB3_CONNECT_EVENT(connect_done);
938*38c8a9a5SSteve French 
939*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_connect_err_class,
940*38c8a9a5SSteve French 	TP_PROTO(char *hostname, __u64 conn_id,
941*38c8a9a5SSteve French 		const struct __kernel_sockaddr_storage *dst_addr, int rc),
942*38c8a9a5SSteve French 	TP_ARGS(hostname, conn_id, dst_addr, rc),
943*38c8a9a5SSteve French 	TP_STRUCT__entry(
944*38c8a9a5SSteve French 		__string(hostname, hostname)
945*38c8a9a5SSteve French 		__field(__u64, conn_id)
946*38c8a9a5SSteve French 		__array(__u8, dst_addr, sizeof(struct sockaddr_storage))
947*38c8a9a5SSteve French 		__field(int, rc)
948*38c8a9a5SSteve French 	),
949*38c8a9a5SSteve French 	TP_fast_assign(
950*38c8a9a5SSteve French 		struct sockaddr_storage *pss = NULL;
951*38c8a9a5SSteve French 
952*38c8a9a5SSteve French 		__entry->conn_id = conn_id;
953*38c8a9a5SSteve French 		__entry->rc = rc;
954*38c8a9a5SSteve French 		pss = (struct sockaddr_storage *)__entry->dst_addr;
955*38c8a9a5SSteve French 		*pss = *dst_addr;
956*38c8a9a5SSteve French 		__assign_str(hostname, hostname);
957*38c8a9a5SSteve French 	),
958*38c8a9a5SSteve French 	TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc",
959*38c8a9a5SSteve French 		__entry->rc,
960*38c8a9a5SSteve French 		__entry->conn_id,
961*38c8a9a5SSteve French 		__get_str(hostname),
962*38c8a9a5SSteve French 		__entry->dst_addr)
963*38c8a9a5SSteve French )
964*38c8a9a5SSteve French 
965*38c8a9a5SSteve French #define DEFINE_SMB3_CONNECT_ERR_EVENT(name)        \
966*38c8a9a5SSteve French DEFINE_EVENT(smb3_connect_err_class, smb3_##name,  \
967*38c8a9a5SSteve French 	TP_PROTO(char *hostname,		\
968*38c8a9a5SSteve French 		__u64 conn_id,			\
969*38c8a9a5SSteve French 		const struct __kernel_sockaddr_storage *addr,	\
970*38c8a9a5SSteve French 		int rc),			\
971*38c8a9a5SSteve French 	TP_ARGS(hostname, conn_id, addr, rc))
972*38c8a9a5SSteve French 
973*38c8a9a5SSteve French DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err);
974*38c8a9a5SSteve French 
975*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_reconnect_class,
976*38c8a9a5SSteve French 	TP_PROTO(__u64	currmid,
977*38c8a9a5SSteve French 		__u64 conn_id,
978*38c8a9a5SSteve French 		char *hostname),
979*38c8a9a5SSteve French 	TP_ARGS(currmid, conn_id, hostname),
980*38c8a9a5SSteve French 	TP_STRUCT__entry(
981*38c8a9a5SSteve French 		__field(__u64, currmid)
982*38c8a9a5SSteve French 		__field(__u64, conn_id)
983*38c8a9a5SSteve French 		__string(hostname, hostname)
984*38c8a9a5SSteve French 	),
985*38c8a9a5SSteve French 	TP_fast_assign(
986*38c8a9a5SSteve French 		__entry->currmid = currmid;
987*38c8a9a5SSteve French 		__entry->conn_id = conn_id;
988*38c8a9a5SSteve French 		__assign_str(hostname, hostname);
989*38c8a9a5SSteve French 	),
990*38c8a9a5SSteve French 	TP_printk("conn_id=0x%llx server=%s current_mid=%llu",
991*38c8a9a5SSteve French 		__entry->conn_id,
992*38c8a9a5SSteve French 		__get_str(hostname),
993*38c8a9a5SSteve French 		__entry->currmid)
994*38c8a9a5SSteve French )
995*38c8a9a5SSteve French 
996*38c8a9a5SSteve French #define DEFINE_SMB3_RECONNECT_EVENT(name)        \
997*38c8a9a5SSteve French DEFINE_EVENT(smb3_reconnect_class, smb3_##name,  \
998*38c8a9a5SSteve French 	TP_PROTO(__u64	currmid,		\
999*38c8a9a5SSteve French 		__u64 conn_id,			\
1000*38c8a9a5SSteve French 		char *hostname),				\
1001*38c8a9a5SSteve French 	TP_ARGS(currmid, conn_id, hostname))
1002*38c8a9a5SSteve French 
1003*38c8a9a5SSteve French DEFINE_SMB3_RECONNECT_EVENT(reconnect);
1004*38c8a9a5SSteve French DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect);
1005*38c8a9a5SSteve French 
1006*38c8a9a5SSteve French DECLARE_EVENT_CLASS(smb3_credit_class,
1007*38c8a9a5SSteve French 	TP_PROTO(__u64	currmid,
1008*38c8a9a5SSteve French 		__u64 conn_id,
1009*38c8a9a5SSteve French 		char *hostname,
1010*38c8a9a5SSteve French 		int credits,
1011*38c8a9a5SSteve French 		int credits_to_add,
1012*38c8a9a5SSteve French 		int in_flight),
1013*38c8a9a5SSteve French 	TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight),
1014*38c8a9a5SSteve French 	TP_STRUCT__entry(
1015*38c8a9a5SSteve French 		__field(__u64, currmid)
1016*38c8a9a5SSteve French 		__field(__u64, conn_id)
1017*38c8a9a5SSteve French 		__string(hostname, hostname)
1018*38c8a9a5SSteve French 		__field(int, credits)
1019*38c8a9a5SSteve French 		__field(int, credits_to_add)
1020*38c8a9a5SSteve French 		__field(int, in_flight)
1021*38c8a9a5SSteve French 	),
1022*38c8a9a5SSteve French 	TP_fast_assign(
1023*38c8a9a5SSteve French 		__entry->currmid = currmid;
1024*38c8a9a5SSteve French 		__entry->conn_id = conn_id;
1025*38c8a9a5SSteve French 		__assign_str(hostname, hostname);
1026*38c8a9a5SSteve French 		__entry->credits = credits;
1027*38c8a9a5SSteve French 		__entry->credits_to_add = credits_to_add;
1028*38c8a9a5SSteve French 		__entry->in_flight = in_flight;
1029*38c8a9a5SSteve French 	),
1030*38c8a9a5SSteve French 	TP_printk("conn_id=0x%llx server=%s current_mid=%llu "
1031*38c8a9a5SSteve French 			"credits=%d credit_change=%d in_flight=%d",
1032*38c8a9a5SSteve French 		__entry->conn_id,
1033*38c8a9a5SSteve French 		__get_str(hostname),
1034*38c8a9a5SSteve French 		__entry->currmid,
1035*38c8a9a5SSteve French 		__entry->credits,
1036*38c8a9a5SSteve French 		__entry->credits_to_add,
1037*38c8a9a5SSteve French 		__entry->in_flight)
1038*38c8a9a5SSteve French )
1039*38c8a9a5SSteve French 
1040*38c8a9a5SSteve French #define DEFINE_SMB3_CREDIT_EVENT(name)        \
1041*38c8a9a5SSteve French DEFINE_EVENT(smb3_credit_class, smb3_##name,  \
1042*38c8a9a5SSteve French 	TP_PROTO(__u64	currmid,		\
1043*38c8a9a5SSteve French 		__u64 conn_id,			\
1044*38c8a9a5SSteve French 		char *hostname,			\
1045*38c8a9a5SSteve French 		int  credits,			\
1046*38c8a9a5SSteve French 		int  credits_to_add,	\
1047*38c8a9a5SSteve French 		int in_flight),			\
1048*38c8a9a5SSteve French 	TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight))
1049*38c8a9a5SSteve French 
1050*38c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits);
1051*38c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(reconnect_detected);
1052*38c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(credit_timeout);
1053*38c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(insufficient_credits);
1054*38c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(too_many_credits);
1055*38c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(add_credits);
1056*38c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(adj_credits);
1057*38c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(hdr_credits);
1058*38c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(nblk_credits);
1059*38c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(pend_credits);
1060*38c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(wait_credits);
1061*38c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(waitff_credits);
1062*38c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(overflow_credits);
1063*38c8a9a5SSteve French DEFINE_SMB3_CREDIT_EVENT(set_credits);
1064*38c8a9a5SSteve French 
1065*38c8a9a5SSteve French #endif /* _CIFS_TRACE_H */
1066*38c8a9a5SSteve French 
1067*38c8a9a5SSteve French #undef TRACE_INCLUDE_PATH
1068*38c8a9a5SSteve French #define TRACE_INCLUDE_PATH .
1069*38c8a9a5SSteve French #define TRACE_INCLUDE_FILE trace
1070*38c8a9a5SSteve French #include <trace/define_trace.h>
1071