hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/fs/nfs/nfstrace.h
....@@ -11,6 +11,16 @@
1111 #include <linux/tracepoint.h>
1212 #include <linux/iversion.h>
1313
14
+TRACE_DEFINE_ENUM(DT_UNKNOWN);
15
+TRACE_DEFINE_ENUM(DT_FIFO);
16
+TRACE_DEFINE_ENUM(DT_CHR);
17
+TRACE_DEFINE_ENUM(DT_DIR);
18
+TRACE_DEFINE_ENUM(DT_BLK);
19
+TRACE_DEFINE_ENUM(DT_REG);
20
+TRACE_DEFINE_ENUM(DT_LNK);
21
+TRACE_DEFINE_ENUM(DT_SOCK);
22
+TRACE_DEFINE_ENUM(DT_WHT);
23
+
1424 #define nfs_show_file_type(ftype) \
1525 __print_symbolic(ftype, \
1626 { DT_UNKNOWN, "UNKNOWN" }, \
....@@ -23,25 +33,58 @@
2333 { DT_SOCK, "SOCK" }, \
2434 { DT_WHT, "WHT" })
2535
36
+TRACE_DEFINE_ENUM(NFS_INO_INVALID_DATA);
37
+TRACE_DEFINE_ENUM(NFS_INO_INVALID_ATIME);
38
+TRACE_DEFINE_ENUM(NFS_INO_INVALID_ACCESS);
39
+TRACE_DEFINE_ENUM(NFS_INO_INVALID_ACL);
40
+TRACE_DEFINE_ENUM(NFS_INO_REVAL_PAGECACHE);
41
+TRACE_DEFINE_ENUM(NFS_INO_REVAL_FORCED);
42
+TRACE_DEFINE_ENUM(NFS_INO_INVALID_LABEL);
43
+TRACE_DEFINE_ENUM(NFS_INO_INVALID_CHANGE);
44
+TRACE_DEFINE_ENUM(NFS_INO_INVALID_CTIME);
45
+TRACE_DEFINE_ENUM(NFS_INO_INVALID_MTIME);
46
+TRACE_DEFINE_ENUM(NFS_INO_INVALID_SIZE);
47
+TRACE_DEFINE_ENUM(NFS_INO_INVALID_OTHER);
48
+
2649 #define nfs_show_cache_validity(v) \
2750 __print_flags(v, "|", \
28
- { NFS_INO_INVALID_ATTR, "INVALID_ATTR" }, \
2951 { NFS_INO_INVALID_DATA, "INVALID_DATA" }, \
3052 { NFS_INO_INVALID_ATIME, "INVALID_ATIME" }, \
3153 { NFS_INO_INVALID_ACCESS, "INVALID_ACCESS" }, \
3254 { NFS_INO_INVALID_ACL, "INVALID_ACL" }, \
3355 { NFS_INO_REVAL_PAGECACHE, "REVAL_PAGECACHE" }, \
3456 { NFS_INO_REVAL_FORCED, "REVAL_FORCED" }, \
35
- { NFS_INO_INVALID_LABEL, "INVALID_LABEL" })
57
+ { NFS_INO_INVALID_LABEL, "INVALID_LABEL" }, \
58
+ { NFS_INO_INVALID_CHANGE, "INVALID_CHANGE" }, \
59
+ { NFS_INO_INVALID_CTIME, "INVALID_CTIME" }, \
60
+ { NFS_INO_INVALID_MTIME, "INVALID_MTIME" }, \
61
+ { NFS_INO_INVALID_SIZE, "INVALID_SIZE" }, \
62
+ { NFS_INO_INVALID_OTHER, "INVALID_OTHER" }, \
63
+ { NFS_INO_INVALID_XATTR, "INVALID_XATTR" })
64
+
65
+TRACE_DEFINE_ENUM(NFS_INO_ADVISE_RDPLUS);
66
+TRACE_DEFINE_ENUM(NFS_INO_STALE);
67
+TRACE_DEFINE_ENUM(NFS_INO_ACL_LRU_SET);
68
+TRACE_DEFINE_ENUM(NFS_INO_INVALIDATING);
69
+TRACE_DEFINE_ENUM(NFS_INO_FSCACHE);
70
+TRACE_DEFINE_ENUM(NFS_INO_FSCACHE_LOCK);
71
+TRACE_DEFINE_ENUM(NFS_INO_LAYOUTCOMMIT);
72
+TRACE_DEFINE_ENUM(NFS_INO_LAYOUTCOMMITTING);
73
+TRACE_DEFINE_ENUM(NFS_INO_LAYOUTSTATS);
74
+TRACE_DEFINE_ENUM(NFS_INO_ODIRECT);
3675
3776 #define nfs_show_nfsi_flags(v) \
3877 __print_flags(v, "|", \
39
- { 1 << NFS_INO_ADVISE_RDPLUS, "ADVISE_RDPLUS" }, \
40
- { 1 << NFS_INO_STALE, "STALE" }, \
41
- { 1 << NFS_INO_INVALIDATING, "INVALIDATING" }, \
42
- { 1 << NFS_INO_FSCACHE, "FSCACHE" }, \
43
- { 1 << NFS_INO_LAYOUTCOMMIT, "NEED_LAYOUTCOMMIT" }, \
44
- { 1 << NFS_INO_LAYOUTCOMMITTING, "LAYOUTCOMMIT" })
78
+ { BIT(NFS_INO_ADVISE_RDPLUS), "ADVISE_RDPLUS" }, \
79
+ { BIT(NFS_INO_STALE), "STALE" }, \
80
+ { BIT(NFS_INO_ACL_LRU_SET), "ACL_LRU_SET" }, \
81
+ { BIT(NFS_INO_INVALIDATING), "INVALIDATING" }, \
82
+ { BIT(NFS_INO_FSCACHE), "FSCACHE" }, \
83
+ { BIT(NFS_INO_FSCACHE_LOCK), "FSCACHE_LOCK" }, \
84
+ { BIT(NFS_INO_LAYOUTCOMMIT), "NEED_LAYOUTCOMMIT" }, \
85
+ { BIT(NFS_INO_LAYOUTCOMMITTING), "LAYOUTCOMMIT" }, \
86
+ { BIT(NFS_INO_LAYOUTSTATS), "LAYOUTSTATS" }, \
87
+ { BIT(NFS_INO_ODIRECT), "ODIRECT" })
4588
4689 DECLARE_EVENT_CLASS(nfs_inode_event,
4790 TP_PROTO(
....@@ -83,7 +126,7 @@
83126 TP_ARGS(inode, error),
84127
85128 TP_STRUCT__entry(
86
- __field(int, error)
129
+ __field(unsigned long, error)
87130 __field(dev_t, dev)
88131 __field(u32, fhandle)
89132 __field(unsigned char, type)
....@@ -96,7 +139,7 @@
96139
97140 TP_fast_assign(
98141 const struct nfs_inode *nfsi = NFS_I(inode);
99
- __entry->error = error;
142
+ __entry->error = error < 0 ? -error : 0;
100143 __entry->dev = inode->i_sb->s_dev;
101144 __entry->fileid = nfsi->fileid;
102145 __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
....@@ -108,10 +151,10 @@
108151 ),
109152
110153 TP_printk(
111
- "error=%d fileid=%02x:%02x:%llu fhandle=0x%08x "
154
+ "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x "
112155 "type=%u (%s) version=%llu size=%lld "
113
- "cache_validity=%lu (%s) nfs_flags=%ld (%s)",
114
- __entry->error,
156
+ "cache_validity=0x%lx (%s) nfs_flags=0x%lx (%s)",
157
+ -__entry->error, nfs_show_status(__entry->error),
115158 MAJOR(__entry->dev), MINOR(__entry->dev),
116159 (unsigned long long)__entry->fileid,
117160 __entry->fhandle,
....@@ -139,6 +182,7 @@
139182 int error \
140183 ), \
141184 TP_ARGS(inode, error))
185
+DEFINE_NFS_INODE_EVENT(nfs_set_inode_stale);
142186 DEFINE_NFS_INODE_EVENT(nfs_refresh_inode_enter);
143187 DEFINE_NFS_INODE_EVENT_DONE(nfs_refresh_inode_exit);
144188 DEFINE_NFS_INODE_EVENT(nfs_revalidate_inode_enter);
....@@ -156,15 +200,98 @@
156200 DEFINE_NFS_INODE_EVENT(nfs_fsync_enter);
157201 DEFINE_NFS_INODE_EVENT_DONE(nfs_fsync_exit);
158202 DEFINE_NFS_INODE_EVENT(nfs_access_enter);
159
-DEFINE_NFS_INODE_EVENT_DONE(nfs_access_exit);
203
+
204
+TRACE_EVENT(nfs_access_exit,
205
+ TP_PROTO(
206
+ const struct inode *inode,
207
+ unsigned int mask,
208
+ unsigned int permitted,
209
+ int error
210
+ ),
211
+
212
+ TP_ARGS(inode, mask, permitted, error),
213
+
214
+ TP_STRUCT__entry(
215
+ __field(unsigned long, error)
216
+ __field(dev_t, dev)
217
+ __field(u32, fhandle)
218
+ __field(unsigned char, type)
219
+ __field(u64, fileid)
220
+ __field(u64, version)
221
+ __field(loff_t, size)
222
+ __field(unsigned long, nfsi_flags)
223
+ __field(unsigned long, cache_validity)
224
+ __field(unsigned int, mask)
225
+ __field(unsigned int, permitted)
226
+ ),
227
+
228
+ TP_fast_assign(
229
+ const struct nfs_inode *nfsi = NFS_I(inode);
230
+ __entry->error = error < 0 ? -error : 0;
231
+ __entry->dev = inode->i_sb->s_dev;
232
+ __entry->fileid = nfsi->fileid;
233
+ __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
234
+ __entry->type = nfs_umode_to_dtype(inode->i_mode);
235
+ __entry->version = inode_peek_iversion_raw(inode);
236
+ __entry->size = i_size_read(inode);
237
+ __entry->nfsi_flags = nfsi->flags;
238
+ __entry->cache_validity = nfsi->cache_validity;
239
+ __entry->mask = mask;
240
+ __entry->permitted = permitted;
241
+ ),
242
+
243
+ TP_printk(
244
+ "error=%ld (%s) fileid=%02x:%02x:%llu fhandle=0x%08x "
245
+ "type=%u (%s) version=%llu size=%lld "
246
+ "cache_validity=0x%lx (%s) nfs_flags=0x%lx (%s) "
247
+ "mask=0x%x permitted=0x%x",
248
+ -__entry->error, nfs_show_status(__entry->error),
249
+ MAJOR(__entry->dev), MINOR(__entry->dev),
250
+ (unsigned long long)__entry->fileid,
251
+ __entry->fhandle,
252
+ __entry->type,
253
+ nfs_show_file_type(__entry->type),
254
+ (unsigned long long)__entry->version,
255
+ (long long)__entry->size,
256
+ __entry->cache_validity,
257
+ nfs_show_cache_validity(__entry->cache_validity),
258
+ __entry->nfsi_flags,
259
+ nfs_show_nfsi_flags(__entry->nfsi_flags),
260
+ __entry->mask, __entry->permitted
261
+ )
262
+);
263
+
264
+TRACE_DEFINE_ENUM(LOOKUP_FOLLOW);
265
+TRACE_DEFINE_ENUM(LOOKUP_DIRECTORY);
266
+TRACE_DEFINE_ENUM(LOOKUP_AUTOMOUNT);
267
+TRACE_DEFINE_ENUM(LOOKUP_PARENT);
268
+TRACE_DEFINE_ENUM(LOOKUP_REVAL);
269
+TRACE_DEFINE_ENUM(LOOKUP_RCU);
270
+TRACE_DEFINE_ENUM(LOOKUP_OPEN);
271
+TRACE_DEFINE_ENUM(LOOKUP_CREATE);
272
+TRACE_DEFINE_ENUM(LOOKUP_EXCL);
273
+TRACE_DEFINE_ENUM(LOOKUP_RENAME_TARGET);
274
+TRACE_DEFINE_ENUM(LOOKUP_JUMPED);
275
+TRACE_DEFINE_ENUM(LOOKUP_ROOT);
276
+TRACE_DEFINE_ENUM(LOOKUP_EMPTY);
277
+TRACE_DEFINE_ENUM(LOOKUP_DOWN);
160278
161279 #define show_lookup_flags(flags) \
162
- __print_flags((unsigned long)flags, "|", \
163
- { LOOKUP_AUTOMOUNT, "AUTOMOUNT" }, \
280
+ __print_flags(flags, "|", \
281
+ { LOOKUP_FOLLOW, "FOLLOW" }, \
164282 { LOOKUP_DIRECTORY, "DIRECTORY" }, \
283
+ { LOOKUP_AUTOMOUNT, "AUTOMOUNT" }, \
284
+ { LOOKUP_PARENT, "PARENT" }, \
285
+ { LOOKUP_REVAL, "REVAL" }, \
286
+ { LOOKUP_RCU, "RCU" }, \
165287 { LOOKUP_OPEN, "OPEN" }, \
166288 { LOOKUP_CREATE, "CREATE" }, \
167
- { LOOKUP_EXCL, "EXCL" })
289
+ { LOOKUP_EXCL, "EXCL" }, \
290
+ { LOOKUP_RENAME_TARGET, "RENAME_TARGET" }, \
291
+ { LOOKUP_JUMPED, "JUMPED" }, \
292
+ { LOOKUP_ROOT, "ROOT" }, \
293
+ { LOOKUP_EMPTY, "EMPTY" }, \
294
+ { LOOKUP_DOWN, "DOWN" })
168295
169296 DECLARE_EVENT_CLASS(nfs_lookup_event,
170297 TP_PROTO(
....@@ -176,7 +303,7 @@
176303 TP_ARGS(dir, dentry, flags),
177304
178305 TP_STRUCT__entry(
179
- __field(unsigned int, flags)
306
+ __field(unsigned long, flags)
180307 __field(dev_t, dev)
181308 __field(u64, dir)
182309 __string(name, dentry->d_name.name)
....@@ -190,7 +317,7 @@
190317 ),
191318
192319 TP_printk(
193
- "flags=%u (%s) name=%02x:%02x:%llu/%s",
320
+ "flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
194321 __entry->flags,
195322 show_lookup_flags(__entry->flags),
196323 MAJOR(__entry->dev), MINOR(__entry->dev),
....@@ -219,8 +346,8 @@
219346 TP_ARGS(dir, dentry, flags, error),
220347
221348 TP_STRUCT__entry(
222
- __field(int, error)
223
- __field(unsigned int, flags)
349
+ __field(unsigned long, error)
350
+ __field(unsigned long, flags)
224351 __field(dev_t, dev)
225352 __field(u64, dir)
226353 __string(name, dentry->d_name.name)
....@@ -229,14 +356,14 @@
229356 TP_fast_assign(
230357 __entry->dev = dir->i_sb->s_dev;
231358 __entry->dir = NFS_FILEID(dir);
232
- __entry->error = error;
359
+ __entry->error = error < 0 ? -error : 0;
233360 __entry->flags = flags;
234361 __assign_str(name, dentry->d_name.name);
235362 ),
236363
237364 TP_printk(
238
- "error=%d flags=%u (%s) name=%02x:%02x:%llu/%s",
239
- __entry->error,
365
+ "error=%ld (%s) flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
366
+ -__entry->error, nfs_show_status(__entry->error),
240367 __entry->flags,
241368 show_lookup_flags(__entry->flags),
242369 MAJOR(__entry->dev), MINOR(__entry->dev),
....@@ -260,15 +387,43 @@
260387 DEFINE_NFS_LOOKUP_EVENT(nfs_lookup_revalidate_enter);
261388 DEFINE_NFS_LOOKUP_EVENT_DONE(nfs_lookup_revalidate_exit);
262389
390
+TRACE_DEFINE_ENUM(O_WRONLY);
391
+TRACE_DEFINE_ENUM(O_RDWR);
392
+TRACE_DEFINE_ENUM(O_CREAT);
393
+TRACE_DEFINE_ENUM(O_EXCL);
394
+TRACE_DEFINE_ENUM(O_NOCTTY);
395
+TRACE_DEFINE_ENUM(O_TRUNC);
396
+TRACE_DEFINE_ENUM(O_APPEND);
397
+TRACE_DEFINE_ENUM(O_NONBLOCK);
398
+TRACE_DEFINE_ENUM(O_DSYNC);
399
+TRACE_DEFINE_ENUM(O_DIRECT);
400
+TRACE_DEFINE_ENUM(O_LARGEFILE);
401
+TRACE_DEFINE_ENUM(O_DIRECTORY);
402
+TRACE_DEFINE_ENUM(O_NOFOLLOW);
403
+TRACE_DEFINE_ENUM(O_NOATIME);
404
+TRACE_DEFINE_ENUM(O_CLOEXEC);
405
+
263406 #define show_open_flags(flags) \
264
- __print_flags((unsigned long)flags, "|", \
407
+ __print_flags(flags, "|", \
408
+ { O_WRONLY, "O_WRONLY" }, \
409
+ { O_RDWR, "O_RDWR" }, \
265410 { O_CREAT, "O_CREAT" }, \
266411 { O_EXCL, "O_EXCL" }, \
412
+ { O_NOCTTY, "O_NOCTTY" }, \
267413 { O_TRUNC, "O_TRUNC" }, \
268414 { O_APPEND, "O_APPEND" }, \
415
+ { O_NONBLOCK, "O_NONBLOCK" }, \
269416 { O_DSYNC, "O_DSYNC" }, \
270417 { O_DIRECT, "O_DIRECT" }, \
271
- { O_DIRECTORY, "O_DIRECTORY" })
418
+ { O_LARGEFILE, "O_LARGEFILE" }, \
419
+ { O_DIRECTORY, "O_DIRECTORY" }, \
420
+ { O_NOFOLLOW, "O_NOFOLLOW" }, \
421
+ { O_NOATIME, "O_NOATIME" }, \
422
+ { O_CLOEXEC, "O_CLOEXEC" })
423
+
424
+TRACE_DEFINE_ENUM(FMODE_READ);
425
+TRACE_DEFINE_ENUM(FMODE_WRITE);
426
+TRACE_DEFINE_ENUM(FMODE_EXEC);
272427
273428 #define show_fmode_flags(mode) \
274429 __print_flags(mode, "|", \
....@@ -286,7 +441,7 @@
286441 TP_ARGS(dir, ctx, flags),
287442
288443 TP_STRUCT__entry(
289
- __field(unsigned int, flags)
444
+ __field(unsigned long, flags)
290445 __field(unsigned int, fmode)
291446 __field(dev_t, dev)
292447 __field(u64, dir)
....@@ -302,7 +457,7 @@
302457 ),
303458
304459 TP_printk(
305
- "flags=%u (%s) fmode=%s name=%02x:%02x:%llu/%s",
460
+ "flags=0x%lx (%s) fmode=%s name=%02x:%02x:%llu/%s",
306461 __entry->flags,
307462 show_open_flags(__entry->flags),
308463 show_fmode_flags(__entry->fmode),
....@@ -323,8 +478,8 @@
323478 TP_ARGS(dir, ctx, flags, error),
324479
325480 TP_STRUCT__entry(
326
- __field(int, error)
327
- __field(unsigned int, flags)
481
+ __field(unsigned long, error)
482
+ __field(unsigned long, flags)
328483 __field(unsigned int, fmode)
329484 __field(dev_t, dev)
330485 __field(u64, dir)
....@@ -332,7 +487,7 @@
332487 ),
333488
334489 TP_fast_assign(
335
- __entry->error = error;
490
+ __entry->error = -error;
336491 __entry->dev = dir->i_sb->s_dev;
337492 __entry->dir = NFS_FILEID(dir);
338493 __entry->flags = flags;
....@@ -341,9 +496,9 @@
341496 ),
342497
343498 TP_printk(
344
- "error=%d flags=%u (%s) fmode=%s "
499
+ "error=%ld (%s) flags=0x%lx (%s) fmode=%s "
345500 "name=%02x:%02x:%llu/%s",
346
- __entry->error,
501
+ -__entry->error, nfs_show_status(__entry->error),
347502 __entry->flags,
348503 show_open_flags(__entry->flags),
349504 show_fmode_flags(__entry->fmode),
....@@ -363,7 +518,7 @@
363518 TP_ARGS(dir, dentry, flags),
364519
365520 TP_STRUCT__entry(
366
- __field(unsigned int, flags)
521
+ __field(unsigned long, flags)
367522 __field(dev_t, dev)
368523 __field(u64, dir)
369524 __string(name, dentry->d_name.name)
....@@ -377,7 +532,7 @@
377532 ),
378533
379534 TP_printk(
380
- "flags=%u (%s) name=%02x:%02x:%llu/%s",
535
+ "flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
381536 __entry->flags,
382537 show_open_flags(__entry->flags),
383538 MAJOR(__entry->dev), MINOR(__entry->dev),
....@@ -397,15 +552,15 @@
397552 TP_ARGS(dir, dentry, flags, error),
398553
399554 TP_STRUCT__entry(
400
- __field(int, error)
401
- __field(unsigned int, flags)
555
+ __field(unsigned long, error)
556
+ __field(unsigned long, flags)
402557 __field(dev_t, dev)
403558 __field(u64, dir)
404559 __string(name, dentry->d_name.name)
405560 ),
406561
407562 TP_fast_assign(
408
- __entry->error = error;
563
+ __entry->error = -error;
409564 __entry->dev = dir->i_sb->s_dev;
410565 __entry->dir = NFS_FILEID(dir);
411566 __entry->flags = flags;
....@@ -413,8 +568,8 @@
413568 ),
414569
415570 TP_printk(
416
- "error=%d flags=%u (%s) name=%02x:%02x:%llu/%s",
417
- __entry->error,
571
+ "error=%ld (%s) flags=0x%lx (%s) name=%02x:%02x:%llu/%s",
572
+ -__entry->error, nfs_show_status(__entry->error),
418573 __entry->flags,
419574 show_open_flags(__entry->flags),
420575 MAJOR(__entry->dev), MINOR(__entry->dev),
....@@ -469,7 +624,7 @@
469624 TP_ARGS(dir, dentry, error),
470625
471626 TP_STRUCT__entry(
472
- __field(int, error)
627
+ __field(unsigned long, error)
473628 __field(dev_t, dev)
474629 __field(u64, dir)
475630 __string(name, dentry->d_name.name)
....@@ -478,13 +633,13 @@
478633 TP_fast_assign(
479634 __entry->dev = dir->i_sb->s_dev;
480635 __entry->dir = NFS_FILEID(dir);
481
- __entry->error = error;
636
+ __entry->error = error < 0 ? -error : 0;
482637 __assign_str(name, dentry->d_name.name);
483638 ),
484639
485640 TP_printk(
486
- "error=%d name=%02x:%02x:%llu/%s",
487
- __entry->error,
641
+ "error=%ld (%s) name=%02x:%02x:%llu/%s",
642
+ -__entry->error, nfs_show_status(__entry->error),
488643 MAJOR(__entry->dev), MINOR(__entry->dev),
489644 (unsigned long long)__entry->dir,
490645 __get_str(name)
....@@ -557,7 +712,7 @@
557712 TP_ARGS(inode, dir, dentry, error),
558713
559714 TP_STRUCT__entry(
560
- __field(int, error)
715
+ __field(unsigned long, error)
561716 __field(dev_t, dev)
562717 __field(u64, fileid)
563718 __field(u64, dir)
....@@ -568,13 +723,13 @@
568723 __entry->dev = inode->i_sb->s_dev;
569724 __entry->fileid = NFS_FILEID(inode);
570725 __entry->dir = NFS_FILEID(dir);
571
- __entry->error = error;
726
+ __entry->error = error < 0 ? -error : 0;
572727 __assign_str(name, dentry->d_name.name);
573728 ),
574729
575730 TP_printk(
576
- "error=%d fileid=%02x:%02x:%llu name=%02x:%02x:%llu/%s",
577
- __entry->error,
731
+ "error=%ld (%s) fileid=%02x:%02x:%llu name=%02x:%02x:%llu/%s",
732
+ -__entry->error, nfs_show_status(__entry->error),
578733 MAJOR(__entry->dev), MINOR(__entry->dev),
579734 __entry->fileid,
580735 MAJOR(__entry->dev), MINOR(__entry->dev),
....@@ -642,7 +797,7 @@
642797
643798 TP_STRUCT__entry(
644799 __field(dev_t, dev)
645
- __field(int, error)
800
+ __field(unsigned long, error)
646801 __field(u64, old_dir)
647802 __string(old_name, old_dentry->d_name.name)
648803 __field(u64, new_dir)
....@@ -651,17 +806,17 @@
651806
652807 TP_fast_assign(
653808 __entry->dev = old_dir->i_sb->s_dev;
809
+ __entry->error = -error;
654810 __entry->old_dir = NFS_FILEID(old_dir);
655811 __entry->new_dir = NFS_FILEID(new_dir);
656
- __entry->error = error;
657812 __assign_str(old_name, old_dentry->d_name.name);
658813 __assign_str(new_name, new_dentry->d_name.name);
659814 ),
660815
661816 TP_printk(
662
- "error=%d old_name=%02x:%02x:%llu/%s "
817
+ "error=%ld (%s) old_name=%02x:%02x:%llu/%s "
663818 "new_name=%02x:%02x:%llu/%s",
664
- __entry->error,
819
+ -__entry->error, nfs_show_status(__entry->error),
665820 MAJOR(__entry->dev), MINOR(__entry->dev),
666821 (unsigned long long)__entry->old_dir,
667822 __get_str(old_name),
....@@ -697,7 +852,7 @@
697852
698853 TP_STRUCT__entry(
699854 __field(dev_t, dev)
700
- __field(int, error)
855
+ __field(unsigned long, error)
701856 __field(u64, dir)
702857 __dynamic_array(char, name, data->args.name.len + 1)
703858 ),
....@@ -707,15 +862,15 @@
707862 size_t len = data->args.name.len;
708863 __entry->dev = dir->i_sb->s_dev;
709864 __entry->dir = NFS_FILEID(dir);
710
- __entry->error = error;
865
+ __entry->error = -error;
711866 memcpy(__get_str(name),
712867 data->args.name.name, len);
713868 __get_str(name)[len] = 0;
714869 ),
715870
716871 TP_printk(
717
- "error=%d name=%02x:%02x:%llu/%s",
718
- __entry->error,
872
+ "error=%ld (%s) name=%02x:%02x:%llu/%s",
873
+ -__entry->error, nfs_show_status(__entry->error),
719874 MAJOR(__entry->dev), MINOR(__entry->dev),
720875 (unsigned long long)__entry->dir,
721876 __get_str(name)
....@@ -724,77 +879,178 @@
724879
725880 TRACE_EVENT(nfs_initiate_read,
726881 TP_PROTO(
727
- const struct inode *inode,
728
- loff_t offset, unsigned long count
882
+ const struct nfs_pgio_header *hdr
729883 ),
730884
731
- TP_ARGS(inode, offset, count),
885
+ TP_ARGS(hdr),
732886
733887 TP_STRUCT__entry(
734
- __field(loff_t, offset)
735
- __field(unsigned long, count)
736888 __field(dev_t, dev)
737889 __field(u32, fhandle)
738890 __field(u64, fileid)
891
+ __field(loff_t, offset)
892
+ __field(u32, count)
739893 ),
740894
741895 TP_fast_assign(
896
+ const struct inode *inode = hdr->inode;
742897 const struct nfs_inode *nfsi = NFS_I(inode);
898
+ const struct nfs_fh *fh = hdr->args.fh ?
899
+ hdr->args.fh : &nfsi->fh;
743900
744
- __entry->offset = offset;
745
- __entry->count = count;
901
+ __entry->offset = hdr->args.offset;
902
+ __entry->count = hdr->args.count;
746903 __entry->dev = inode->i_sb->s_dev;
747904 __entry->fileid = nfsi->fileid;
748
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
905
+ __entry->fhandle = nfs_fhandle_hash(fh);
749906 ),
750907
751908 TP_printk(
752909 "fileid=%02x:%02x:%llu fhandle=0x%08x "
753
- "offset=%lld count=%lu",
910
+ "offset=%lld count=%u",
754911 MAJOR(__entry->dev), MINOR(__entry->dev),
755912 (unsigned long long)__entry->fileid,
756913 __entry->fhandle,
757
- __entry->offset, __entry->count
914
+ (long long)__entry->offset, __entry->count
758915 )
759916 );
760917
761918 TRACE_EVENT(nfs_readpage_done,
762919 TP_PROTO(
763
- const struct inode *inode,
764
- int status, loff_t offset, bool eof
920
+ const struct rpc_task *task,
921
+ const struct nfs_pgio_header *hdr
765922 ),
766923
767
- TP_ARGS(inode, status, offset, eof),
924
+ TP_ARGS(task, hdr),
768925
769926 TP_STRUCT__entry(
770
- __field(int, status)
771
- __field(loff_t, offset)
772
- __field(bool, eof)
773927 __field(dev_t, dev)
774928 __field(u32, fhandle)
775929 __field(u64, fileid)
930
+ __field(loff_t, offset)
931
+ __field(u32, arg_count)
932
+ __field(u32, res_count)
933
+ __field(bool, eof)
934
+ __field(int, status)
776935 ),
777936
778937 TP_fast_assign(
938
+ const struct inode *inode = hdr->inode;
779939 const struct nfs_inode *nfsi = NFS_I(inode);
940
+ const struct nfs_fh *fh = hdr->args.fh ?
941
+ hdr->args.fh : &nfsi->fh;
780942
781
- __entry->status = status;
782
- __entry->offset = offset;
783
- __entry->eof = eof;
943
+ __entry->status = task->tk_status;
944
+ __entry->offset = hdr->args.offset;
945
+ __entry->arg_count = hdr->args.count;
946
+ __entry->res_count = hdr->res.count;
947
+ __entry->eof = hdr->res.eof;
784948 __entry->dev = inode->i_sb->s_dev;
785949 __entry->fileid = nfsi->fileid;
786
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
950
+ __entry->fhandle = nfs_fhandle_hash(fh);
787951 ),
788952
789953 TP_printk(
790954 "fileid=%02x:%02x:%llu fhandle=0x%08x "
791
- "offset=%lld status=%d%s",
955
+ "offset=%lld count=%u res=%u status=%d%s",
792956 MAJOR(__entry->dev), MINOR(__entry->dev),
793957 (unsigned long long)__entry->fileid,
794958 __entry->fhandle,
795
- __entry->offset, __entry->status,
959
+ (long long)__entry->offset, __entry->arg_count,
960
+ __entry->res_count, __entry->status,
796961 __entry->eof ? " eof" : ""
797962 )
963
+);
964
+
965
+TRACE_EVENT(nfs_readpage_short,
966
+ TP_PROTO(
967
+ const struct rpc_task *task,
968
+ const struct nfs_pgio_header *hdr
969
+ ),
970
+
971
+ TP_ARGS(task, hdr),
972
+
973
+ TP_STRUCT__entry(
974
+ __field(dev_t, dev)
975
+ __field(u32, fhandle)
976
+ __field(u64, fileid)
977
+ __field(loff_t, offset)
978
+ __field(u32, arg_count)
979
+ __field(u32, res_count)
980
+ __field(bool, eof)
981
+ __field(int, status)
982
+ ),
983
+
984
+ TP_fast_assign(
985
+ const struct inode *inode = hdr->inode;
986
+ const struct nfs_inode *nfsi = NFS_I(inode);
987
+ const struct nfs_fh *fh = hdr->args.fh ?
988
+ hdr->args.fh : &nfsi->fh;
989
+
990
+ __entry->status = task->tk_status;
991
+ __entry->offset = hdr->args.offset;
992
+ __entry->arg_count = hdr->args.count;
993
+ __entry->res_count = hdr->res.count;
994
+ __entry->eof = hdr->res.eof;
995
+ __entry->dev = inode->i_sb->s_dev;
996
+ __entry->fileid = nfsi->fileid;
997
+ __entry->fhandle = nfs_fhandle_hash(fh);
998
+ ),
999
+
1000
+ TP_printk(
1001
+ "fileid=%02x:%02x:%llu fhandle=0x%08x "
1002
+ "offset=%lld count=%u res=%u status=%d%s",
1003
+ MAJOR(__entry->dev), MINOR(__entry->dev),
1004
+ (unsigned long long)__entry->fileid,
1005
+ __entry->fhandle,
1006
+ (long long)__entry->offset, __entry->arg_count,
1007
+ __entry->res_count, __entry->status,
1008
+ __entry->eof ? " eof" : ""
1009
+ )
1010
+);
1011
+
1012
+TRACE_EVENT(nfs_pgio_error,
1013
+ TP_PROTO(
1014
+ const struct nfs_pgio_header *hdr,
1015
+ int error,
1016
+ loff_t pos
1017
+ ),
1018
+
1019
+ TP_ARGS(hdr, error, pos),
1020
+
1021
+ TP_STRUCT__entry(
1022
+ __field(dev_t, dev)
1023
+ __field(u32, fhandle)
1024
+ __field(u64, fileid)
1025
+ __field(loff_t, offset)
1026
+ __field(u32, arg_count)
1027
+ __field(u32, res_count)
1028
+ __field(loff_t, pos)
1029
+ __field(int, status)
1030
+ ),
1031
+
1032
+ TP_fast_assign(
1033
+ const struct inode *inode = hdr->inode;
1034
+ const struct nfs_inode *nfsi = NFS_I(inode);
1035
+ const struct nfs_fh *fh = hdr->args.fh ?
1036
+ hdr->args.fh : &nfsi->fh;
1037
+
1038
+ __entry->status = error;
1039
+ __entry->offset = hdr->args.offset;
1040
+ __entry->arg_count = hdr->args.count;
1041
+ __entry->res_count = hdr->res.count;
1042
+ __entry->dev = inode->i_sb->s_dev;
1043
+ __entry->fileid = nfsi->fileid;
1044
+ __entry->fhandle = nfs_fhandle_hash(fh);
1045
+ ),
1046
+
1047
+ TP_printk("fileid=%02x:%02x:%llu fhandle=0x%08x "
1048
+ "offset=%lld count=%u res=%u pos=%llu status=%d",
1049
+ MAJOR(__entry->dev), MINOR(__entry->dev),
1050
+ (unsigned long long)__entry->fileid, __entry->fhandle,
1051
+ (long long)__entry->offset, __entry->arg_count, __entry->res_count,
1052
+ __entry->pos, __entry->status
1053
+ )
7981054 );
7991055
8001056 TRACE_DEFINE_ENUM(NFS_UNSTABLE);
....@@ -809,89 +1065,143 @@
8091065
8101066 TRACE_EVENT(nfs_initiate_write,
8111067 TP_PROTO(
812
- const struct inode *inode,
813
- loff_t offset, unsigned long count,
814
- enum nfs3_stable_how stable
1068
+ const struct nfs_pgio_header *hdr
8151069 ),
8161070
817
- TP_ARGS(inode, offset, count, stable),
1071
+ TP_ARGS(hdr),
8181072
8191073 TP_STRUCT__entry(
820
- __field(loff_t, offset)
821
- __field(unsigned long, count)
822
- __field(enum nfs3_stable_how, stable)
8231074 __field(dev_t, dev)
8241075 __field(u32, fhandle)
8251076 __field(u64, fileid)
1077
+ __field(loff_t, offset)
1078
+ __field(u32, count)
1079
+ __field(enum nfs3_stable_how, stable)
8261080 ),
8271081
8281082 TP_fast_assign(
1083
+ const struct inode *inode = hdr->inode;
8291084 const struct nfs_inode *nfsi = NFS_I(inode);
1085
+ const struct nfs_fh *fh = hdr->args.fh ?
1086
+ hdr->args.fh : &nfsi->fh;
8301087
831
- __entry->offset = offset;
832
- __entry->count = count;
833
- __entry->stable = stable;
1088
+ __entry->offset = hdr->args.offset;
1089
+ __entry->count = hdr->args.count;
1090
+ __entry->stable = hdr->args.stable;
8341091 __entry->dev = inode->i_sb->s_dev;
8351092 __entry->fileid = nfsi->fileid;
836
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
1093
+ __entry->fhandle = nfs_fhandle_hash(fh);
8371094 ),
8381095
8391096 TP_printk(
8401097 "fileid=%02x:%02x:%llu fhandle=0x%08x "
841
- "offset=%lld count=%lu stable=%s",
1098
+ "offset=%lld count=%u stable=%s",
8421099 MAJOR(__entry->dev), MINOR(__entry->dev),
8431100 (unsigned long long)__entry->fileid,
8441101 __entry->fhandle,
845
- __entry->offset, __entry->count,
1102
+ (long long)__entry->offset, __entry->count,
8461103 nfs_show_stable(__entry->stable)
8471104 )
8481105 );
8491106
8501107 TRACE_EVENT(nfs_writeback_done,
8511108 TP_PROTO(
852
- const struct inode *inode,
853
- int status,
854
- loff_t offset,
855
- struct nfs_writeverf *writeverf
1109
+ const struct rpc_task *task,
1110
+ const struct nfs_pgio_header *hdr
8561111 ),
8571112
858
- TP_ARGS(inode, status, offset, writeverf),
1113
+ TP_ARGS(task, hdr),
8591114
8601115 TP_STRUCT__entry(
861
- __field(int, status)
862
- __field(loff_t, offset)
863
- __field(enum nfs3_stable_how, stable)
864
- __field(unsigned long long, verifier)
8651116 __field(dev_t, dev)
8661117 __field(u32, fhandle)
8671118 __field(u64, fileid)
1119
+ __field(loff_t, offset)
1120
+ __field(u32, arg_count)
1121
+ __field(u32, res_count)
1122
+ __field(int, status)
1123
+ __field(enum nfs3_stable_how, stable)
1124
+ __array(char, verifier, NFS4_VERIFIER_SIZE)
8681125 ),
8691126
8701127 TP_fast_assign(
1128
+ const struct inode *inode = hdr->inode;
8711129 const struct nfs_inode *nfsi = NFS_I(inode);
1130
+ const struct nfs_fh *fh = hdr->args.fh ?
1131
+ hdr->args.fh : &nfsi->fh;
1132
+ const struct nfs_writeverf *verf = hdr->res.verf;
8721133
873
- __entry->status = status;
874
- __entry->offset = offset;
875
- __entry->stable = writeverf->committed;
876
- memcpy(&__entry->verifier, &writeverf->verifier,
877
- sizeof(__entry->verifier));
1134
+ __entry->status = task->tk_status;
1135
+ __entry->offset = hdr->args.offset;
1136
+ __entry->arg_count = hdr->args.count;
1137
+ __entry->res_count = hdr->res.count;
1138
+ __entry->stable = verf->committed;
1139
+ memcpy(__entry->verifier,
1140
+ &verf->verifier,
1141
+ NFS4_VERIFIER_SIZE);
8781142 __entry->dev = inode->i_sb->s_dev;
8791143 __entry->fileid = nfsi->fileid;
880
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
1144
+ __entry->fhandle = nfs_fhandle_hash(fh);
8811145 ),
8821146
8831147 TP_printk(
8841148 "fileid=%02x:%02x:%llu fhandle=0x%08x "
885
- "offset=%lld status=%d stable=%s "
886
- "verifier 0x%016llx",
1149
+ "offset=%lld count=%u res=%u status=%d stable=%s "
1150
+ "verifier=%s",
8871151 MAJOR(__entry->dev), MINOR(__entry->dev),
8881152 (unsigned long long)__entry->fileid,
8891153 __entry->fhandle,
890
- __entry->offset, __entry->status,
1154
+ (long long)__entry->offset, __entry->arg_count,
1155
+ __entry->res_count, __entry->status,
8911156 nfs_show_stable(__entry->stable),
892
- __entry->verifier
1157
+ __print_hex_str(__entry->verifier, NFS4_VERIFIER_SIZE)
8931158 )
8941159 );
1160
+
1161
+DECLARE_EVENT_CLASS(nfs_page_error_class,
1162
+ TP_PROTO(
1163
+ const struct nfs_page *req,
1164
+ int error
1165
+ ),
1166
+
1167
+ TP_ARGS(req, error),
1168
+
1169
+ TP_STRUCT__entry(
1170
+ __field(const void *, req)
1171
+ __field(pgoff_t, index)
1172
+ __field(unsigned int, offset)
1173
+ __field(unsigned int, pgbase)
1174
+ __field(unsigned int, bytes)
1175
+ __field(int, error)
1176
+ ),
1177
+
1178
+ TP_fast_assign(
1179
+ __entry->req = req;
1180
+ __entry->index = req->wb_index;
1181
+ __entry->offset = req->wb_offset;
1182
+ __entry->pgbase = req->wb_pgbase;
1183
+ __entry->bytes = req->wb_bytes;
1184
+ __entry->error = error;
1185
+ ),
1186
+
1187
+ TP_printk(
1188
+ "req=%p index=%lu offset=%u pgbase=%u bytes=%u error=%d",
1189
+ __entry->req, __entry->index, __entry->offset,
1190
+ __entry->pgbase, __entry->bytes, __entry->error
1191
+ )
1192
+);
1193
+
1194
+#define DEFINE_NFS_PAGEERR_EVENT(name) \
1195
+ DEFINE_EVENT(nfs_page_error_class, name, \
1196
+ TP_PROTO( \
1197
+ const struct nfs_page *req, \
1198
+ int error \
1199
+ ), \
1200
+ TP_ARGS(req, error))
1201
+
1202
+DEFINE_NFS_PAGEERR_EVENT(nfs_write_error);
1203
+DEFINE_NFS_PAGEERR_EVENT(nfs_comp_error);
1204
+DEFINE_NFS_PAGEERR_EVENT(nfs_commit_error);
8951205
8961206 TRACE_EVENT(nfs_initiate_commit,
8971207 TP_PROTO(
....@@ -901,71 +1211,227 @@
9011211 TP_ARGS(data),
9021212
9031213 TP_STRUCT__entry(
904
- __field(loff_t, offset)
905
- __field(unsigned long, count)
9061214 __field(dev_t, dev)
9071215 __field(u32, fhandle)
9081216 __field(u64, fileid)
1217
+ __field(loff_t, offset)
1218
+ __field(u32, count)
9091219 ),
9101220
9111221 TP_fast_assign(
9121222 const struct inode *inode = data->inode;
9131223 const struct nfs_inode *nfsi = NFS_I(inode);
1224
+ const struct nfs_fh *fh = data->args.fh ?
1225
+ data->args.fh : &nfsi->fh;
9141226
9151227 __entry->offset = data->args.offset;
9161228 __entry->count = data->args.count;
9171229 __entry->dev = inode->i_sb->s_dev;
9181230 __entry->fileid = nfsi->fileid;
919
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
1231
+ __entry->fhandle = nfs_fhandle_hash(fh);
9201232 ),
9211233
9221234 TP_printk(
9231235 "fileid=%02x:%02x:%llu fhandle=0x%08x "
924
- "offset=%lld count=%lu",
1236
+ "offset=%lld count=%u",
9251237 MAJOR(__entry->dev), MINOR(__entry->dev),
9261238 (unsigned long long)__entry->fileid,
9271239 __entry->fhandle,
928
- __entry->offset, __entry->count
1240
+ (long long)__entry->offset, __entry->count
9291241 )
9301242 );
9311243
9321244 TRACE_EVENT(nfs_commit_done,
9331245 TP_PROTO(
1246
+ const struct rpc_task *task,
9341247 const struct nfs_commit_data *data
9351248 ),
9361249
937
- TP_ARGS(data),
1250
+ TP_ARGS(task, data),
9381251
9391252 TP_STRUCT__entry(
940
- __field(int, status)
1253
+ __field(dev_t, dev)
1254
+ __field(u32, fhandle)
1255
+ __field(u64, fileid)
9411256 __field(loff_t, offset)
942
- __field(unsigned long long, verifier)
1257
+ __field(int, status)
1258
+ __field(enum nfs3_stable_how, stable)
1259
+ __array(char, verifier, NFS4_VERIFIER_SIZE)
1260
+ ),
1261
+
1262
+ TP_fast_assign(
1263
+ const struct inode *inode = data->inode;
1264
+ const struct nfs_inode *nfsi = NFS_I(inode);
1265
+ const struct nfs_fh *fh = data->args.fh ?
1266
+ data->args.fh : &nfsi->fh;
1267
+ const struct nfs_writeverf *verf = data->res.verf;
1268
+
1269
+ __entry->status = task->tk_status;
1270
+ __entry->offset = data->args.offset;
1271
+ __entry->stable = verf->committed;
1272
+ memcpy(__entry->verifier,
1273
+ &verf->verifier,
1274
+ NFS4_VERIFIER_SIZE);
1275
+ __entry->dev = inode->i_sb->s_dev;
1276
+ __entry->fileid = nfsi->fileid;
1277
+ __entry->fhandle = nfs_fhandle_hash(fh);
1278
+ ),
1279
+
1280
+ TP_printk(
1281
+ "fileid=%02x:%02x:%llu fhandle=0x%08x "
1282
+ "offset=%lld status=%d stable=%s verifier=%s",
1283
+ MAJOR(__entry->dev), MINOR(__entry->dev),
1284
+ (unsigned long long)__entry->fileid,
1285
+ __entry->fhandle,
1286
+ (long long)__entry->offset, __entry->status,
1287
+ nfs_show_stable(__entry->stable),
1288
+ __print_hex_str(__entry->verifier, NFS4_VERIFIER_SIZE)
1289
+ )
1290
+);
1291
+
1292
+TRACE_EVENT(nfs_fh_to_dentry,
1293
+ TP_PROTO(
1294
+ const struct super_block *sb,
1295
+ const struct nfs_fh *fh,
1296
+ u64 fileid,
1297
+ int error
1298
+ ),
1299
+
1300
+ TP_ARGS(sb, fh, fileid, error),
1301
+
1302
+ TP_STRUCT__entry(
1303
+ __field(int, error)
9431304 __field(dev_t, dev)
9441305 __field(u32, fhandle)
9451306 __field(u64, fileid)
9461307 ),
9471308
9481309 TP_fast_assign(
949
- const struct inode *inode = data->inode;
950
- const struct nfs_inode *nfsi = NFS_I(inode);
951
-
952
- __entry->status = data->res.op_status;
953
- __entry->offset = data->args.offset;
954
- memcpy(&__entry->verifier, &data->verf.verifier,
955
- sizeof(__entry->verifier));
956
- __entry->dev = inode->i_sb->s_dev;
957
- __entry->fileid = nfsi->fileid;
958
- __entry->fhandle = nfs_fhandle_hash(&nfsi->fh);
1310
+ __entry->error = error;
1311
+ __entry->dev = sb->s_dev;
1312
+ __entry->fileid = fileid;
1313
+ __entry->fhandle = nfs_fhandle_hash(fh);
9591314 ),
9601315
9611316 TP_printk(
962
- "fileid=%02x:%02x:%llu fhandle=0x%08x "
963
- "offset=%lld status=%d verifier 0x%016llx",
1317
+ "error=%d fileid=%02x:%02x:%llu fhandle=0x%08x ",
1318
+ __entry->error,
9641319 MAJOR(__entry->dev), MINOR(__entry->dev),
9651320 (unsigned long long)__entry->fileid,
966
- __entry->fhandle,
967
- __entry->offset, __entry->status,
968
- __entry->verifier
1321
+ __entry->fhandle
1322
+ )
1323
+);
1324
+
1325
+TRACE_DEFINE_ENUM(NFS_OK);
1326
+TRACE_DEFINE_ENUM(NFSERR_PERM);
1327
+TRACE_DEFINE_ENUM(NFSERR_NOENT);
1328
+TRACE_DEFINE_ENUM(NFSERR_IO);
1329
+TRACE_DEFINE_ENUM(NFSERR_NXIO);
1330
+TRACE_DEFINE_ENUM(ECHILD);
1331
+TRACE_DEFINE_ENUM(NFSERR_EAGAIN);
1332
+TRACE_DEFINE_ENUM(NFSERR_ACCES);
1333
+TRACE_DEFINE_ENUM(NFSERR_EXIST);
1334
+TRACE_DEFINE_ENUM(NFSERR_XDEV);
1335
+TRACE_DEFINE_ENUM(NFSERR_NODEV);
1336
+TRACE_DEFINE_ENUM(NFSERR_NOTDIR);
1337
+TRACE_DEFINE_ENUM(NFSERR_ISDIR);
1338
+TRACE_DEFINE_ENUM(NFSERR_INVAL);
1339
+TRACE_DEFINE_ENUM(NFSERR_FBIG);
1340
+TRACE_DEFINE_ENUM(NFSERR_NOSPC);
1341
+TRACE_DEFINE_ENUM(NFSERR_ROFS);
1342
+TRACE_DEFINE_ENUM(NFSERR_MLINK);
1343
+TRACE_DEFINE_ENUM(NFSERR_OPNOTSUPP);
1344
+TRACE_DEFINE_ENUM(NFSERR_NAMETOOLONG);
1345
+TRACE_DEFINE_ENUM(NFSERR_NOTEMPTY);
1346
+TRACE_DEFINE_ENUM(NFSERR_DQUOT);
1347
+TRACE_DEFINE_ENUM(NFSERR_STALE);
1348
+TRACE_DEFINE_ENUM(NFSERR_REMOTE);
1349
+TRACE_DEFINE_ENUM(NFSERR_WFLUSH);
1350
+TRACE_DEFINE_ENUM(NFSERR_BADHANDLE);
1351
+TRACE_DEFINE_ENUM(NFSERR_NOT_SYNC);
1352
+TRACE_DEFINE_ENUM(NFSERR_BAD_COOKIE);
1353
+TRACE_DEFINE_ENUM(NFSERR_NOTSUPP);
1354
+TRACE_DEFINE_ENUM(NFSERR_TOOSMALL);
1355
+TRACE_DEFINE_ENUM(NFSERR_SERVERFAULT);
1356
+TRACE_DEFINE_ENUM(NFSERR_BADTYPE);
1357
+TRACE_DEFINE_ENUM(NFSERR_JUKEBOX);
1358
+
1359
+#define nfs_show_status(x) \
1360
+ __print_symbolic(x, \
1361
+ { NFS_OK, "OK" }, \
1362
+ { NFSERR_PERM, "PERM" }, \
1363
+ { NFSERR_NOENT, "NOENT" }, \
1364
+ { NFSERR_IO, "IO" }, \
1365
+ { NFSERR_NXIO, "NXIO" }, \
1366
+ { ECHILD, "CHILD" }, \
1367
+ { NFSERR_EAGAIN, "AGAIN" }, \
1368
+ { NFSERR_ACCES, "ACCES" }, \
1369
+ { NFSERR_EXIST, "EXIST" }, \
1370
+ { NFSERR_XDEV, "XDEV" }, \
1371
+ { NFSERR_NODEV, "NODEV" }, \
1372
+ { NFSERR_NOTDIR, "NOTDIR" }, \
1373
+ { NFSERR_ISDIR, "ISDIR" }, \
1374
+ { NFSERR_INVAL, "INVAL" }, \
1375
+ { NFSERR_FBIG, "FBIG" }, \
1376
+ { NFSERR_NOSPC, "NOSPC" }, \
1377
+ { NFSERR_ROFS, "ROFS" }, \
1378
+ { NFSERR_MLINK, "MLINK" }, \
1379
+ { NFSERR_OPNOTSUPP, "OPNOTSUPP" }, \
1380
+ { NFSERR_NAMETOOLONG, "NAMETOOLONG" }, \
1381
+ { NFSERR_NOTEMPTY, "NOTEMPTY" }, \
1382
+ { NFSERR_DQUOT, "DQUOT" }, \
1383
+ { NFSERR_STALE, "STALE" }, \
1384
+ { NFSERR_REMOTE, "REMOTE" }, \
1385
+ { NFSERR_WFLUSH, "WFLUSH" }, \
1386
+ { NFSERR_BADHANDLE, "BADHANDLE" }, \
1387
+ { NFSERR_NOT_SYNC, "NOTSYNC" }, \
1388
+ { NFSERR_BAD_COOKIE, "BADCOOKIE" }, \
1389
+ { NFSERR_NOTSUPP, "NOTSUPP" }, \
1390
+ { NFSERR_TOOSMALL, "TOOSMALL" }, \
1391
+ { NFSERR_SERVERFAULT, "REMOTEIO" }, \
1392
+ { NFSERR_BADTYPE, "BADTYPE" }, \
1393
+ { NFSERR_JUKEBOX, "JUKEBOX" })
1394
+
1395
+TRACE_EVENT(nfs_xdr_status,
1396
+ TP_PROTO(
1397
+ const struct xdr_stream *xdr,
1398
+ int error
1399
+ ),
1400
+
1401
+ TP_ARGS(xdr, error),
1402
+
1403
+ TP_STRUCT__entry(
1404
+ __field(unsigned int, task_id)
1405
+ __field(unsigned int, client_id)
1406
+ __field(u32, xid)
1407
+ __field(int, version)
1408
+ __field(unsigned long, error)
1409
+ __string(program,
1410
+ xdr->rqst->rq_task->tk_client->cl_program->name)
1411
+ __string(procedure,
1412
+ xdr->rqst->rq_task->tk_msg.rpc_proc->p_name)
1413
+ ),
1414
+
1415
+ TP_fast_assign(
1416
+ const struct rpc_rqst *rqstp = xdr->rqst;
1417
+ const struct rpc_task *task = rqstp->rq_task;
1418
+
1419
+ __entry->task_id = task->tk_pid;
1420
+ __entry->client_id = task->tk_client->cl_clid;
1421
+ __entry->xid = be32_to_cpu(rqstp->rq_xid);
1422
+ __entry->version = task->tk_client->cl_vers;
1423
+ __entry->error = error;
1424
+ __assign_str(program,
1425
+ task->tk_client->cl_program->name)
1426
+ __assign_str(procedure, task->tk_msg.rpc_proc->p_name)
1427
+ ),
1428
+
1429
+ TP_printk(
1430
+ "task:%u@%d xid=0x%08x %sv%d %s error=%ld (%s)",
1431
+ __entry->task_id, __entry->client_id, __entry->xid,
1432
+ __get_str(program), __entry->version,
1433
+ __get_str(procedure), -__entry->error,
1434
+ nfs_show_status(__entry->error)
9691435 )
9701436 );
9711437