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