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