]> Git Repo - J-linux.git/blob - fs/smb/client/trace.h
Merge tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
[J-linux.git] / fs / smb / client / trace.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  *   Copyright (C) 2018, Microsoft Corporation.
4  *
5  *   Author(s): Steve French <[email protected]>
6  *
7  * Please use this 3-part article as a reference for writing new tracepoints:
8  * https://lwn.net/Articles/379903/
9  */
10 #undef TRACE_SYSTEM
11 #define TRACE_SYSTEM cifs
12
13 #if !defined(_CIFS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
14 #define _CIFS_TRACE_H
15
16 #include <linux/tracepoint.h>
17 #include <linux/net.h>
18 #include <linux/inet.h>
19
20 /*
21  * Specify enums for tracing information.
22  */
23 #define smb3_rw_credits_traces \
24         EM(cifs_trace_rw_credits_call_readv_adjust,     "rd-call-adj") \
25         EM(cifs_trace_rw_credits_call_writev_adjust,    "wr-call-adj") \
26         EM(cifs_trace_rw_credits_free_subreq,           "free-subreq") \
27         EM(cifs_trace_rw_credits_issue_read_adjust,     "rd-issu-adj") \
28         EM(cifs_trace_rw_credits_issue_write_adjust,    "wr-issu-adj") \
29         EM(cifs_trace_rw_credits_no_adjust_up,          "no-adj-up  ") \
30         EM(cifs_trace_rw_credits_old_session,           "old-session") \
31         EM(cifs_trace_rw_credits_read_response_add,     "rd-resp-add") \
32         EM(cifs_trace_rw_credits_read_response_clear,   "rd-resp-clr") \
33         EM(cifs_trace_rw_credits_read_resubmit,         "rd-resubmit") \
34         EM(cifs_trace_rw_credits_read_submit,           "rd-submit  ") \
35         EM(cifs_trace_rw_credits_write_prepare,         "wr-prepare ") \
36         EM(cifs_trace_rw_credits_write_response_add,    "wr-resp-add") \
37         EM(cifs_trace_rw_credits_write_response_clear,  "wr-resp-clr") \
38         E_(cifs_trace_rw_credits_zero_in_flight,        "ZERO-IN-FLT")
39
40 #define smb3_tcon_ref_traces                                          \
41         EM(netfs_trace_tcon_ref_dec_dfs_refer,          "DEC DfsRef") \
42         EM(netfs_trace_tcon_ref_free,                   "FRE       ") \
43         EM(netfs_trace_tcon_ref_free_fail,              "FRE Fail  ") \
44         EM(netfs_trace_tcon_ref_free_ipc,               "FRE Ipc   ") \
45         EM(netfs_trace_tcon_ref_free_ipc_fail,          "FRE Ipc-F ") \
46         EM(netfs_trace_tcon_ref_free_reconnect_server,  "FRE Reconn") \
47         EM(netfs_trace_tcon_ref_get_cached_laundromat,  "GET Ch-Lau") \
48         EM(netfs_trace_tcon_ref_get_cached_lease_break, "GET Ch-Lea") \
49         EM(netfs_trace_tcon_ref_get_cancelled_close,    "GET Cn-Cls") \
50         EM(netfs_trace_tcon_ref_get_dfs_refer,          "GET DfsRef") \
51         EM(netfs_trace_tcon_ref_get_find,               "GET Find  ") \
52         EM(netfs_trace_tcon_ref_get_find_sess_tcon,     "GET FndSes") \
53         EM(netfs_trace_tcon_ref_get_reconnect_server,   "GET Reconn") \
54         EM(netfs_trace_tcon_ref_new,                    "NEW       ") \
55         EM(netfs_trace_tcon_ref_new_ipc,                "NEW Ipc   ") \
56         EM(netfs_trace_tcon_ref_new_reconnect_server,   "NEW Reconn") \
57         EM(netfs_trace_tcon_ref_put_cached_close,       "PUT Ch-Cls") \
58         EM(netfs_trace_tcon_ref_put_cancelled_close,    "PUT Cn-Cls") \
59         EM(netfs_trace_tcon_ref_put_cancelled_close_fid, "PUT Cn-Fid") \
60         EM(netfs_trace_tcon_ref_put_cancelled_mid,      "PUT Cn-Mid") \
61         EM(netfs_trace_tcon_ref_put_mnt_ctx,            "PUT MntCtx") \
62         EM(netfs_trace_tcon_ref_put_reconnect_server,   "PUT Reconn") \
63         EM(netfs_trace_tcon_ref_put_tlink,              "PUT Tlink ") \
64         EM(netfs_trace_tcon_ref_see_cancelled_close,    "SEE Cn-Cls") \
65         EM(netfs_trace_tcon_ref_see_fscache_collision,  "SEE FV-CO!") \
66         EM(netfs_trace_tcon_ref_see_fscache_okay,       "SEE FV-Ok ") \
67         EM(netfs_trace_tcon_ref_see_fscache_relinq,     "SEE FV-Rlq") \
68         E_(netfs_trace_tcon_ref_see_umount,             "SEE Umount")
69
70 #undef EM
71 #undef E_
72
73 /*
74  * Define those tracing enums.
75  */
76 #ifndef __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY
77 #define __SMB3_DECLARE_TRACE_ENUMS_ONCE_ONLY
78
79 #define EM(a, b) a,
80 #define E_(a, b) a
81
82 enum smb3_rw_credits_trace      { smb3_rw_credits_traces } __mode(byte);
83 enum smb3_tcon_ref_trace        { smb3_tcon_ref_traces } __mode(byte);
84
85 #undef EM
86 #undef E_
87 #endif
88
89 /*
90  * Export enum symbols via userspace.
91  */
92 #define EM(a, b) TRACE_DEFINE_ENUM(a);
93 #define E_(a, b) TRACE_DEFINE_ENUM(a);
94
95 smb3_rw_credits_traces;
96 smb3_tcon_ref_traces;
97
98 #undef EM
99 #undef E_
100
101 /*
102  * Now redefine the EM() and E_() macros to map the enums to the strings that
103  * will be printed in the output.
104  */
105 #define EM(a, b)        { a, b },
106 #define E_(a, b)        { a, b }
107
108 /* For logging errors in read or write */
109 DECLARE_EVENT_CLASS(smb3_rw_err_class,
110         TP_PROTO(unsigned int rreq_debug_id,
111                  unsigned int rreq_debug_index,
112                  unsigned int xid,
113                  __u64  fid,
114                  __u32  tid,
115                  __u64  sesid,
116                  __u64  offset,
117                  __u32  len,
118                  int    rc),
119         TP_ARGS(rreq_debug_id, rreq_debug_index,
120                 xid, fid, tid, sesid, offset, len, rc),
121         TP_STRUCT__entry(
122                 __field(unsigned int, rreq_debug_id)
123                 __field(unsigned int, rreq_debug_index)
124                 __field(unsigned int, xid)
125                 __field(__u64, fid)
126                 __field(__u32, tid)
127                 __field(__u64, sesid)
128                 __field(__u64, offset)
129                 __field(__u32, len)
130                 __field(int, rc)
131         ),
132         TP_fast_assign(
133                 __entry->rreq_debug_id = rreq_debug_id;
134                 __entry->rreq_debug_index = rreq_debug_index;
135                 __entry->xid = xid;
136                 __entry->fid = fid;
137                 __entry->tid = tid;
138                 __entry->sesid = sesid;
139                 __entry->offset = offset;
140                 __entry->len = len;
141                 __entry->rc = rc;
142         ),
143         TP_printk("\tR=%08x[%x] xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d",
144                   __entry->rreq_debug_id, __entry->rreq_debug_index,
145                   __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
146                   __entry->offset, __entry->len, __entry->rc)
147 )
148
149 #define DEFINE_SMB3_RW_ERR_EVENT(name)          \
150 DEFINE_EVENT(smb3_rw_err_class, smb3_##name,    \
151         TP_PROTO(unsigned int rreq_debug_id,    \
152                  unsigned int rreq_debug_index,         \
153                  unsigned int xid,                      \
154                  __u64  fid,                            \
155                  __u32  tid,                            \
156                  __u64  sesid,                          \
157                  __u64  offset,                         \
158                  __u32  len,                            \
159                  int    rc),                            \
160         TP_ARGS(rreq_debug_id, rreq_debug_index, xid, fid, tid, sesid, offset, len, rc))
161
162 DEFINE_SMB3_RW_ERR_EVENT(read_err);
163 DEFINE_SMB3_RW_ERR_EVENT(write_err);
164
165 /* For logging errors in other file I/O ops */
166 DECLARE_EVENT_CLASS(smb3_other_err_class,
167         TP_PROTO(unsigned int xid,
168                 __u64   fid,
169                 __u32   tid,
170                 __u64   sesid,
171                 __u64   offset,
172                 __u32   len,
173                 int     rc),
174         TP_ARGS(xid, fid, tid, sesid, offset, len, rc),
175         TP_STRUCT__entry(
176                 __field(unsigned int, xid)
177                 __field(__u64, fid)
178                 __field(__u32, tid)
179                 __field(__u64, sesid)
180                 __field(__u64, offset)
181                 __field(__u32, len)
182                 __field(int, rc)
183         ),
184         TP_fast_assign(
185                 __entry->xid = xid;
186                 __entry->fid = fid;
187                 __entry->tid = tid;
188                 __entry->sesid = sesid;
189                 __entry->offset = offset;
190                 __entry->len = len;
191                 __entry->rc = rc;
192         ),
193         TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x rc=%d",
194                 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
195                 __entry->offset, __entry->len, __entry->rc)
196 )
197
198 #define DEFINE_SMB3_OTHER_ERR_EVENT(name)       \
199 DEFINE_EVENT(smb3_other_err_class, smb3_##name, \
200         TP_PROTO(unsigned int xid,              \
201                 __u64   fid,                    \
202                 __u32   tid,                    \
203                 __u64   sesid,                  \
204                 __u64   offset,                 \
205                 __u32   len,                    \
206                 int     rc),                    \
207         TP_ARGS(xid, fid, tid, sesid, offset, len, rc))
208
209 DEFINE_SMB3_OTHER_ERR_EVENT(query_dir_err);
210 DEFINE_SMB3_OTHER_ERR_EVENT(zero_err);
211 DEFINE_SMB3_OTHER_ERR_EVENT(falloc_err);
212
213 /*
214  * For logging errors in reflink and copy_range ops e.g. smb2_copychunk_range
215  * and smb2_duplicate_extents
216  */
217 DECLARE_EVENT_CLASS(smb3_copy_range_err_class,
218         TP_PROTO(unsigned int xid,
219                 __u64   src_fid,
220                 __u64   target_fid,
221                 __u32   tid,
222                 __u64   sesid,
223                 __u64   src_offset,
224                 __u64   target_offset,
225                 __u32   len,
226                 int     rc),
227         TP_ARGS(xid, src_fid, target_fid, tid, sesid, src_offset, target_offset, len, rc),
228         TP_STRUCT__entry(
229                 __field(unsigned int, xid)
230                 __field(__u64, src_fid)
231                 __field(__u64, target_fid)
232                 __field(__u32, tid)
233                 __field(__u64, sesid)
234                 __field(__u64, src_offset)
235                 __field(__u64, target_offset)
236                 __field(__u32, len)
237                 __field(int, rc)
238         ),
239         TP_fast_assign(
240                 __entry->xid = xid;
241                 __entry->src_fid = src_fid;
242                 __entry->target_fid = target_fid;
243                 __entry->tid = tid;
244                 __entry->sesid = sesid;
245                 __entry->src_offset = src_offset;
246                 __entry->target_offset = target_offset;
247                 __entry->len = len;
248                 __entry->rc = rc;
249         ),
250         TP_printk("\txid=%u sid=0x%llx tid=0x%x source fid=0x%llx source offset=0x%llx target fid=0x%llx target offset=0x%llx len=0x%x rc=%d",
251                 __entry->xid, __entry->sesid, __entry->tid, __entry->target_fid,
252                 __entry->src_offset, __entry->target_fid, __entry->target_offset, __entry->len, __entry->rc)
253 )
254
255 #define DEFINE_SMB3_COPY_RANGE_ERR_EVENT(name)  \
256 DEFINE_EVENT(smb3_copy_range_err_class, smb3_##name, \
257         TP_PROTO(unsigned int xid,              \
258                 __u64   src_fid,                \
259                 __u64   target_fid,             \
260                 __u32   tid,                    \
261                 __u64   sesid,                  \
262                 __u64   src_offset,             \
263                 __u64   target_offset,          \
264                 __u32   len,                    \
265                 int     rc),                    \
266         TP_ARGS(xid, src_fid, target_fid, tid, sesid, src_offset, target_offset, len, rc))
267
268 DEFINE_SMB3_COPY_RANGE_ERR_EVENT(clone_err);
269 /* TODO: Add SMB3_COPY_RANGE_ERR_EVENT(copychunk_err) */
270
271 DECLARE_EVENT_CLASS(smb3_copy_range_done_class,
272         TP_PROTO(unsigned int xid,
273                 __u64   src_fid,
274                 __u64   target_fid,
275                 __u32   tid,
276                 __u64   sesid,
277                 __u64   src_offset,
278                 __u64   target_offset,
279                 __u32   len),
280         TP_ARGS(xid, src_fid, target_fid, tid, sesid, src_offset, target_offset, len),
281         TP_STRUCT__entry(
282                 __field(unsigned int, xid)
283                 __field(__u64, src_fid)
284                 __field(__u64, target_fid)
285                 __field(__u32, tid)
286                 __field(__u64, sesid)
287                 __field(__u64, src_offset)
288                 __field(__u64, target_offset)
289                 __field(__u32, len)
290         ),
291         TP_fast_assign(
292                 __entry->xid = xid;
293                 __entry->src_fid = src_fid;
294                 __entry->target_fid = target_fid;
295                 __entry->tid = tid;
296                 __entry->sesid = sesid;
297                 __entry->src_offset = src_offset;
298                 __entry->target_offset = target_offset;
299                 __entry->len = len;
300         ),
301         TP_printk("\txid=%u sid=0x%llx tid=0x%x source fid=0x%llx source offset=0x%llx target fid=0x%llx target offset=0x%llx len=0x%x",
302                 __entry->xid, __entry->sesid, __entry->tid, __entry->target_fid,
303                 __entry->src_offset, __entry->target_fid, __entry->target_offset, __entry->len)
304 )
305
306 #define DEFINE_SMB3_COPY_RANGE_DONE_EVENT(name) \
307 DEFINE_EVENT(smb3_copy_range_done_class, smb3_##name, \
308         TP_PROTO(unsigned int xid,              \
309                 __u64   src_fid,                \
310                 __u64   target_fid,             \
311                 __u32   tid,                    \
312                 __u64   sesid,                  \
313                 __u64   src_offset,             \
314                 __u64   target_offset,          \
315                 __u32   len),                   \
316         TP_ARGS(xid, src_fid, target_fid, tid, sesid, src_offset, target_offset, len))
317
318 DEFINE_SMB3_COPY_RANGE_DONE_EVENT(copychunk_enter);
319 DEFINE_SMB3_COPY_RANGE_DONE_EVENT(clone_enter);
320 DEFINE_SMB3_COPY_RANGE_DONE_EVENT(copychunk_done);
321 DEFINE_SMB3_COPY_RANGE_DONE_EVENT(clone_done);
322
323
324 /* For logging successful read or write */
325 DECLARE_EVENT_CLASS(smb3_rw_done_class,
326         TP_PROTO(unsigned int rreq_debug_id,
327                  unsigned int rreq_debug_index,
328                  unsigned int xid,
329                  __u64  fid,
330                  __u32  tid,
331                  __u64  sesid,
332                  __u64  offset,
333                  __u32  len),
334         TP_ARGS(rreq_debug_id, rreq_debug_index,
335                 xid, fid, tid, sesid, offset, len),
336         TP_STRUCT__entry(
337                 __field(unsigned int, rreq_debug_id)
338                 __field(unsigned int, rreq_debug_index)
339                 __field(unsigned int, xid)
340                 __field(__u64, fid)
341                 __field(__u32, tid)
342                 __field(__u64, sesid)
343                 __field(__u64, offset)
344                 __field(__u32, len)
345         ),
346         TP_fast_assign(
347                 __entry->rreq_debug_id = rreq_debug_id;
348                 __entry->rreq_debug_index = rreq_debug_index;
349                 __entry->xid = xid;
350                 __entry->fid = fid;
351                 __entry->tid = tid;
352                 __entry->sesid = sesid;
353                 __entry->offset = offset;
354                 __entry->len = len;
355         ),
356         TP_printk("R=%08x[%x] xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x",
357                   __entry->rreq_debug_id, __entry->rreq_debug_index,
358                   __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
359                   __entry->offset, __entry->len)
360 )
361
362 #define DEFINE_SMB3_RW_DONE_EVENT(name)         \
363 DEFINE_EVENT(smb3_rw_done_class, smb3_##name,   \
364         TP_PROTO(unsigned int rreq_debug_id,    \
365                  unsigned int rreq_debug_index, \
366                  unsigned int xid,              \
367                 __u64   fid,                    \
368                 __u32   tid,                    \
369                 __u64   sesid,                  \
370                 __u64   offset,                 \
371                 __u32   len),                   \
372         TP_ARGS(rreq_debug_id, rreq_debug_index, xid, fid, tid, sesid, offset, len))
373
374 DEFINE_SMB3_RW_DONE_EVENT(read_enter);
375 DEFINE_SMB3_RW_DONE_EVENT(read_done);
376 DEFINE_SMB3_RW_DONE_EVENT(write_enter);
377 DEFINE_SMB3_RW_DONE_EVENT(write_done);
378
379 /* For logging successful other op */
380 DECLARE_EVENT_CLASS(smb3_other_done_class,
381         TP_PROTO(unsigned int xid,
382                 __u64   fid,
383                 __u32   tid,
384                 __u64   sesid,
385                 __u64   offset,
386                 __u32   len),
387         TP_ARGS(xid, fid, tid, sesid, offset, len),
388         TP_STRUCT__entry(
389                 __field(unsigned int, xid)
390                 __field(__u64, fid)
391                 __field(__u32, tid)
392                 __field(__u64, sesid)
393                 __field(__u64, offset)
394                 __field(__u32, len)
395         ),
396         TP_fast_assign(
397                 __entry->xid = xid;
398                 __entry->fid = fid;
399                 __entry->tid = tid;
400                 __entry->sesid = sesid;
401                 __entry->offset = offset;
402                 __entry->len = len;
403         ),
404         TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx len=0x%x",
405                 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
406                 __entry->offset, __entry->len)
407 )
408
409 #define DEFINE_SMB3_OTHER_DONE_EVENT(name)         \
410 DEFINE_EVENT(smb3_other_done_class, smb3_##name,   \
411         TP_PROTO(unsigned int xid,              \
412                 __u64   fid,                    \
413                 __u32   tid,                    \
414                 __u64   sesid,                  \
415                 __u64   offset,                 \
416                 __u32   len),                   \
417         TP_ARGS(xid, fid, tid, sesid, offset, len))
418
419 DEFINE_SMB3_OTHER_DONE_EVENT(query_dir_enter);
420 DEFINE_SMB3_OTHER_DONE_EVENT(zero_enter);
421 DEFINE_SMB3_OTHER_DONE_EVENT(falloc_enter);
422 DEFINE_SMB3_OTHER_DONE_EVENT(query_dir_done);
423 DEFINE_SMB3_OTHER_DONE_EVENT(zero_done);
424 DEFINE_SMB3_OTHER_DONE_EVENT(falloc_done);
425
426 /* For logging successful set EOF (truncate) */
427 DECLARE_EVENT_CLASS(smb3_eof_class,
428         TP_PROTO(unsigned int xid,
429                 __u64   fid,
430                 __u32   tid,
431                 __u64   sesid,
432                 __u64   offset),
433         TP_ARGS(xid, fid, tid, sesid, offset),
434         TP_STRUCT__entry(
435                 __field(unsigned int, xid)
436                 __field(__u64, fid)
437                 __field(__u32, tid)
438                 __field(__u64, sesid)
439                 __field(__u64, offset)
440         ),
441         TP_fast_assign(
442                 __entry->xid = xid;
443                 __entry->fid = fid;
444                 __entry->tid = tid;
445                 __entry->sesid = sesid;
446                 __entry->offset = offset;
447         ),
448         TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx offset=0x%llx",
449                 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
450                 __entry->offset)
451 )
452
453 #define DEFINE_SMB3_EOF_EVENT(name)         \
454 DEFINE_EVENT(smb3_eof_class, smb3_##name,   \
455         TP_PROTO(unsigned int xid,              \
456                 __u64   fid,                    \
457                 __u32   tid,                    \
458                 __u64   sesid,                  \
459                 __u64   offset),                \
460         TP_ARGS(xid, fid, tid, sesid, offset))
461
462 DEFINE_SMB3_EOF_EVENT(set_eof);
463
464 /*
465  * For handle based calls other than read and write, and get/set info
466  */
467 DECLARE_EVENT_CLASS(smb3_fd_class,
468         TP_PROTO(unsigned int xid,
469                 __u64   fid,
470                 __u32   tid,
471                 __u64   sesid),
472         TP_ARGS(xid, fid, tid, sesid),
473         TP_STRUCT__entry(
474                 __field(unsigned int, xid)
475                 __field(__u64, fid)
476                 __field(__u32, tid)
477                 __field(__u64, sesid)
478         ),
479         TP_fast_assign(
480                 __entry->xid = xid;
481                 __entry->fid = fid;
482                 __entry->tid = tid;
483                 __entry->sesid = sesid;
484         ),
485         TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx",
486                 __entry->xid, __entry->sesid, __entry->tid, __entry->fid)
487 )
488
489 #define DEFINE_SMB3_FD_EVENT(name)          \
490 DEFINE_EVENT(smb3_fd_class, smb3_##name,    \
491         TP_PROTO(unsigned int xid,              \
492                 __u64   fid,                    \
493                 __u32   tid,                    \
494                 __u64   sesid),                 \
495         TP_ARGS(xid, fid, tid, sesid))
496
497 DEFINE_SMB3_FD_EVENT(flush_enter);
498 DEFINE_SMB3_FD_EVENT(flush_done);
499 DEFINE_SMB3_FD_EVENT(close_enter);
500 DEFINE_SMB3_FD_EVENT(close_done);
501 DEFINE_SMB3_FD_EVENT(oplock_not_found);
502
503 DECLARE_EVENT_CLASS(smb3_fd_err_class,
504         TP_PROTO(unsigned int xid,
505                 __u64   fid,
506                 __u32   tid,
507                 __u64   sesid,
508                 int     rc),
509         TP_ARGS(xid, fid, tid, sesid, rc),
510         TP_STRUCT__entry(
511                 __field(unsigned int, xid)
512                 __field(__u64, fid)
513                 __field(__u32, tid)
514                 __field(__u64, sesid)
515                 __field(int, rc)
516         ),
517         TP_fast_assign(
518                 __entry->xid = xid;
519                 __entry->fid = fid;
520                 __entry->tid = tid;
521                 __entry->sesid = sesid;
522                 __entry->rc = rc;
523         ),
524         TP_printk("\txid=%u sid=0x%llx tid=0x%x fid=0x%llx rc=%d",
525                 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
526                 __entry->rc)
527 )
528
529 #define DEFINE_SMB3_FD_ERR_EVENT(name)          \
530 DEFINE_EVENT(smb3_fd_err_class, smb3_##name,    \
531         TP_PROTO(unsigned int xid,              \
532                 __u64   fid,                    \
533                 __u32   tid,                    \
534                 __u64   sesid,                  \
535                 int     rc),                    \
536         TP_ARGS(xid, fid, tid, sesid, rc))
537
538 DEFINE_SMB3_FD_ERR_EVENT(flush_err);
539 DEFINE_SMB3_FD_ERR_EVENT(lock_err);
540 DEFINE_SMB3_FD_ERR_EVENT(close_err);
541
542 /*
543  * For handle based query/set info calls
544  */
545 DECLARE_EVENT_CLASS(smb3_inf_enter_class,
546         TP_PROTO(unsigned int xid,
547                 __u64   fid,
548                 __u32   tid,
549                 __u64   sesid,
550                 __u8    infclass,
551                 __u32   type),
552         TP_ARGS(xid, fid, tid, sesid, infclass, type),
553         TP_STRUCT__entry(
554                 __field(unsigned int, xid)
555                 __field(__u64, fid)
556                 __field(__u32, tid)
557                 __field(__u64, sesid)
558                 __field(__u8, infclass)
559                 __field(__u32, type)
560         ),
561         TP_fast_assign(
562                 __entry->xid = xid;
563                 __entry->fid = fid;
564                 __entry->tid = tid;
565                 __entry->sesid = sesid;
566                 __entry->infclass = infclass;
567                 __entry->type = type;
568         ),
569         TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x",
570                 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
571                 __entry->infclass, __entry->type)
572 )
573
574 #define DEFINE_SMB3_INF_ENTER_EVENT(name)          \
575 DEFINE_EVENT(smb3_inf_enter_class, smb3_##name,    \
576         TP_PROTO(unsigned int xid,              \
577                 __u64   fid,                    \
578                 __u32   tid,                    \
579                 __u64   sesid,                  \
580                 __u8    infclass,               \
581                 __u32   type),                  \
582         TP_ARGS(xid, fid, tid, sesid, infclass, type))
583
584 DEFINE_SMB3_INF_ENTER_EVENT(query_info_enter);
585 DEFINE_SMB3_INF_ENTER_EVENT(query_info_done);
586 DEFINE_SMB3_INF_ENTER_EVENT(notify_enter);
587 DEFINE_SMB3_INF_ENTER_EVENT(notify_done);
588
589 DECLARE_EVENT_CLASS(smb3_inf_err_class,
590         TP_PROTO(unsigned int xid,
591                 __u64   fid,
592                 __u32   tid,
593                 __u64   sesid,
594                 __u8    infclass,
595                 __u32   type,
596                 int     rc),
597         TP_ARGS(xid, fid, tid, sesid, infclass, type, rc),
598         TP_STRUCT__entry(
599                 __field(unsigned int, xid)
600                 __field(__u64, fid)
601                 __field(__u32, tid)
602                 __field(__u64, sesid)
603                 __field(__u8, infclass)
604                 __field(__u32, type)
605                 __field(int, rc)
606         ),
607         TP_fast_assign(
608                 __entry->xid = xid;
609                 __entry->fid = fid;
610                 __entry->tid = tid;
611                 __entry->sesid = sesid;
612                 __entry->infclass = infclass;
613                 __entry->type = type;
614                 __entry->rc = rc;
615         ),
616         TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx class=%u type=0x%x rc=%d",
617                 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
618                 __entry->infclass, __entry->type, __entry->rc)
619 )
620
621 #define DEFINE_SMB3_INF_ERR_EVENT(name)          \
622 DEFINE_EVENT(smb3_inf_err_class, smb3_##name,    \
623         TP_PROTO(unsigned int xid,              \
624                 __u64   fid,                    \
625                 __u32   tid,                    \
626                 __u64   sesid,                  \
627                 __u8    infclass,               \
628                 __u32   type,                   \
629                 int     rc),                    \
630         TP_ARGS(xid, fid, tid, sesid, infclass, type, rc))
631
632 DEFINE_SMB3_INF_ERR_EVENT(query_info_err);
633 DEFINE_SMB3_INF_ERR_EVENT(set_info_err);
634 DEFINE_SMB3_INF_ERR_EVENT(notify_err);
635 DEFINE_SMB3_INF_ERR_EVENT(fsctl_err);
636
637 DECLARE_EVENT_CLASS(smb3_inf_compound_enter_class,
638         TP_PROTO(unsigned int xid,
639                 __u32   tid,
640                 __u64   sesid,
641                 const char *full_path),
642         TP_ARGS(xid, tid, sesid, full_path),
643         TP_STRUCT__entry(
644                 __field(unsigned int, xid)
645                 __field(__u32, tid)
646                 __field(__u64, sesid)
647                 __string(path, full_path)
648         ),
649         TP_fast_assign(
650                 __entry->xid = xid;
651                 __entry->tid = tid;
652                 __entry->sesid = sesid;
653                 __assign_str(path);
654         ),
655         TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s",
656                 __entry->xid, __entry->sesid, __entry->tid,
657                 __get_str(path))
658 )
659
660 #define DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(name)     \
661 DEFINE_EVENT(smb3_inf_compound_enter_class, smb3_##name,    \
662         TP_PROTO(unsigned int xid,              \
663                 __u32   tid,                    \
664                 __u64   sesid,                  \
665                 const char *full_path),         \
666         TP_ARGS(xid, tid, sesid, full_path))
667
668 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_info_compound_enter);
669 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter);
670 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter);
671 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter);
672 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter);
673 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter);
674 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter);
675 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_reparse_compound_enter);
676 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(get_reparse_compound_enter);
677 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter);
678 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter);
679 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(tdis_enter);
680 DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mknod_enter);
681
682 DECLARE_EVENT_CLASS(smb3_inf_compound_done_class,
683         TP_PROTO(unsigned int xid,
684                 __u32   tid,
685                 __u64   sesid),
686         TP_ARGS(xid, tid, sesid),
687         TP_STRUCT__entry(
688                 __field(unsigned int, xid)
689                 __field(__u32, tid)
690                 __field(__u64, sesid)
691         ),
692         TP_fast_assign(
693                 __entry->xid = xid;
694                 __entry->tid = tid;
695                 __entry->sesid = sesid;
696         ),
697         TP_printk("xid=%u sid=0x%llx tid=0x%x",
698                 __entry->xid, __entry->sesid, __entry->tid)
699 )
700
701 #define DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(name)     \
702 DEFINE_EVENT(smb3_inf_compound_done_class, smb3_##name,    \
703         TP_PROTO(unsigned int xid,              \
704                 __u32   tid,                    \
705                 __u64   sesid),                 \
706         TP_ARGS(xid, tid, sesid))
707
708 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_info_compound_done);
709 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done);
710 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done);
711 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done);
712 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done);
713 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done);
714 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done);
715 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_reparse_compound_done);
716 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(get_reparse_compound_done);
717 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_wsl_ea_compound_done);
718 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done);
719 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done);
720 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(tdis_done);
721 DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mknod_done);
722
723 DECLARE_EVENT_CLASS(smb3_inf_compound_err_class,
724         TP_PROTO(unsigned int xid,
725                 __u32   tid,
726                 __u64   sesid,
727                 int     rc),
728         TP_ARGS(xid, tid, sesid, rc),
729         TP_STRUCT__entry(
730                 __field(unsigned int, xid)
731                 __field(__u32, tid)
732                 __field(__u64, sesid)
733                 __field(int, rc)
734         ),
735         TP_fast_assign(
736                 __entry->xid = xid;
737                 __entry->tid = tid;
738                 __entry->sesid = sesid;
739                 __entry->rc = rc;
740         ),
741         TP_printk("xid=%u sid=0x%llx tid=0x%x rc=%d",
742                 __entry->xid, __entry->sesid, __entry->tid,
743                 __entry->rc)
744 )
745
746 #define DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(name)     \
747 DEFINE_EVENT(smb3_inf_compound_err_class, smb3_##name,    \
748         TP_PROTO(unsigned int xid,              \
749                 __u32   tid,                    \
750                 __u64   sesid,                  \
751                 int rc),                        \
752         TP_ARGS(xid, tid, sesid, rc))
753
754 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_info_compound_err);
755 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err);
756 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err);
757 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err);
758 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err);
759 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err);
760 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err);
761 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_reparse_compound_err);
762 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(get_reparse_compound_err);
763 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_wsl_ea_compound_err);
764 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err);
765 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err);
766 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(tdis_err);
767 DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mknod_err);
768
769 /*
770  * For logging SMB3 Status code and Command for responses which return errors
771  */
772 DECLARE_EVENT_CLASS(smb3_cmd_err_class,
773         TP_PROTO(__u32  tid,
774                 __u64   sesid,
775                 __u16   cmd,
776                 __u64   mid,
777                 __u32   status,
778                 int     rc),
779         TP_ARGS(tid, sesid, cmd, mid, status, rc),
780         TP_STRUCT__entry(
781                 __field(__u32, tid)
782                 __field(__u64, sesid)
783                 __field(__u16, cmd)
784                 __field(__u64, mid)
785                 __field(__u32, status)
786                 __field(int, rc)
787         ),
788         TP_fast_assign(
789                 __entry->tid = tid;
790                 __entry->sesid = sesid;
791                 __entry->cmd = cmd;
792                 __entry->mid = mid;
793                 __entry->status = status;
794                 __entry->rc = rc;
795         ),
796         TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu status=0x%x rc=%d",
797                 __entry->sesid, __entry->tid, __entry->cmd, __entry->mid,
798                 __entry->status, __entry->rc)
799 )
800
801 #define DEFINE_SMB3_CMD_ERR_EVENT(name)          \
802 DEFINE_EVENT(smb3_cmd_err_class, smb3_##name,    \
803         TP_PROTO(__u32  tid,                    \
804                 __u64   sesid,                  \
805                 __u16   cmd,                    \
806                 __u64   mid,                    \
807                 __u32   status,                 \
808                 int     rc),                    \
809         TP_ARGS(tid, sesid, cmd, mid, status, rc))
810
811 DEFINE_SMB3_CMD_ERR_EVENT(cmd_err);
812
813 DECLARE_EVENT_CLASS(smb3_cmd_done_class,
814         TP_PROTO(__u32  tid,
815                 __u64   sesid,
816                 __u16   cmd,
817                 __u64   mid),
818         TP_ARGS(tid, sesid, cmd, mid),
819         TP_STRUCT__entry(
820                 __field(__u32, tid)
821                 __field(__u64, sesid)
822                 __field(__u16, cmd)
823                 __field(__u64, mid)
824         ),
825         TP_fast_assign(
826                 __entry->tid = tid;
827                 __entry->sesid = sesid;
828                 __entry->cmd = cmd;
829                 __entry->mid = mid;
830         ),
831         TP_printk("\tsid=0x%llx tid=0x%x cmd=%u mid=%llu",
832                 __entry->sesid, __entry->tid,
833                 __entry->cmd, __entry->mid)
834 )
835
836 #define DEFINE_SMB3_CMD_DONE_EVENT(name)          \
837 DEFINE_EVENT(smb3_cmd_done_class, smb3_##name,    \
838         TP_PROTO(__u32  tid,                    \
839                 __u64   sesid,                  \
840                 __u16   cmd,                    \
841                 __u64   mid),                   \
842         TP_ARGS(tid, sesid, cmd, mid))
843
844 DEFINE_SMB3_CMD_DONE_EVENT(cmd_enter);
845 DEFINE_SMB3_CMD_DONE_EVENT(cmd_done);
846 DEFINE_SMB3_CMD_DONE_EVENT(ses_expired);
847
848 DECLARE_EVENT_CLASS(smb3_mid_class,
849         TP_PROTO(__u16  cmd,
850                 __u64   mid,
851                 __u32   pid,
852                 unsigned long when_sent,
853                 unsigned long when_received),
854         TP_ARGS(cmd, mid, pid, when_sent, when_received),
855         TP_STRUCT__entry(
856                 __field(__u16, cmd)
857                 __field(__u64, mid)
858                 __field(__u32, pid)
859                 __field(unsigned long, when_sent)
860                 __field(unsigned long, when_received)
861         ),
862         TP_fast_assign(
863                 __entry->cmd = cmd;
864                 __entry->mid = mid;
865                 __entry->pid = pid;
866                 __entry->when_sent = when_sent;
867                 __entry->when_received = when_received;
868         ),
869         TP_printk("\tcmd=%u mid=%llu pid=%u, when_sent=%lu when_rcv=%lu",
870                 __entry->cmd, __entry->mid, __entry->pid, __entry->when_sent,
871                 __entry->when_received)
872 )
873
874 #define DEFINE_SMB3_MID_EVENT(name)          \
875 DEFINE_EVENT(smb3_mid_class, smb3_##name,    \
876         TP_PROTO(__u16  cmd,                    \
877                 __u64   mid,                    \
878                 __u32   pid,                    \
879                 unsigned long when_sent,        \
880                 unsigned long when_received),   \
881         TP_ARGS(cmd, mid, pid, when_sent, when_received))
882
883 DEFINE_SMB3_MID_EVENT(slow_rsp);
884
885 DECLARE_EVENT_CLASS(smb3_exit_err_class,
886         TP_PROTO(unsigned int xid,
887                 const char *func_name,
888                 int     rc),
889         TP_ARGS(xid, func_name, rc),
890         TP_STRUCT__entry(
891                 __field(unsigned int, xid)
892                 __string(func_name, func_name)
893                 __field(int, rc)
894         ),
895         TP_fast_assign(
896                 __entry->xid = xid;
897                 __assign_str(func_name);
898                 __entry->rc = rc;
899         ),
900         TP_printk("\t%s: xid=%u rc=%d",
901                 __get_str(func_name), __entry->xid, __entry->rc)
902 )
903
904 #define DEFINE_SMB3_EXIT_ERR_EVENT(name)          \
905 DEFINE_EVENT(smb3_exit_err_class, smb3_##name,    \
906         TP_PROTO(unsigned int xid,              \
907                 const char *func_name,          \
908                 int     rc),                    \
909         TP_ARGS(xid, func_name, rc))
910
911 DEFINE_SMB3_EXIT_ERR_EVENT(exit_err);
912
913
914 DECLARE_EVENT_CLASS(smb3_sync_err_class,
915         TP_PROTO(unsigned long ino,
916                 int     rc),
917         TP_ARGS(ino, rc),
918         TP_STRUCT__entry(
919                 __field(unsigned long, ino)
920                 __field(int, rc)
921         ),
922         TP_fast_assign(
923                 __entry->ino = ino;
924                 __entry->rc = rc;
925         ),
926         TP_printk("\tino=%lu rc=%d",
927                 __entry->ino, __entry->rc)
928 )
929
930 #define DEFINE_SMB3_SYNC_ERR_EVENT(name)          \
931 DEFINE_EVENT(smb3_sync_err_class, cifs_##name,    \
932         TP_PROTO(unsigned long ino,             \
933                 int     rc),                    \
934         TP_ARGS(ino, rc))
935
936 DEFINE_SMB3_SYNC_ERR_EVENT(fsync_err);
937 DEFINE_SMB3_SYNC_ERR_EVENT(flush_err);
938
939
940 DECLARE_EVENT_CLASS(smb3_enter_exit_class,
941         TP_PROTO(unsigned int xid,
942                 const char *func_name),
943         TP_ARGS(xid, func_name),
944         TP_STRUCT__entry(
945                 __field(unsigned int, xid)
946                 __string(func_name, func_name)
947         ),
948         TP_fast_assign(
949                 __entry->xid = xid;
950                 __assign_str(func_name);
951         ),
952         TP_printk("\t%s: xid=%u",
953                 __get_str(func_name), __entry->xid)
954 )
955
956 #define DEFINE_SMB3_ENTER_EXIT_EVENT(name)        \
957 DEFINE_EVENT(smb3_enter_exit_class, smb3_##name,  \
958         TP_PROTO(unsigned int xid,              \
959                 const char *func_name),         \
960         TP_ARGS(xid, func_name))
961
962 DEFINE_SMB3_ENTER_EXIT_EVENT(enter);
963 DEFINE_SMB3_ENTER_EXIT_EVENT(exit_done);
964
965 /*
966  * For SMB2/SMB3 tree connect
967  */
968
969 DECLARE_EVENT_CLASS(smb3_tcon_class,
970         TP_PROTO(unsigned int xid,
971                 __u32   tid,
972                 __u64   sesid,
973                 const char *unc_name,
974                 int     rc),
975         TP_ARGS(xid, tid, sesid, unc_name, rc),
976         TP_STRUCT__entry(
977                 __field(unsigned int, xid)
978                 __field(__u32, tid)
979                 __field(__u64, sesid)
980                 __string(name, unc_name)
981                 __field(int, rc)
982         ),
983         TP_fast_assign(
984                 __entry->xid = xid;
985                 __entry->tid = tid;
986                 __entry->sesid = sesid;
987                 __assign_str(name);
988                 __entry->rc = rc;
989         ),
990         TP_printk("xid=%u sid=0x%llx tid=0x%x unc_name=%s rc=%d",
991                 __entry->xid, __entry->sesid, __entry->tid,
992                 __get_str(name), __entry->rc)
993 )
994
995 #define DEFINE_SMB3_TCON_EVENT(name)          \
996 DEFINE_EVENT(smb3_tcon_class, smb3_##name,    \
997         TP_PROTO(unsigned int xid,              \
998                 __u32   tid,                    \
999                 __u64   sesid,                  \
1000                 const char *unc_name,           \
1001                 int     rc),                    \
1002         TP_ARGS(xid, tid, sesid, unc_name, rc))
1003
1004 DEFINE_SMB3_TCON_EVENT(tcon);
1005 DEFINE_SMB3_TCON_EVENT(qfs_done);
1006
1007 /*
1008  * For smb2/smb3 open (including create and mkdir) calls
1009  */
1010
1011 DECLARE_EVENT_CLASS(smb3_open_enter_class,
1012         TP_PROTO(unsigned int xid,
1013                 __u32   tid,
1014                 __u64   sesid,
1015                 const char *full_path,
1016                 int     create_options,
1017                 int     desired_access),
1018         TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access),
1019         TP_STRUCT__entry(
1020                 __field(unsigned int, xid)
1021                 __field(__u32, tid)
1022                 __field(__u64, sesid)
1023                 __string(path, full_path)
1024                 __field(int, create_options)
1025                 __field(int, desired_access)
1026         ),
1027         TP_fast_assign(
1028                 __entry->xid = xid;
1029                 __entry->tid = tid;
1030                 __entry->sesid = sesid;
1031                 __assign_str(path);
1032                 __entry->create_options = create_options;
1033                 __entry->desired_access = desired_access;
1034         ),
1035         TP_printk("xid=%u sid=0x%llx tid=0x%x path=%s cr_opts=0x%x des_access=0x%x",
1036                 __entry->xid, __entry->sesid, __entry->tid, __get_str(path),
1037                 __entry->create_options, __entry->desired_access)
1038 )
1039
1040 #define DEFINE_SMB3_OPEN_ENTER_EVENT(name)        \
1041 DEFINE_EVENT(smb3_open_enter_class, smb3_##name,  \
1042         TP_PROTO(unsigned int xid,              \
1043                 __u32   tid,                    \
1044                 __u64   sesid,                  \
1045                 const char *full_path,          \
1046                 int     create_options,         \
1047                 int     desired_access),        \
1048         TP_ARGS(xid, tid, sesid, full_path, create_options, desired_access))
1049
1050 DEFINE_SMB3_OPEN_ENTER_EVENT(open_enter);
1051 DEFINE_SMB3_OPEN_ENTER_EVENT(posix_mkdir_enter);
1052
1053 DECLARE_EVENT_CLASS(smb3_open_err_class,
1054         TP_PROTO(unsigned int xid,
1055                 __u32   tid,
1056                 __u64   sesid,
1057                 int     create_options,
1058                 int     desired_access,
1059                 int     rc),
1060         TP_ARGS(xid, tid, sesid, create_options, desired_access, rc),
1061         TP_STRUCT__entry(
1062                 __field(unsigned int, xid)
1063                 __field(__u32, tid)
1064                 __field(__u64, sesid)
1065                 __field(int,   create_options)
1066                 __field(int, desired_access)
1067                 __field(int, rc)
1068         ),
1069         TP_fast_assign(
1070                 __entry->xid = xid;
1071                 __entry->tid = tid;
1072                 __entry->sesid = sesid;
1073                 __entry->create_options = create_options;
1074                 __entry->desired_access = desired_access;
1075                 __entry->rc = rc;
1076         ),
1077         TP_printk("xid=%u sid=0x%llx tid=0x%x cr_opts=0x%x des_access=0x%x rc=%d",
1078                 __entry->xid, __entry->sesid, __entry->tid,
1079                 __entry->create_options, __entry->desired_access, __entry->rc)
1080 )
1081
1082 #define DEFINE_SMB3_OPEN_ERR_EVENT(name)          \
1083 DEFINE_EVENT(smb3_open_err_class, smb3_##name,    \
1084         TP_PROTO(unsigned int xid,              \
1085                 __u32   tid,                    \
1086                 __u64   sesid,                  \
1087                 int     create_options,         \
1088                 int     desired_access,         \
1089                 int     rc),                    \
1090         TP_ARGS(xid, tid, sesid, create_options, desired_access, rc))
1091
1092 DEFINE_SMB3_OPEN_ERR_EVENT(open_err);
1093 DEFINE_SMB3_OPEN_ERR_EVENT(posix_mkdir_err);
1094
1095 DECLARE_EVENT_CLASS(smb3_open_done_class,
1096         TP_PROTO(unsigned int xid,
1097                 __u64   fid,
1098                 __u32   tid,
1099                 __u64   sesid,
1100                 int     create_options,
1101                 int     desired_access),
1102         TP_ARGS(xid, fid, tid, sesid, create_options, desired_access),
1103         TP_STRUCT__entry(
1104                 __field(unsigned int, xid)
1105                 __field(__u64, fid)
1106                 __field(__u32, tid)
1107                 __field(__u64, sesid)
1108                 __field(int, create_options)
1109                 __field(int, desired_access)
1110         ),
1111         TP_fast_assign(
1112                 __entry->xid = xid;
1113                 __entry->fid = fid;
1114                 __entry->tid = tid;
1115                 __entry->sesid = sesid;
1116                 __entry->create_options = create_options;
1117                 __entry->desired_access = desired_access;
1118         ),
1119         TP_printk("xid=%u sid=0x%llx tid=0x%x fid=0x%llx cr_opts=0x%x des_access=0x%x",
1120                 __entry->xid, __entry->sesid, __entry->tid, __entry->fid,
1121                 __entry->create_options, __entry->desired_access)
1122 )
1123
1124 #define DEFINE_SMB3_OPEN_DONE_EVENT(name)        \
1125 DEFINE_EVENT(smb3_open_done_class, smb3_##name,  \
1126         TP_PROTO(unsigned int xid,              \
1127                 __u64   fid,                    \
1128                 __u32   tid,                    \
1129                 __u64   sesid,                  \
1130                 int     create_options,         \
1131                 int     desired_access),        \
1132         TP_ARGS(xid, fid, tid, sesid, create_options, desired_access))
1133
1134 DEFINE_SMB3_OPEN_DONE_EVENT(open_done);
1135 DEFINE_SMB3_OPEN_DONE_EVENT(posix_mkdir_done);
1136
1137
1138 DECLARE_EVENT_CLASS(smb3_lease_done_class,
1139         TP_PROTO(__u32  lease_state,
1140                 __u32   tid,
1141                 __u64   sesid,
1142                 __u64   lease_key_low,
1143                 __u64   lease_key_high),
1144         TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high),
1145         TP_STRUCT__entry(
1146                 __field(__u32, lease_state)
1147                 __field(__u32, tid)
1148                 __field(__u64, sesid)
1149                 __field(__u64, lease_key_low)
1150                 __field(__u64, lease_key_high)
1151         ),
1152         TP_fast_assign(
1153                 __entry->lease_state = lease_state;
1154                 __entry->tid = tid;
1155                 __entry->sesid = sesid;
1156                 __entry->lease_key_low = lease_key_low;
1157                 __entry->lease_key_high = lease_key_high;
1158         ),
1159         TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x",
1160                 __entry->sesid, __entry->tid, __entry->lease_key_high,
1161                 __entry->lease_key_low, __entry->lease_state)
1162 )
1163
1164 #define DEFINE_SMB3_LEASE_DONE_EVENT(name)        \
1165 DEFINE_EVENT(smb3_lease_done_class, smb3_##name,  \
1166         TP_PROTO(__u32  lease_state,            \
1167                 __u32   tid,                    \
1168                 __u64   sesid,                  \
1169                 __u64   lease_key_low,          \
1170                 __u64   lease_key_high),        \
1171         TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high))
1172
1173 DEFINE_SMB3_LEASE_DONE_EVENT(lease_done);
1174 DEFINE_SMB3_LEASE_DONE_EVENT(lease_not_found);
1175
1176 DECLARE_EVENT_CLASS(smb3_lease_err_class,
1177         TP_PROTO(__u32  lease_state,
1178                 __u32   tid,
1179                 __u64   sesid,
1180                 __u64   lease_key_low,
1181                 __u64   lease_key_high,
1182                 int     rc),
1183         TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc),
1184         TP_STRUCT__entry(
1185                 __field(__u32, lease_state)
1186                 __field(__u32, tid)
1187                 __field(__u64, sesid)
1188                 __field(__u64, lease_key_low)
1189                 __field(__u64, lease_key_high)
1190                 __field(int, rc)
1191         ),
1192         TP_fast_assign(
1193                 __entry->lease_state = lease_state;
1194                 __entry->tid = tid;
1195                 __entry->sesid = sesid;
1196                 __entry->lease_key_low = lease_key_low;
1197                 __entry->lease_key_high = lease_key_high;
1198                 __entry->rc = rc;
1199         ),
1200         TP_printk("sid=0x%llx tid=0x%x lease_key=0x%llx%llx lease_state=0x%x rc=%d",
1201                 __entry->sesid, __entry->tid, __entry->lease_key_high,
1202                 __entry->lease_key_low, __entry->lease_state, __entry->rc)
1203 )
1204
1205 #define DEFINE_SMB3_LEASE_ERR_EVENT(name)        \
1206 DEFINE_EVENT(smb3_lease_err_class, smb3_##name,  \
1207         TP_PROTO(__u32  lease_state,            \
1208                 __u32   tid,                    \
1209                 __u64   sesid,                  \
1210                 __u64   lease_key_low,          \
1211                 __u64   lease_key_high,         \
1212                 int     rc),                    \
1213         TP_ARGS(lease_state, tid, sesid, lease_key_low, lease_key_high, rc))
1214
1215 DEFINE_SMB3_LEASE_ERR_EVENT(lease_err);
1216
1217 DECLARE_EVENT_CLASS(smb3_connect_class,
1218         TP_PROTO(char *hostname,
1219                 __u64 conn_id,
1220                 const struct __kernel_sockaddr_storage *dst_addr),
1221         TP_ARGS(hostname, conn_id, dst_addr),
1222         TP_STRUCT__entry(
1223                 __string(hostname, hostname)
1224                 __field(__u64, conn_id)
1225                 __array(__u8, dst_addr, sizeof(struct sockaddr_storage))
1226         ),
1227         TP_fast_assign(
1228                 struct sockaddr_storage *pss = NULL;
1229
1230                 __entry->conn_id = conn_id;
1231                 pss = (struct sockaddr_storage *)__entry->dst_addr;
1232                 *pss = *dst_addr;
1233                 __assign_str(hostname);
1234         ),
1235         TP_printk("conn_id=0x%llx server=%s addr=%pISpsfc",
1236                 __entry->conn_id,
1237                 __get_str(hostname),
1238                 __entry->dst_addr)
1239 )
1240
1241 #define DEFINE_SMB3_CONNECT_EVENT(name)        \
1242 DEFINE_EVENT(smb3_connect_class, smb3_##name,  \
1243         TP_PROTO(char *hostname,                \
1244                 __u64 conn_id,                  \
1245                 const struct __kernel_sockaddr_storage *addr),  \
1246         TP_ARGS(hostname, conn_id, addr))
1247
1248 DEFINE_SMB3_CONNECT_EVENT(connect_done);
1249 DEFINE_SMB3_CONNECT_EVENT(smbd_connect_done);
1250 DEFINE_SMB3_CONNECT_EVENT(smbd_connect_err);
1251
1252 DECLARE_EVENT_CLASS(smb3_connect_err_class,
1253         TP_PROTO(char *hostname, __u64 conn_id,
1254                 const struct __kernel_sockaddr_storage *dst_addr, int rc),
1255         TP_ARGS(hostname, conn_id, dst_addr, rc),
1256         TP_STRUCT__entry(
1257                 __string(hostname, hostname)
1258                 __field(__u64, conn_id)
1259                 __array(__u8, dst_addr, sizeof(struct sockaddr_storage))
1260                 __field(int, rc)
1261         ),
1262         TP_fast_assign(
1263                 struct sockaddr_storage *pss = NULL;
1264
1265                 __entry->conn_id = conn_id;
1266                 __entry->rc = rc;
1267                 pss = (struct sockaddr_storage *)__entry->dst_addr;
1268                 *pss = *dst_addr;
1269                 __assign_str(hostname);
1270         ),
1271         TP_printk("rc=%d conn_id=0x%llx server=%s addr=%pISpsfc",
1272                 __entry->rc,
1273                 __entry->conn_id,
1274                 __get_str(hostname),
1275                 __entry->dst_addr)
1276 )
1277
1278 #define DEFINE_SMB3_CONNECT_ERR_EVENT(name)        \
1279 DEFINE_EVENT(smb3_connect_err_class, smb3_##name,  \
1280         TP_PROTO(char *hostname,                \
1281                 __u64 conn_id,                  \
1282                 const struct __kernel_sockaddr_storage *addr,   \
1283                 int rc),                        \
1284         TP_ARGS(hostname, conn_id, addr, rc))
1285
1286 DEFINE_SMB3_CONNECT_ERR_EVENT(connect_err);
1287
1288 DECLARE_EVENT_CLASS(smb3_sess_setup_err_class,
1289         TP_PROTO(char *hostname, char *username, __u64 conn_id,
1290                 const struct __kernel_sockaddr_storage *dst_addr, int rc),
1291         TP_ARGS(hostname, username, conn_id, dst_addr, rc),
1292         TP_STRUCT__entry(
1293                 __string(hostname, hostname)
1294                 __string(username, username)
1295                 __field(__u64, conn_id)
1296                 __array(__u8, dst_addr, sizeof(struct sockaddr_storage))
1297                 __field(int, rc)
1298         ),
1299         TP_fast_assign(
1300                 struct sockaddr_storage *pss = NULL;
1301
1302                 __entry->conn_id = conn_id;
1303                 __entry->rc = rc;
1304                 pss = (struct sockaddr_storage *)__entry->dst_addr;
1305                 *pss = *dst_addr;
1306                 __assign_str(hostname);
1307                 __assign_str(username);
1308         ),
1309         TP_printk("rc=%d user=%s conn_id=0x%llx server=%s addr=%pISpsfc",
1310                 __entry->rc,
1311                 __get_str(username),
1312                 __entry->conn_id,
1313                 __get_str(hostname),
1314                 __entry->dst_addr)
1315 )
1316
1317 #define DEFINE_SMB3_SES_SETUP_ERR_EVENT(name)        \
1318 DEFINE_EVENT(smb3_sess_setup_err_class, smb3_##name,  \
1319         TP_PROTO(char *hostname,                \
1320                 char *username,                 \
1321                 __u64 conn_id,                  \
1322                 const struct __kernel_sockaddr_storage *addr,   \
1323                 int rc),                        \
1324         TP_ARGS(hostname, username, conn_id, addr, rc))
1325
1326 DEFINE_SMB3_SES_SETUP_ERR_EVENT(key_expired);
1327
1328 DECLARE_EVENT_CLASS(smb3_reconnect_class,
1329         TP_PROTO(__u64  currmid,
1330                 __u64 conn_id,
1331                 char *hostname),
1332         TP_ARGS(currmid, conn_id, hostname),
1333         TP_STRUCT__entry(
1334                 __field(__u64, currmid)
1335                 __field(__u64, conn_id)
1336                 __string(hostname, hostname)
1337         ),
1338         TP_fast_assign(
1339                 __entry->currmid = currmid;
1340                 __entry->conn_id = conn_id;
1341                 __assign_str(hostname);
1342         ),
1343         TP_printk("conn_id=0x%llx server=%s current_mid=%llu",
1344                 __entry->conn_id,
1345                 __get_str(hostname),
1346                 __entry->currmid)
1347 )
1348
1349 #define DEFINE_SMB3_RECONNECT_EVENT(name)        \
1350 DEFINE_EVENT(smb3_reconnect_class, smb3_##name,  \
1351         TP_PROTO(__u64  currmid,                \
1352                 __u64 conn_id,                  \
1353                 char *hostname),                                \
1354         TP_ARGS(currmid, conn_id, hostname))
1355
1356 DEFINE_SMB3_RECONNECT_EVENT(reconnect);
1357 DEFINE_SMB3_RECONNECT_EVENT(partial_send_reconnect);
1358
1359 DECLARE_EVENT_CLASS(smb3_ses_class,
1360         TP_PROTO(__u64  sesid),
1361         TP_ARGS(sesid),
1362         TP_STRUCT__entry(
1363                 __field(__u64, sesid)
1364         ),
1365         TP_fast_assign(
1366                 __entry->sesid = sesid;
1367         ),
1368         TP_printk("sid=0x%llx",
1369                 __entry->sesid)
1370 )
1371
1372 #define DEFINE_SMB3_SES_EVENT(name)        \
1373 DEFINE_EVENT(smb3_ses_class, smb3_##name,  \
1374         TP_PROTO(__u64  sesid),                         \
1375         TP_ARGS(sesid))
1376
1377 DEFINE_SMB3_SES_EVENT(ses_not_found);
1378
1379 DECLARE_EVENT_CLASS(smb3_ioctl_class,
1380         TP_PROTO(unsigned int xid,
1381                 __u64   fid,
1382                 unsigned int command),
1383         TP_ARGS(xid, fid, command),
1384         TP_STRUCT__entry(
1385                 __field(unsigned int, xid)
1386                 __field(__u64, fid)
1387                 __field(unsigned int, command)
1388         ),
1389         TP_fast_assign(
1390                 __entry->xid = xid;
1391                 __entry->fid = fid;
1392                 __entry->command = command;
1393         ),
1394         TP_printk("xid=%u fid=0x%llx ioctl cmd=0x%x",
1395                   __entry->xid, __entry->fid, __entry->command)
1396 )
1397
1398 #define DEFINE_SMB3_IOCTL_EVENT(name)        \
1399 DEFINE_EVENT(smb3_ioctl_class, smb3_##name,  \
1400         TP_PROTO(unsigned int xid,           \
1401                 __u64 fid,                   \
1402                 unsigned int command),       \
1403         TP_ARGS(xid, fid, command))
1404
1405 DEFINE_SMB3_IOCTL_EVENT(ioctl);
1406
1407 DECLARE_EVENT_CLASS(smb3_shutdown_class,
1408         TP_PROTO(__u32 flags,
1409                 __u32 tid),
1410         TP_ARGS(flags, tid),
1411         TP_STRUCT__entry(
1412                 __field(__u32, flags)
1413                 __field(__u32, tid)
1414         ),
1415         TP_fast_assign(
1416                 __entry->flags = flags;
1417                 __entry->tid = tid;
1418         ),
1419         TP_printk("flags=0x%x tid=0x%x",
1420                   __entry->flags, __entry->tid)
1421 )
1422
1423 #define DEFINE_SMB3_SHUTDOWN_EVENT(name)        \
1424 DEFINE_EVENT(smb3_shutdown_class, smb3_##name,  \
1425         TP_PROTO(__u32 flags,                \
1426                 __u32 tid),                  \
1427         TP_ARGS(flags, tid))
1428
1429 DEFINE_SMB3_SHUTDOWN_EVENT(shutdown_enter);
1430 DEFINE_SMB3_SHUTDOWN_EVENT(shutdown_done);
1431
1432 DECLARE_EVENT_CLASS(smb3_shutdown_err_class,
1433         TP_PROTO(int rc,
1434                 __u32 flags,
1435                 __u32 tid),
1436         TP_ARGS(rc, flags, tid),
1437         TP_STRUCT__entry(
1438                 __field(int, rc)
1439                 __field(__u32, flags)
1440                 __field(__u32, tid)
1441         ),
1442         TP_fast_assign(
1443                 __entry->rc = rc;
1444                 __entry->flags = flags;
1445                 __entry->tid = tid;
1446         ),
1447         TP_printk("rc=%d flags=0x%x tid=0x%x",
1448                 __entry->rc, __entry->flags, __entry->tid)
1449 )
1450
1451 #define DEFINE_SMB3_SHUTDOWN_ERR_EVENT(name)        \
1452 DEFINE_EVENT(smb3_shutdown_err_class, smb3_##name,  \
1453         TP_PROTO(int rc,                     \
1454                 __u32 flags,                 \
1455                 __u32 tid),                  \
1456         TP_ARGS(rc, flags, tid))
1457
1458 DEFINE_SMB3_SHUTDOWN_ERR_EVENT(shutdown_err);
1459
1460 DECLARE_EVENT_CLASS(smb3_credit_class,
1461         TP_PROTO(__u64  currmid,
1462                 __u64 conn_id,
1463                 char *hostname,
1464                 int credits,
1465                 int credits_to_add,
1466                 int in_flight),
1467         TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight),
1468         TP_STRUCT__entry(
1469                 __field(__u64, currmid)
1470                 __field(__u64, conn_id)
1471                 __string(hostname, hostname)
1472                 __field(int, credits)
1473                 __field(int, credits_to_add)
1474                 __field(int, in_flight)
1475         ),
1476         TP_fast_assign(
1477                 __entry->currmid = currmid;
1478                 __entry->conn_id = conn_id;
1479                 __assign_str(hostname);
1480                 __entry->credits = credits;
1481                 __entry->credits_to_add = credits_to_add;
1482                 __entry->in_flight = in_flight;
1483         ),
1484         TP_printk("conn_id=0x%llx server=%s current_mid=%llu "
1485                         "credits=%d credit_change=%d in_flight=%d",
1486                 __entry->conn_id,
1487                 __get_str(hostname),
1488                 __entry->currmid,
1489                 __entry->credits,
1490                 __entry->credits_to_add,
1491                 __entry->in_flight)
1492 )
1493
1494 #define DEFINE_SMB3_CREDIT_EVENT(name)        \
1495 DEFINE_EVENT(smb3_credit_class, smb3_##name,  \
1496         TP_PROTO(__u64  currmid,                \
1497                 __u64 conn_id,                  \
1498                 char *hostname,                 \
1499                 int  credits,                   \
1500                 int  credits_to_add,    \
1501                 int in_flight),                 \
1502         TP_ARGS(currmid, conn_id, hostname, credits, credits_to_add, in_flight))
1503
1504 DEFINE_SMB3_CREDIT_EVENT(reconnect_with_invalid_credits);
1505 DEFINE_SMB3_CREDIT_EVENT(reconnect_detected);
1506 DEFINE_SMB3_CREDIT_EVENT(credit_timeout);
1507 DEFINE_SMB3_CREDIT_EVENT(insufficient_credits);
1508 DEFINE_SMB3_CREDIT_EVENT(too_many_credits);
1509 DEFINE_SMB3_CREDIT_EVENT(add_credits);
1510 DEFINE_SMB3_CREDIT_EVENT(adj_credits);
1511 DEFINE_SMB3_CREDIT_EVENT(hdr_credits);
1512 DEFINE_SMB3_CREDIT_EVENT(nblk_credits);
1513 DEFINE_SMB3_CREDIT_EVENT(pend_credits);
1514 DEFINE_SMB3_CREDIT_EVENT(wait_credits);
1515 DEFINE_SMB3_CREDIT_EVENT(waitff_credits);
1516 DEFINE_SMB3_CREDIT_EVENT(overflow_credits);
1517 DEFINE_SMB3_CREDIT_EVENT(set_credits);
1518
1519
1520 TRACE_EVENT(smb3_tcon_ref,
1521             TP_PROTO(unsigned int tcon_debug_id, int ref,
1522                      enum smb3_tcon_ref_trace trace),
1523             TP_ARGS(tcon_debug_id, ref, trace),
1524             TP_STRUCT__entry(
1525                     __field(unsigned int,               tcon)
1526                     __field(int,                        ref)
1527                     __field(enum smb3_tcon_ref_trace,   trace)
1528                              ),
1529             TP_fast_assign(
1530                     __entry->tcon       = tcon_debug_id;
1531                     __entry->ref        = ref;
1532                     __entry->trace      = trace;
1533                            ),
1534             TP_printk("TC=%08x %s r=%u",
1535                       __entry->tcon,
1536                       __print_symbolic(__entry->trace, smb3_tcon_ref_traces),
1537                       __entry->ref)
1538             );
1539
1540 TRACE_EVENT(smb3_rw_credits,
1541             TP_PROTO(unsigned int rreq_debug_id,
1542                      unsigned int subreq_debug_index,
1543                      unsigned int subreq_credits,
1544                      unsigned int server_credits,
1545                      int server_in_flight,
1546                      int credit_change,
1547                      enum smb3_rw_credits_trace trace),
1548             TP_ARGS(rreq_debug_id, subreq_debug_index, subreq_credits,
1549                     server_credits, server_in_flight, credit_change, trace),
1550             TP_STRUCT__entry(
1551                     __field(unsigned int, rreq_debug_id)
1552                     __field(unsigned int, subreq_debug_index)
1553                     __field(unsigned int, subreq_credits)
1554                     __field(unsigned int, server_credits)
1555                     __field(int,          in_flight)
1556                     __field(int,          credit_change)
1557                     __field(enum smb3_rw_credits_trace, trace)
1558                              ),
1559             TP_fast_assign(
1560                     __entry->rreq_debug_id      = rreq_debug_id;
1561                     __entry->subreq_debug_index = subreq_debug_index;
1562                     __entry->subreq_credits     = subreq_credits;
1563                     __entry->server_credits     = server_credits;
1564                     __entry->in_flight          = server_in_flight;
1565                     __entry->credit_change      = credit_change;
1566                     __entry->trace              = trace;
1567                            ),
1568             TP_printk("R=%08x[%x] %s cred=%u chg=%d pool=%u ifl=%d",
1569                       __entry->rreq_debug_id, __entry->subreq_debug_index,
1570                       __print_symbolic(__entry->trace, smb3_rw_credits_traces),
1571                       __entry->subreq_credits, __entry->credit_change,
1572                       __entry->server_credits, __entry->in_flight)
1573             );
1574
1575
1576 #undef EM
1577 #undef E_
1578 #endif /* _CIFS_TRACE_H */
1579
1580 #undef TRACE_INCLUDE_PATH
1581 #define TRACE_INCLUDE_PATH .
1582 #define TRACE_INCLUDE_FILE trace
1583 #include <trace/define_trace.h>
This page took 0.111814 seconds and 4 git commands to generate.