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