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