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