Merge tag 'xfs-5.19-fixes-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
[platform/kernel/linux-starfive.git] / fs / cifs / 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 #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 */
23 DECLARE_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)          \
56 DEFINE_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
66 DEFINE_SMB3_RW_ERR_EVENT(write_err);
67 DEFINE_SMB3_RW_ERR_EVENT(read_err);
68 DEFINE_SMB3_RW_ERR_EVENT(query_dir_err);
69 DEFINE_SMB3_RW_ERR_EVENT(zero_err);
70 DEFINE_SMB3_RW_ERR_EVENT(falloc_err);
71
72
73 /* For logging successful read or write */
74 DECLARE_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)         \
104 DEFINE_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
113 DEFINE_SMB3_RW_DONE_EVENT(write_enter);
114 DEFINE_SMB3_RW_DONE_EVENT(read_enter);
115 DEFINE_SMB3_RW_DONE_EVENT(query_dir_enter);
116 DEFINE_SMB3_RW_DONE_EVENT(zero_enter);
117 DEFINE_SMB3_RW_DONE_EVENT(falloc_enter);
118 DEFINE_SMB3_RW_DONE_EVENT(write_done);
119 DEFINE_SMB3_RW_DONE_EVENT(read_done);
120 DEFINE_SMB3_RW_DONE_EVENT(query_dir_done);
121 DEFINE_SMB3_RW_DONE_EVENT(zero_done);
122 DEFINE_SMB3_RW_DONE_EVENT(falloc_done);
123
124 /* For logging successful set EOF (truncate) */
125 DECLARE_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)         \
152 DEFINE_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
160 DEFINE_SMB3_EOF_EVENT(set_eof);
161
162 /*
163  * For handle based calls other than read and write, and get/set info
164  */
165 DECLARE_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)          \
188 DEFINE_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
195 DEFINE_SMB3_FD_EVENT(flush_enter);
196 DEFINE_SMB3_FD_EVENT(flush_done);
197 DEFINE_SMB3_FD_EVENT(close_enter);
198 DEFINE_SMB3_FD_EVENT(close_done);
199 DEFINE_SMB3_FD_EVENT(oplock_not_found);
200
201 DECLARE_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)          \
228 DEFINE_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
236 DEFINE_SMB3_FD_ERR_EVENT(flush_err);
237 DEFINE_SMB3_FD_ERR_EVENT(lock_err);
238 DEFINE_SMB3_FD_ERR_EVENT(close_err);
239
240 /*
241  * For handle based query/set info calls
242  */
243 DECLARE_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)          \
273 DEFINE_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
282 DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter);
283 DEFINE_SMB3_INF_ENTER_EVENT(query_info_done);
284 DEFINE_SMB3_INF_ENTER_EVENT(notify_enter);
285 DEFINE_SMB3_INF_ENTER_EVENT(notify_done);
286
287 DECLARE_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)          \
320 DEFINE_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
330 DEFINE_SMB3_INF_ERR_EVENT(query_info_err);
331 DEFINE_SMB3_INF_ERR_EVENT(set_info_err);
332 DEFINE_SMB3_INF_ERR_EVENT(notify_err);
333 DEFINE_SMB3_INF_ERR_EVENT(fsctl_err);
334
335 DECLARE_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)     \
359 DEFINE_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
366 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter);
367 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter);
368 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter);
369 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter);
370 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter);
371 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter);
372 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter);
373 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter);
374 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter);
375
376
377 DECLARE_EVENT_CLASS(smb3_inf_compound_done_class,
378         TP_PROTO(unsigned int xid,
379                 __u32   tid,
380                 __u64   sesid),
381         TP_ARGS(xid, tid, sesid),
382         TP_STRUCT__entry(
383                 __field(unsigned int, xid)
384                 __field(__u32, tid)
385                 __field(__u64, sesid)
386         ),
387         TP_fast_assign(
388                 __entry->xid = xid;
389                 __entry->tid = tid;
390                 __entry->sesid = sesid;
391         ),
392         TP_printk("xid=%u sid=0x%llx tid=0x%x",
393                 __entry->xid, __entry->sesid, __entry->tid)
394 )
395
396 #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name)     \
397 DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name,    \
398         TP_PROTO(unsigned int xid,              \
399                 __u32   tid,                    \
400                 __u64   sesid),                 \
401         TP_ARGS(xid, tid, sesid))
402
403 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done);
404 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done);
405 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done);
406 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done);
407 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done);
408 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done);
409 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done);
410 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done);
411 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done);
412
413
414 DECLARE_EVENT_CLASS(smb3_inf_compound_err_class,
415         TP_PROTO(unsigned int xid,
416                 __u32   tid,
417                 __u64   sesid,
418                 int     rc),
419         TP_ARGS(xid, tid, sesid, rc),
420         TP_STRUCT__entry(
421                 __field(unsigned int, xid)
422                 __field(__u32, tid)
423                 __field(__u64, sesid)
424                 __field(int, rc)
425         ),
426         TP_fast_assign(
427                 __entry->xid = xid;
428                 __entry->tid = tid;
429                 __entry->sesid = sesid;
430                 __entry->rc = rc;
431         ),
432         TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d",
433                 __entry->xid, __entry->sesid, __entry->tid,
434                 __entry->rc)
435 )
436
437 #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name)     \
438 DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name,    \
439         TP_PROTO(unsigned int xid,              \
440                 __u32   tid,                    \
441                 __u64   sesid,                  \
442                 int rc),                        \
443         TP_ARGS(xid, tid, sesid, rc))
444
445 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err);
446 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err);
447 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err);
448 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err);
449 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err);
450 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err);
451 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err);
452 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err);
453 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err);
454
455 /*
456  * For logging SMB3 Status code and Command for responses which return errors
457  */
458 DECLARE_EVENT_CLASS(smb3_cmd_err_class,
459         TP_PROTO(__u32  tid,
460                 __u64   sesid,
461                 __u16   cmd,
462                 __u64   mid,
463                 __u32   status,
464                 int     rc),
465         TP_ARGS(tid, sesid, cmd, mid, status, rc),
466         TP_STRUCT__entry(
467                 __field(__u32, tid)
468                 __field(__u64, sesid)
469                 __field(__u16, cmd)
470                 __field(__u64, mid)
471                 __field(__u32, status)
472                 __field(int, rc)
473         ),
474         TP_fast_assign(
475                 __entry->tid = tid;
476                 __entry->sesid = sesid;
477                 __entry->cmd = cmd;
478                 __entry->mid = mid;
479                 __entry->status = status;
480                 __entry->rc = rc;
481         ),
482         TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d",
483                 __entry->sesid, __entry->tid, __entry->cmd, __entry->mid,
484                 __entry->status, __entry->rc)
485 )
486
487 #define DEFINE_SMB3_CMD_ERR_EVENT(name)          \
488 DEFINE_EVENT(smb3_cmd_err_class, smb3_##name,    \
489         TP_PROTO(__u32  tid,                    \
490                 __u64   sesid,                  \
491                 __u16   cmd,                    \
492                 __u64   mid,                    \
493                 __u32   status,                 \
494                 int     rc),                    \
495         TP_ARGS(tid, sesid, cmd, mid, status, rc))
496
497 DEFINE_SMB3_CMD_ERR_EVENT(cmd_err);
498
499 DECLARE_EVENT_CLASS(smb3_cmd_done_class,
500         TP_PROTO(__u32  tid,
501                 __u64   sesid,
502                 __u16   cmd,
503                 __u64   mid),
504         TP_ARGS(tid, sesid, cmd, mid),
505         TP_STRUCT__entry(
506                 __field(__u32, tid)
507                 __field(__u64, sesid)
508                 __field(__u16, cmd)
509                 __field(__u64, mid)
510         ),
511         TP_fast_assign(
512                 __entry->tid = tid;
513                 __entry->sesid = sesid;
514                 __entry->cmd = cmd;
515                 __entry->mid = mid;
516         ),
517         TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu",
518                 __entry->sesid, __entry->tid,
519                 __entry->cmd, __entry->mid)
520 )
521
522 #define DEFINE_SMB3_CMD_DONE_EVENT(name)          \
523 DEFINE_EVENT(smb3_cmd_done_class, smb3_##name,    \
524         TP_PROTO(__u32  tid,                    \
525                 __u64   sesid,                  \
526                 __u16   cmd,                    \
527                 __u64   mid),                   \
528         TP_ARGS(tid, sesid, cmd, mid))
529
530 DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter);
531 DEFINE_SMB3_CMD_DONE_EVENT(cmd_done);
532 DEFINE_SMB3_CMD_DONE_EVENT(ses_expired);
533
534 DECLARE_EVENT_CLASS(smb3_mid_class,
535         TP_PROTO(__u16  cmd,
536                 __u64   mid,
537                 __u32   pid,
538                 unsigned long when_sent,
539                 unsigned long when_received),
540         TP_ARGS(cmd, mid, pid, when_sent, when_received),
541         TP_STRUCT__entry(
542                 __field(__u16, cmd)
543                 __field(__u64, mid)
544                 __field(__u32, pid)
545                 __field(unsigned long, when_sent)
546                 __field(unsigned long, when_received)
547         ),
548         TP_fast_assign(
549                 __entry->cmd = cmd;
550                 __entry->mid = mid;
551                 __entry->pid = pid;
552                 __entry->when_sent = when_sent;
553                 __entry->when_received = when_received;
554         ),
555         TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu",
556                 __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent,
557                 __entry->when_received)
558 )
559
560 #define DEFINE_SMB3_MID_EVENT(name)          \
561 DEFINE_EVENT(smb3_mid_class, smb3_##name,    \
562         TP_PROTO(__u16  cmd,                    \
563                 __u64   mid,                    \
564                 __u32   pid,                    \
565                 unsigned long when_sent,        \
566                 unsigned long when_received),   \
567         TP_ARGS(cmd, mid, pid, when_sent, when_received))
568
569 DEFINE_SMB3_MID_EVENT(slow_rsp);
570
571 DECLARE_EVENT_CLASS(smb3_exit_err_class,
572         TP_PROTO(unsigned int xid,
573                 const char *func_name,
574                 int     rc),
575         TP_ARGS(xid, func_name, rc),
576         TP_STRUCT__entry(
577                 __field(unsigned int, xid)
578                 __string(func_name, func_name)
579                 __field(int, rc)
580         ),
581         TP_fast_assign(
582                 __entry->xid = xid;
583                 __assign_str(func_name, func_name);
584                 __entry->rc = rc;
585         ),
586         TP_printk("\t%s: xid=%u rc=%d",
587                 __get_str(func_name), __entry->xid, __entry->rc)
588 )
589
590 #define DEFINE_SMB3_EXIT_ERR_EVENT(name)          \
591 DEFINE_EVENT(smb3_exit_err_class, smb3_##name,    \
592         TP_PROTO(unsigned int xid,              \
593                 const char *func_name,          \
594                 int     rc),                    \
595         TP_ARGS(xid, func_name, rc))
596
597 DEFINE_SMB3_EXIT_ERR_EVENT(exit_err);
598
599
600 DECLARE_EVENT_CLASS(smb3_sync_err_class,
601         TP_PROTO(unsigned long ino,
602                 int     rc),
603         TP_ARGS(ino, rc),
604         TP_STRUCT__entry(
605                 __field(unsigned long, ino)
606                 __field(int, rc)
607         ),
608         TP_fast_assign(
609                 __entry->ino = ino;
610                 __entry->rc = rc;
611         ),
612         TP_printk("\tino=%lu rc=%d",
613                 __entry->ino, __entry->rc)
614 )
615
616 #define DEFINE_SMB3_SYNC_ERR_EVENT(name)          \
617 DEFINE_EVENT(smb3_sync_err_class, cifs_##name,    \
618         TP_PROTO(unsigned long ino,             \
619                 int     rc),                    \
620         TP_ARGS(ino, rc))
621
622 DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err);
623 DEFINE_SMB3_SYNC_ERR_EVENT(flush_err);
624
625
626 DECLARE_EVENT_CLASS(smb3_enter_exit_class,
627         TP_PROTO(unsigned int xid,
628                 const char *func_name),
629         TP_ARGS(xid, func_name),
630         TP_STRUCT__entry(
631                 __field(unsigned int, xid)
632                 __string(func_name, func_name)
633         ),
634         TP_fast_assign(
635                 __entry->xid = xid;
636                 __assign_str(func_name, func_name);
637         ),
638         TP_printk("\t%s: xid=%u",
639                 __get_str(func_name), __entry->xid)
640 )
641
642 #define DEFINE_SMB3_ENTER_EXIT_EVENT(name)        \
643 DEFINE_EVENT(smb3_enter_exit_class, smb3_##name,  \
644         TP_PROTO(unsigned int xid,              \
645                 const char *func_name),         \
646         TP_ARGS(xid, func_name))
647
648 DEFINE_SMB3_ENTER_EXIT_EVENT(enter);
649 DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done);
650
651 /*
652  * For SMB2/SMB3 tree connect
653  */
654
655 DECLARE_EVENT_CLASS(smb3_tcon_class,
656         TP_PROTO(unsigned int xid,
657                 __u32   tid,
658                 __u64   sesid,
659                 const char *unc_name,
660                 int     rc),
661         TP_ARGS(xid, tid, sesid, unc_name, rc),
662         TP_STRUCT__entry(
663                 __field(unsigned int, xid)
664                 __field(__u32, tid)
665                 __field(__u64, sesid)
666                 __string(name, unc_name)
667                 __field(int, rc)
668         ),
669         TP_fast_assign(
670                 __entry->xid = xid;
671                 __entry->tid = tid;
672                 __entry->sesid = sesid;
673                 __assign_str(name, unc_name);
674                 __entry->rc = rc;
675         ),
676         TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d",
677                 __entry->xid, __entry->sesid, __entry->tid,
678                 __get_str(name), __entry->rc)
679 )
680
681 #define DEFINE_SMB3_TCON_EVENT(name)          \
682 DEFINE_EVENT(smb3_tcon_class, smb3_##name,    \
683         TP_PROTO(unsigned int xid,              \
684                 __u32   tid,                    \
685                 __u64   sesid,                  \
686                 const char *unc_name,           \
687                 int     rc),                    \
688         TP_ARGS(xid, tid, sesid, unc_name, rc))
689
690 DEFINE_SMB3_TCON_EVENT(tcon);
691
692
693 /*
694  * For smb2/smb3 open (including create and mkdir) calls
695  */
696
697 DECLARE_EVENT_CLASS(smb3_open_enter_class,
698         TP_PROTO(unsigned int xid,
699                 __u32   tid,
700                 __u64   sesid,
701                 int     create_options,
702                 int     desired_access),
703         TP_ARGS(xid, tid, sesid, create_options, desired_access),
704         TP_STRUCT__entry(
705                 __field(unsigned int, xid)
706                 __field(__u32, tid)
707                 __field(__u64, sesid)
708                 __field(int, create_options)
709                 __field(int, desired_access)
710         ),
711         TP_fast_assign(
712                 __entry->xid = xid;
713                 __entry->tid = tid;
714                 __entry->sesid = sesid;
715                 __entry->create_options = create_options;
716                 __entry->desired_access = desired_access;
717         ),
718         TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x",
719                 __entry->xid, __entry->sesid, __entry->tid,
720                 __entry->create_options, __entry->desired_access)
721 )
722
723 #define DEFINE_SMB3_OPEN_ENTER_EVENT(name)        \
724 DEFINE_EVENT(smb3_open_enter_class, smb3_##name,  \
725         TP_PROTO(unsigned int xid,              \
726                 __u32   tid,                    \
727                 __u64   sesid,                  \
728                 int     create_options,         \
729                 int     desired_access),        \
730         TP_ARGS(xid, tid, sesid, create_options, desired_access))
731
732 DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter);
733 DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter);
734
735 DECLARE_EVENT_CLASS(smb3_open_err_class,
736         TP_PROTO(unsigned int xid,
737                 __u32   tid,
738                 __u64   sesid,
739                 int     create_options,
740                 int     desired_access,
741                 int     rc),
742         TP_ARGS(xid, tid, sesid, create_options, desired_access, rc),
743         TP_STRUCT__entry(
744                 __field(unsigned int, xid)
745                 __field(__u32, tid)
746                 __field(__u64, sesid)
747                 __field(int,   create_options)
748                 __field(int, desired_access)
749                 __field(int, rc)
750         ),
751         TP_fast_assign(
752                 __entry->xid = xid;
753                 __entry->tid = tid;
754                 __entry->sesid = sesid;
755                 __entry->create_options = create_options;
756                 __entry->desired_access = desired_access;
757                 __entry->rc = rc;
758         ),
759         TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d",
760                 __entry->xid, __entry->sesid, __entry->tid,
761                 __entry->create_options, __entry->desired_access, __entry->rc)
762 )
763
764 #define DEFINE_SMB3_OPEN_ERR_EVENT(name)          \
765 DEFINE_EVENT(smb3_open_err_class, smb3_##name,    \
766         TP_PROTO(unsigned int xid,              \
767                 __u32   tid,                    \
768                 __u64   sesid,                  \
769                 int     create_options,         \
770                 int     desired_access,         \
771                 int     rc),                    \
772         TP_ARGS(xid, tid, sesid, create_options, desired_access, rc))
773
774 DEFINE_SMB3_OPEN_ERR_EVENT(open_err);
775 DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err);
776
777 DECLARE_EVENT_CLASS(smb3_open_done_class,
778         TP_PROTO(unsigned int xid,
779                 __u64   fid,
780                 __u32   tid,
781                 __u64   sesid,
782                 int     create_options,
783                 int     desired_access),
784         TP_ARGS(xid, fid, tid, sesid, create_options, desired_access),
785         TP_STRUCT__entry(
786                 __field(unsigned int, xid)
787                 __field(__u64, fid)
788                 __field(__u32, tid)
789                 __field(__u64, sesid)
790                 __field(int, create_options)
791                 __field(int, desired_access)
792         ),
793         TP_fast_assign(
794                 __entry->xid = xid;
795                 __entry->fid = fid;
796                 __entry->tid = tid;
797                 __entry->sesid = sesid;
798                 __entry->create_options = create_options;
799                 __entry->desired_access = desired_access;
800         ),
801         TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x",
802                 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
803                 __entry->create_options, __entry->desired_access)
804 )
805
806 #define DEFINE_SMB3_OPEN_DONE_EVENT(name)        \
807 DEFINE_EVENT(smb3_open_done_class, smb3_##name,  \
808         TP_PROTO(unsigned int xid,              \
809                 __u64   fid,                    \
810                 __u32   tid,                    \
811                 __u64   sesid,                  \
812                 int     create_options,         \
813                 int     desired_access),        \
814         TP_ARGS(xid, fid, tid, sesid, create_options, desired_access))
815
816 DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
817 DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);
818
819
820 DECLARE_EVENT_CLASS(smb3_lease_done_class,
821         TP_PROTO(__u32  lease_state,
822                 __u32   tid,
823                 __u64   sesid,
824                 __u64   lease_key_low,
825                 __u64   lease_key_high),
826         TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high),
827         TP_STRUCT__entry(
828                 __field(__u32, lease_state)
829                 __field(__u32, tid)
830                 __field(__u64, sesid)
831                 __field(__u64, lease_key_low)
832                 __field(__u64, lease_key_high)
833         ),
834         TP_fast_assign(
835                 __entry->lease_state = lease_state;
836                 __entry->tid = tid;
837                 __entry->sesid = sesid;
838                 __entry->lease_key_low = lease_key_low;
839                 __entry->lease_key_high = lease_key_high;
840         ),
841         TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x",
842                 __entry->sesid, __entry->tid, __entry->lease_key_high,
843                 __entry->lease_key_low, __entry->lease_state)
844 )
845
846 #define DEFINE_SMB3_LEASE_DONE_EVENT(name)        \
847 DEFINE_EVENT(smb3_lease_done_class, smb3_##name,  \
848         TP_PROTO(__u32  lease_state,            \
849                 __u32   tid,                    \
850                 __u64   sesid,                  \
851                 __u64   lease_key_low,          \
852                 __u64   lease_key_high),        \
853         TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high))
854
855 DEFINE_SMB3_LEASE_DONE_EVENT(lease_done);
856 DEFINE_SMB3_LEASE_DONE_EVENT(lease_not_found);
857
858 DECLARE_EVENT_CLASS(smb3_lease_err_class,
859         TP_PROTO(__u32  lease_state,
860                 __u32   tid,
861                 __u64   sesid,
862                 __u64   lease_key_low,
863                 __u64   lease_key_high,
864                 int     rc),
865         TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc),
866         TP_STRUCT__entry(
867                 __field(__u32, lease_state)
868                 __field(__u32, tid)
869                 __field(__u64, sesid)
870                 __field(__u64, lease_key_low)
871                 __field(__u64, lease_key_high)
872                 __field(int, rc)
873         ),
874         TP_fast_assign(
875                 __entry->lease_state = lease_state;
876                 __entry->tid = tid;
877                 __entry->sesid = sesid;
878                 __entry->lease_key_low = lease_key_low;
879                 __entry->lease_key_high = lease_key_high;
880                 __entry->rc = rc;
881         ),
882         TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d",
883                 __entry->sesid, __entry->tid, __entry->lease_key_high,
884                 __entry->lease_key_low, __entry->lease_state, __entry->rc)
885 )
886
887 #define DEFINE_SMB3_LEASE_ERR_EVENT(name)        \
888 DEFINE_EVENT(smb3_lease_err_class, smb3_##name,  \
889         TP_PROTO(__u32  lease_state,            \
890                 __u32   tid,                    \
891                 __u64   sesid,                  \
892                 __u64   lease_key_low,          \
893                 __u64   lease_key_high,         \
894                 int     rc),                    \
895         TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc))
896
897 DEFINE_SMB3_LEASE_ERR_EVENT(lease_err);
898
899 DECLARE_EVENT_CLASS(smb3_connect_class,
900         TP_PROTO(char *hostname,
901                 __u64 conn_id,
902                 const struct __kernel_sockaddr_storage *dst_addr),
903         TP_ARGS(hostname, conn_id, dst_addr),
904         TP_STRUCT__entry(
905                 __string(hostname, hostname)
906                 __field(__u64, conn_id)
907                 __array(__u8, dst_addr, sizeof(struct sockaddr_storage))
908         ),
909         TP_fast_assign(
910                 struct sockaddr_storage *pss = NULL;
911
912                 __entry->conn_id = conn_id;
913                 pss = (struct sockaddr_storage *)__entry->dst_addr;
914                 *pss = *dst_addr;
915                 __assign_str(hostname, hostname);
916         ),
917         TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc",
918                 __entry->conn_id,
919                 __get_str(hostname),
920                 __entry->dst_addr)
921 )
922
923 #define DEFINE_SMB3_CONNECT_EVENT(name)        \
924 DEFINE_EVENT(smb3_connect_class, smb3_##name,  \
925         TP_PROTO(char *hostname,                \
926                 __u64 conn_id,                  \
927                 const struct __kernel_sockaddr_storage *addr),  \
928         TP_ARGS(hostname, conn_id, addr))
929
930 DEFINE_SMB3_CONNECT_EVENT(connect_done);
931
932 DECLARE_EVENT_CLASS(smb3_connect_err_class,
933         TP_PROTO(char *hostname, __u64 conn_id,
934                 const struct __kernel_sockaddr_storage *dst_addr, int rc),
935         TP_ARGS(hostname, conn_id, dst_addr, rc),
936         TP_STRUCT__entry(
937                 __string(hostname, hostname)
938                 __field(__u64, conn_id)
939                 __array(__u8, dst_addr, sizeof(struct sockaddr_storage))
940                 __field(int, rc)
941         ),
942         TP_fast_assign(
943                 struct sockaddr_storage *pss = NULL;
944
945                 __entry->conn_id = conn_id;
946                 __entry->rc = rc;
947                 pss = (struct sockaddr_storage *)__entry->dst_addr;
948                 *pss = *dst_addr;
949                 __assign_str(hostname, hostname);
950         ),
951         TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc",
952                 __entry->rc,
953                 __entry->conn_id,
954                 __get_str(hostname),
955                 __entry->dst_addr)
956 )
957
958 #define DEFINE_SMB3_CONNECT_ERR_EVENT(name)        \
959 DEFINE_EVENT(smb3_connect_err_class, smb3_##name,  \
960         TP_PROTO(char *hostname,                \
961                 __u64 conn_id,                  \
962                 const struct __kernel_sockaddr_storage *addr,   \
963                 int rc),                        \
964         TP_ARGS(hostname, conn_id, addr, rc))
965
966 DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err);
967
968 DECLARE_EVENT_CLASS(smb3_reconnect_class,
969         TP_PROTO(__u64  currmid,
970                 __u64 conn_id,
971                 char *hostname),
972         TP_ARGS(currmid, conn_id, hostname),
973         TP_STRUCT__entry(
974                 __field(__u64, currmid)
975                 __field(__u64, conn_id)
976                 __string(hostname, hostname)
977         ),
978         TP_fast_assign(
979                 __entry->currmid = currmid;
980                 __entry->conn_id = conn_id;
981                 __assign_str(hostname, hostname);
982         ),
983         TP_printk("conn_id=0x%llx server=%s current_mid=%llu",
984                 __entry->conn_id,
985                 __get_str(hostname),
986                 __entry->currmid)
987 )
988
989 #define DEFINE_SMB3_RECONNECT_EVENT(name)        \
990 DEFINE_EVENT(smb3_reconnect_class, smb3_##name,  \
991         TP_PROTO(__u64  currmid,                \
992                 __u64 conn_id,                  \
993                 char *hostname),                                \
994         TP_ARGS(currmid, conn_id, hostname))
995
996 DEFINE_SMB3_RECONNECT_EVENT(reconnect);
997 DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect);
998
999 DECLARE_EVENT_CLASS(smb3_credit_class,
1000         TP_PROTO(__u64  currmid,
1001                 __u64 conn_id,
1002                 char *hostname,
1003                 int credits,
1004                 int credits_to_add,
1005                 int in_flight),
1006         TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight),
1007         TP_STRUCT__entry(
1008                 __field(__u64, currmid)
1009                 __field(__u64, conn_id)
1010                 __string(hostname, hostname)
1011                 __field(int, credits)
1012                 __field(int, credits_to_add)
1013                 __field(int, in_flight)
1014         ),
1015         TP_fast_assign(
1016                 __entry->currmid = currmid;
1017                 __entry->conn_id = conn_id;
1018                 __assign_str(hostname, hostname);
1019                 __entry->credits = credits;
1020                 __entry->credits_to_add = credits_to_add;
1021                 __entry->in_flight = in_flight;
1022         ),
1023         TP_printk("conn_id=0x%llx server=%s current_mid=%llu "
1024                         "credits=%d credit_change=%d in_flight=%d",
1025                 __entry->conn_id,
1026                 __get_str(hostname),
1027                 __entry->currmid,
1028                 __entry->credits,
1029                 __entry->credits_to_add,
1030                 __entry->in_flight)
1031 )
1032
1033 #define DEFINE_SMB3_CREDIT_EVENT(name)        \
1034 DEFINE_EVENT(smb3_credit_class, smb3_##name,  \
1035         TP_PROTO(__u64  currmid,                \
1036                 __u64 conn_id,                  \
1037                 char *hostname,                 \
1038                 int  credits,                   \
1039                 int  credits_to_add,    \
1040                 int in_flight),                 \
1041         TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight))
1042
1043 DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits);
1044 DEFINE_SMB3_CREDIT_EVENT(reconnect_detected);
1045 DEFINE_SMB3_CREDIT_EVENT(credit_timeout);
1046 DEFINE_SMB3_CREDIT_EVENT(insufficient_credits);
1047 DEFINE_SMB3_CREDIT_EVENT(too_many_credits);
1048 DEFINE_SMB3_CREDIT_EVENT(add_credits);
1049 DEFINE_SMB3_CREDIT_EVENT(adj_credits);
1050 DEFINE_SMB3_CREDIT_EVENT(hdr_credits);
1051 DEFINE_SMB3_CREDIT_EVENT(nblk_credits);
1052 DEFINE_SMB3_CREDIT_EVENT(pend_credits);
1053 DEFINE_SMB3_CREDIT_EVENT(wait_credits);
1054 DEFINE_SMB3_CREDIT_EVENT(waitff_credits);
1055 DEFINE_SMB3_CREDIT_EVENT(overflow_credits);
1056 DEFINE_SMB3_CREDIT_EVENT(set_credits);
1057
1058 #endif /* _CIFS_TRACE_H */
1059
1060 #undef TRACE_INCLUDE_PATH
1061 #define TRACE_INCLUDE_PATH .
1062 #define TRACE_INCLUDE_FILE trace
1063 #include <trace/define_trace.h>