kernel/io_uring: cancel io_uring before task works
[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(posix_query_info_compound_enter);
322 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter);
323 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter);
324 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter);
325 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter);
326 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter);
327 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter);
328 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter);
329
330
331 DECLARE_EVENT_CLASS(smb3_inf_compound_done_class,
332         TP_PROTO(unsigned int xid,
333                 __u32   tid,
334                 __u64   sesid),
335         TP_ARGS(xid, tid, sesid),
336         TP_STRUCT__entry(
337                 __field(unsigned int, xid)
338                 __field(__u32, tid)
339                 __field(__u64, sesid)
340         ),
341         TP_fast_assign(
342                 __entry->xid = xid;
343                 __entry->tid = tid;
344                 __entry->sesid = sesid;
345         ),
346         TP_printk("xid=%u sid=0x%llx tid=0x%x",
347                 __entry->xid, __entry->sesid, __entry->tid)
348 )
349
350 #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name)     \
351 DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name,    \
352         TP_PROTO(unsigned int xid,              \
353                 __u32   tid,                    \
354                 __u64   sesid),                 \
355         TP_ARGS(xid, tid, sesid))
356
357 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done);
358 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done);
359 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done);
360 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done);
361 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done);
362 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done);
363 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done);
364 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done);
365 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done);
366
367
368 DECLARE_EVENT_CLASS(smb3_inf_compound_err_class,
369         TP_PROTO(unsigned int xid,
370                 __u32   tid,
371                 __u64   sesid,
372                 int     rc),
373         TP_ARGS(xid, tid, sesid, rc),
374         TP_STRUCT__entry(
375                 __field(unsigned int, xid)
376                 __field(__u32, tid)
377                 __field(__u64, sesid)
378                 __field(int, rc)
379         ),
380         TP_fast_assign(
381                 __entry->xid = xid;
382                 __entry->tid = tid;
383                 __entry->sesid = sesid;
384                 __entry->rc = rc;
385         ),
386         TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d",
387                 __entry->xid, __entry->sesid, __entry->tid,
388                 __entry->rc)
389 )
390
391 #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name)     \
392 DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name,    \
393         TP_PROTO(unsigned int xid,              \
394                 __u32   tid,                    \
395                 __u64   sesid,                  \
396                 int rc),                        \
397         TP_ARGS(xid, tid, sesid, rc))
398
399 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err);
400 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err);
401 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err);
402 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err);
403 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err);
404 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err);
405 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err);
406 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err);
407 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err);
408
409 /*
410  * For logging SMB3 Status code and Command for responses which return errors
411  */
412 DECLARE_EVENT_CLASS(smb3_cmd_err_class,
413         TP_PROTO(__u32  tid,
414                 __u64   sesid,
415                 __u16   cmd,
416                 __u64   mid,
417                 __u32   status,
418                 int     rc),
419         TP_ARGS(tid, sesid, cmd, mid, status, rc),
420         TP_STRUCT__entry(
421                 __field(__u32, tid)
422                 __field(__u64, sesid)
423                 __field(__u16, cmd)
424                 __field(__u64, mid)
425                 __field(__u32, status)
426                 __field(int, rc)
427         ),
428         TP_fast_assign(
429                 __entry->tid = tid;
430                 __entry->sesid = sesid;
431                 __entry->cmd = cmd;
432                 __entry->mid = mid;
433                 __entry->status = status;
434                 __entry->rc = rc;
435         ),
436         TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d",
437                 __entry->sesid, __entry->tid, __entry->cmd, __entry->mid,
438                 __entry->status, __entry->rc)
439 )
440
441 #define DEFINE_SMB3_CMD_ERR_EVENT(name)          \
442 DEFINE_EVENT(smb3_cmd_err_class, smb3_##name,    \
443         TP_PROTO(__u32  tid,                    \
444                 __u64   sesid,                  \
445                 __u16   cmd,                    \
446                 __u64   mid,                    \
447                 __u32   status,                 \
448                 int     rc),                    \
449         TP_ARGS(tid, sesid, cmd, mid, status, rc))
450
451 DEFINE_SMB3_CMD_ERR_EVENT(cmd_err);
452
453 DECLARE_EVENT_CLASS(smb3_cmd_done_class,
454         TP_PROTO(__u32  tid,
455                 __u64   sesid,
456                 __u16   cmd,
457                 __u64   mid),
458         TP_ARGS(tid, sesid, cmd, mid),
459         TP_STRUCT__entry(
460                 __field(__u32, tid)
461                 __field(__u64, sesid)
462                 __field(__u16, cmd)
463                 __field(__u64, mid)
464         ),
465         TP_fast_assign(
466                 __entry->tid = tid;
467                 __entry->sesid = sesid;
468                 __entry->cmd = cmd;
469                 __entry->mid = mid;
470         ),
471         TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu",
472                 __entry->sesid, __entry->tid,
473                 __entry->cmd, __entry->mid)
474 )
475
476 #define DEFINE_SMB3_CMD_DONE_EVENT(name)          \
477 DEFINE_EVENT(smb3_cmd_done_class, smb3_##name,    \
478         TP_PROTO(__u32  tid,                    \
479                 __u64   sesid,                  \
480                 __u16   cmd,                    \
481                 __u64   mid),                   \
482         TP_ARGS(tid, sesid, cmd, mid))
483
484 DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter);
485 DEFINE_SMB3_CMD_DONE_EVENT(cmd_done);
486 DEFINE_SMB3_CMD_DONE_EVENT(ses_expired);
487
488 DECLARE_EVENT_CLASS(smb3_mid_class,
489         TP_PROTO(__u16  cmd,
490                 __u64   mid,
491                 __u32   pid,
492                 unsigned long when_sent,
493                 unsigned long when_received),
494         TP_ARGS(cmd, mid, pid, when_sent, when_received),
495         TP_STRUCT__entry(
496                 __field(__u16, cmd)
497                 __field(__u64, mid)
498                 __field(__u32, pid)
499                 __field(unsigned long, when_sent)
500                 __field(unsigned long, when_received)
501         ),
502         TP_fast_assign(
503                 __entry->cmd = cmd;
504                 __entry->mid = mid;
505                 __entry->pid = pid;
506                 __entry->when_sent = when_sent;
507                 __entry->when_received = when_received;
508         ),
509         TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu",
510                 __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent,
511                 __entry->when_received)
512 )
513
514 #define DEFINE_SMB3_MID_EVENT(name)          \
515 DEFINE_EVENT(smb3_mid_class, smb3_##name,    \
516         TP_PROTO(__u16  cmd,                    \
517                 __u64   mid,                    \
518                 __u32   pid,                    \
519                 unsigned long when_sent,        \
520                 unsigned long when_received),   \
521         TP_ARGS(cmd, mid, pid, when_sent, when_received))
522
523 DEFINE_SMB3_MID_EVENT(slow_rsp);
524
525 DECLARE_EVENT_CLASS(smb3_exit_err_class,
526         TP_PROTO(unsigned int xid,
527                 const char *func_name,
528                 int     rc),
529         TP_ARGS(xid, func_name, rc),
530         TP_STRUCT__entry(
531                 __field(unsigned int, xid)
532                 __field(const char *, func_name)
533                 __field(int, rc)
534         ),
535         TP_fast_assign(
536                 __entry->xid = xid;
537                 __entry->func_name = func_name;
538                 __entry->rc = rc;
539         ),
540         TP_printk("\t%s: xid=%u rc=%d",
541                 __entry->func_name, __entry->xid, __entry->rc)
542 )
543
544 #define DEFINE_SMB3_EXIT_ERR_EVENT(name)          \
545 DEFINE_EVENT(smb3_exit_err_class, smb3_##name,    \
546         TP_PROTO(unsigned int xid,              \
547                 const char *func_name,          \
548                 int     rc),                    \
549         TP_ARGS(xid, func_name, rc))
550
551 DEFINE_SMB3_EXIT_ERR_EVENT(exit_err);
552
553
554 DECLARE_EVENT_CLASS(smb3_sync_err_class,
555         TP_PROTO(unsigned long ino,
556                 int     rc),
557         TP_ARGS(ino, rc),
558         TP_STRUCT__entry(
559                 __field(unsigned long, ino)
560                 __field(int, rc)
561         ),
562         TP_fast_assign(
563                 __entry->ino = ino;
564                 __entry->rc = rc;
565         ),
566         TP_printk("\tino=%lu rc=%d",
567                 __entry->ino, __entry->rc)
568 )
569
570 #define DEFINE_SMB3_SYNC_ERR_EVENT(name)          \
571 DEFINE_EVENT(smb3_sync_err_class, cifs_##name,    \
572         TP_PROTO(unsigned long ino,             \
573                 int     rc),                    \
574         TP_ARGS(ino, rc))
575
576 DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err);
577 DEFINE_SMB3_SYNC_ERR_EVENT(flush_err);
578
579
580 DECLARE_EVENT_CLASS(smb3_enter_exit_class,
581         TP_PROTO(unsigned int xid,
582                 const char *func_name),
583         TP_ARGS(xid, func_name),
584         TP_STRUCT__entry(
585                 __field(unsigned int, xid)
586                 __field(const char *, func_name)
587         ),
588         TP_fast_assign(
589                 __entry->xid = xid;
590                 __entry->func_name = func_name;
591         ),
592         TP_printk("\t%s: xid=%u",
593                 __entry->func_name, __entry->xid)
594 )
595
596 #define DEFINE_SMB3_ENTER_EXIT_EVENT(name)        \
597 DEFINE_EVENT(smb3_enter_exit_class, smb3_##name,  \
598         TP_PROTO(unsigned int xid,              \
599                 const char *func_name),         \
600         TP_ARGS(xid, func_name))
601
602 DEFINE_SMB3_ENTER_EXIT_EVENT(enter);
603 DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done);
604
605 /*
606  * For SMB2/SMB3 tree connect
607  */
608
609 DECLARE_EVENT_CLASS(smb3_tcon_class,
610         TP_PROTO(unsigned int xid,
611                 __u32   tid,
612                 __u64   sesid,
613                 const char *unc_name,
614                 int     rc),
615         TP_ARGS(xid, tid, sesid, unc_name, rc),
616         TP_STRUCT__entry(
617                 __field(unsigned int, xid)
618                 __field(__u32, tid)
619                 __field(__u64, sesid)
620                 __string(name, unc_name)
621                 __field(int, rc)
622         ),
623         TP_fast_assign(
624                 __entry->xid = xid;
625                 __entry->tid = tid;
626                 __entry->sesid = sesid;
627                 __assign_str(name, unc_name);
628                 __entry->rc = rc;
629         ),
630         TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d",
631                 __entry->xid, __entry->sesid, __entry->tid,
632                 __get_str(name), __entry->rc)
633 )
634
635 #define DEFINE_SMB3_TCON_EVENT(name)          \
636 DEFINE_EVENT(smb3_tcon_class, smb3_##name,    \
637         TP_PROTO(unsigned int xid,              \
638                 __u32   tid,                    \
639                 __u64   sesid,                  \
640                 const char *unc_name,           \
641                 int     rc),                    \
642         TP_ARGS(xid, tid, sesid, unc_name, rc))
643
644 DEFINE_SMB3_TCON_EVENT(tcon);
645
646
647 /*
648  * For smb2/smb3 open (including create and mkdir) calls
649  */
650
651 DECLARE_EVENT_CLASS(smb3_open_enter_class,
652         TP_PROTO(unsigned int xid,
653                 __u32   tid,
654                 __u64   sesid,
655                 int     create_options,
656                 int     desired_access),
657         TP_ARGS(xid, tid, sesid, create_options, desired_access),
658         TP_STRUCT__entry(
659                 __field(unsigned int, xid)
660                 __field(__u32, tid)
661                 __field(__u64, sesid)
662                 __field(int, create_options)
663                 __field(int, desired_access)
664         ),
665         TP_fast_assign(
666                 __entry->xid = xid;
667                 __entry->tid = tid;
668                 __entry->sesid = sesid;
669                 __entry->create_options = create_options;
670                 __entry->desired_access = desired_access;
671         ),
672         TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x",
673                 __entry->xid, __entry->sesid, __entry->tid,
674                 __entry->create_options, __entry->desired_access)
675 )
676
677 #define DEFINE_SMB3_OPEN_ENTER_EVENT(name)        \
678 DEFINE_EVENT(smb3_open_enter_class, smb3_##name,  \
679         TP_PROTO(unsigned int xid,              \
680                 __u32   tid,                    \
681                 __u64   sesid,                  \
682                 int     create_options,         \
683                 int     desired_access),        \
684         TP_ARGS(xid, tid, sesid, create_options, desired_access))
685
686 DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter);
687 DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter);
688
689 DECLARE_EVENT_CLASS(smb3_open_err_class,
690         TP_PROTO(unsigned int xid,
691                 __u32   tid,
692                 __u64   sesid,
693                 int     create_options,
694                 int     desired_access,
695                 int     rc),
696         TP_ARGS(xid, tid, sesid, create_options, desired_access, rc),
697         TP_STRUCT__entry(
698                 __field(unsigned int, xid)
699                 __field(__u32, tid)
700                 __field(__u64, sesid)
701                 __field(int,   create_options)
702                 __field(int, desired_access)
703                 __field(int, rc)
704         ),
705         TP_fast_assign(
706                 __entry->xid = xid;
707                 __entry->tid = tid;
708                 __entry->sesid = sesid;
709                 __entry->create_options = create_options;
710                 __entry->desired_access = desired_access;
711                 __entry->rc = rc;
712         ),
713         TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d",
714                 __entry->xid, __entry->sesid, __entry->tid,
715                 __entry->create_options, __entry->desired_access, __entry->rc)
716 )
717
718 #define DEFINE_SMB3_OPEN_ERR_EVENT(name)          \
719 DEFINE_EVENT(smb3_open_err_class, smb3_##name,    \
720         TP_PROTO(unsigned int xid,              \
721                 __u32   tid,                    \
722                 __u64   sesid,                  \
723                 int     create_options,         \
724                 int     desired_access,         \
725                 int     rc),                    \
726         TP_ARGS(xid, tid, sesid, create_options, desired_access, rc))
727
728 DEFINE_SMB3_OPEN_ERR_EVENT(open_err);
729 DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err);
730
731 DECLARE_EVENT_CLASS(smb3_open_done_class,
732         TP_PROTO(unsigned int xid,
733                 __u64   fid,
734                 __u32   tid,
735                 __u64   sesid,
736                 int     create_options,
737                 int     desired_access),
738         TP_ARGS(xid, fid, tid, sesid, create_options, desired_access),
739         TP_STRUCT__entry(
740                 __field(unsigned int, xid)
741                 __field(__u64, fid)
742                 __field(__u32, tid)
743                 __field(__u64, sesid)
744                 __field(int, create_options)
745                 __field(int, desired_access)
746         ),
747         TP_fast_assign(
748                 __entry->xid = xid;
749                 __entry->fid = fid;
750                 __entry->tid = tid;
751                 __entry->sesid = sesid;
752                 __entry->create_options = create_options;
753                 __entry->desired_access = desired_access;
754         ),
755         TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x",
756                 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
757                 __entry->create_options, __entry->desired_access)
758 )
759
760 #define DEFINE_SMB3_OPEN_DONE_EVENT(name)        \
761 DEFINE_EVENT(smb3_open_done_class, smb3_##name,  \
762         TP_PROTO(unsigned int xid,              \
763                 __u64   fid,                    \
764                 __u32   tid,                    \
765                 __u64   sesid,                  \
766                 int     create_options,         \
767                 int     desired_access),        \
768         TP_ARGS(xid, fid, tid, sesid, create_options, desired_access))
769
770 DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
771 DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);
772
773
774 DECLARE_EVENT_CLASS(smb3_lease_done_class,
775         TP_PROTO(__u32  lease_state,
776                 __u32   tid,
777                 __u64   sesid,
778                 __u64   lease_key_low,
779                 __u64   lease_key_high),
780         TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high),
781         TP_STRUCT__entry(
782                 __field(__u32, lease_state)
783                 __field(__u32, tid)
784                 __field(__u64, sesid)
785                 __field(__u64, lease_key_low)
786                 __field(__u64, lease_key_high)
787         ),
788         TP_fast_assign(
789                 __entry->lease_state = lease_state;
790                 __entry->tid = tid;
791                 __entry->sesid = sesid;
792                 __entry->lease_key_low = lease_key_low;
793                 __entry->lease_key_high = lease_key_high;
794         ),
795         TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x",
796                 __entry->sesid, __entry->tid, __entry->lease_key_high,
797                 __entry->lease_key_low, __entry->lease_state)
798 )
799
800 #define DEFINE_SMB3_LEASE_DONE_EVENT(name)        \
801 DEFINE_EVENT(smb3_lease_done_class, smb3_##name,  \
802         TP_PROTO(__u32  lease_state,            \
803                 __u32   tid,                    \
804                 __u64   sesid,                  \
805                 __u64   lease_key_low,          \
806                 __u64   lease_key_high),        \
807         TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high))
808
809 DEFINE_SMB3_LEASE_DONE_EVENT(lease_done);
810
811 DECLARE_EVENT_CLASS(smb3_lease_err_class,
812         TP_PROTO(__u32  lease_state,
813                 __u32   tid,
814                 __u64   sesid,
815                 __u64   lease_key_low,
816                 __u64   lease_key_high,
817                 int     rc),
818         TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc),
819         TP_STRUCT__entry(
820                 __field(__u32, lease_state)
821                 __field(__u32, tid)
822                 __field(__u64, sesid)
823                 __field(__u64, lease_key_low)
824                 __field(__u64, lease_key_high)
825                 __field(int, rc)
826         ),
827         TP_fast_assign(
828                 __entry->lease_state = lease_state;
829                 __entry->tid = tid;
830                 __entry->sesid = sesid;
831                 __entry->lease_key_low = lease_key_low;
832                 __entry->lease_key_high = lease_key_high;
833                 __entry->rc = rc;
834         ),
835         TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d",
836                 __entry->sesid, __entry->tid, __entry->lease_key_high,
837                 __entry->lease_key_low, __entry->lease_state, __entry->rc)
838 )
839
840 #define DEFINE_SMB3_LEASE_ERR_EVENT(name)        \
841 DEFINE_EVENT(smb3_lease_err_class, smb3_##name,  \
842         TP_PROTO(__u32  lease_state,            \
843                 __u32   tid,                    \
844                 __u64   sesid,                  \
845                 __u64   lease_key_low,          \
846                 __u64   lease_key_high,         \
847                 int     rc),                    \
848         TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc))
849
850 DEFINE_SMB3_LEASE_ERR_EVENT(lease_err);
851
852 DECLARE_EVENT_CLASS(smb3_reconnect_class,
853         TP_PROTO(__u64  currmid,
854                 char *hostname),
855         TP_ARGS(currmid, hostname),
856         TP_STRUCT__entry(
857                 __field(__u64, currmid)
858                 __field(char *, hostname)
859         ),
860         TP_fast_assign(
861                 __entry->currmid = currmid;
862                 __entry->hostname = hostname;
863         ),
864         TP_printk("server=%s current_mid=0x%llx",
865                 __entry->hostname,
866                 __entry->currmid)
867 )
868
869 #define DEFINE_SMB3_RECONNECT_EVENT(name)        \
870 DEFINE_EVENT(smb3_reconnect_class, smb3_##name,  \
871         TP_PROTO(__u64  currmid,                \
872                 char *hostname),                \
873         TP_ARGS(currmid, hostname))
874
875 DEFINE_SMB3_RECONNECT_EVENT(reconnect);
876 DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect);
877
878 DECLARE_EVENT_CLASS(smb3_credit_class,
879         TP_PROTO(__u64  currmid,
880                 char *hostname,
881                 int credits,
882                 int credits_to_add),
883         TP_ARGS(currmid, hostname, credits, credits_to_add),
884         TP_STRUCT__entry(
885                 __field(__u64, currmid)
886                 __field(char *, hostname)
887                 __field(int, credits)
888                 __field(int, credits_to_add)
889         ),
890         TP_fast_assign(
891                 __entry->currmid = currmid;
892                 __entry->hostname = hostname;
893                 __entry->credits = credits;
894                 __entry->credits_to_add = credits_to_add;
895         ),
896         TP_printk("server=%s current_mid=0x%llx credits=%d credits_to_add=%d",
897                 __entry->hostname,
898                 __entry->currmid,
899                 __entry->credits,
900                 __entry->credits_to_add)
901 )
902
903 #define DEFINE_SMB3_CREDIT_EVENT(name)        \
904 DEFINE_EVENT(smb3_credit_class, smb3_##name,  \
905         TP_PROTO(__u64  currmid,                \
906                 char *hostname,                 \
907                 int  credits,                   \
908                 int  credits_to_add),           \
909         TP_ARGS(currmid, hostname, credits, credits_to_add))
910
911 DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits);
912 DEFINE_SMB3_CREDIT_EVENT(reconnect_detected);
913 DEFINE_SMB3_CREDIT_EVENT(credit_timeout);
914 DEFINE_SMB3_CREDIT_EVENT(insufficient_credits);
915 DEFINE_SMB3_CREDIT_EVENT(too_many_credits);
916 DEFINE_SMB3_CREDIT_EVENT(add_credits);
917 DEFINE_SMB3_CREDIT_EVENT(set_credits);
918
919 #endif /* _CIFS_TRACE_H */
920
921 #undef TRACE_INCLUDE_PATH
922 #define TRACE_INCLUDE_PATH .
923 #define TRACE_INCLUDE_FILE trace
924 #include <trace/define_trace.h>