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