@@ -9,6 +9,7 @@
#define _NFSD_TRACE_H
#include <linux/tracepoint.h>
+#include <trace/events/fs.h>
#include "export.h"
#include "nfsfh.h"
@@ -1020,22 +1021,28 @@ TRACE_EVENT(nfsd_file_is_cached,
);
TRACE_EVENT(nfsd_file_fsnotify_handle_event,
- TP_PROTO(struct inode *inode, u32 mask),
+ TP_PROTO(
+ const struct inode *inode,
+ u32 mask
+ ),
TP_ARGS(inode, mask),
TP_STRUCT__entry(
- __field(struct inode *, inode)
+ __field(const struct inode *, inode)
__field(unsigned int, nlink)
- __field(umode_t, mode)
- __field(u32, mask)
+ __field(unsigned long, mode)
+ __field(unsigned long, mask)
),
TP_fast_assign(
__entry->inode = inode;
__entry->nlink = inode->i_nlink;
- __entry->mode = inode->i_mode;
+ __entry->mode = inode->i_mode & S_IFMT;
__entry->mask = mask;
),
- TP_printk("inode=%p nlink=%u mode=0%ho mask=0x%x", __entry->inode,
- __entry->nlink, __entry->mode, __entry->mask)
+ TP_printk("inode=%p nlink=%u mode=%s mask=%s",
+ __entry->inode, __entry->nlink,
+ show_fs_file_type(__entry->mode),
+ show_fs_notify_flags(__entry->mask)
+ )
);
DECLARE_EVENT_CLASS(nfsd_file_gc_class,
@@ -120,3 +120,40 @@
{ LOOKUP_BENEATH, "BENEATH" }, \
{ LOOKUP_IN_ROOT, "IN_ROOT" }, \
{ LOOKUP_CACHED, "CACHED" })
+
+#define show_fs_file_type(x) \
+ __print_symbolic(x, \
+ { S_IFLNK, "LNK" }, \
+ { S_IFREG, "REG" }, \
+ { S_IFDIR, "DIR" }, \
+ { S_IFCHR, "CHR" }, \
+ { S_IFBLK, "BLK" }, \
+ { S_IFIFO, "FIFO" }, \
+ { S_IFSOCK, "SOCK" })
+
+#define show_fs_notify_flags(x) \
+ __print_flags(x, "|", \
+ { FS_ACCESS, "ACCESS" }, \
+ { FS_MODIFY, "MODIFY" }, \
+ { FS_ATTRIB, "ATTRIB" }, \
+ { FS_CLOSE_WRITE, "CLOSE_WRITE" }, \
+ { FS_CLOSE_NOWRITE, "CLOSE_NOWRITE" }, \
+ { FS_OPEN, "OPEN" }, \
+ { FS_MOVED_FROM, "MOVED_FROM" }, \
+ { FS_MOVED_TO, "MOVED_TO" }, \
+ { FS_CREATE, "CREATE" }, \
+ { FS_DELETE, "DELETE" }, \
+ { FS_DELETE_SELF, "DELETE_SELF" }, \
+ { FS_MOVE_SELF, "MOVE_SELF" }, \
+ { FS_OPEN_EXEC, "OPEN_EXEC" }, \
+ { FS_UNMOUNT, "UNMOUNT" }, \
+ { FS_Q_OVERFLOW, "Q_OVERFLOW" }, \
+ { FS_ERROR, "ERROR" }, \
+ { FS_IN_IGNORED, "IN_IGNORED" }, \
+ { FS_OPEN_PERM, "OPEN_PERM" }, \
+ { FS_ACCESS_PERM, "ACCESS_PERM" }, \
+ { FS_OPEN_EXEC_PERM, "OPEN_EXEC_PERM" }, \
+ { FS_EVENT_ON_CHILD, "EVENT_ON_CHILD" }, \
+ { FS_RENAME, "RENAME" }, \
+ { FS_DN_MULTISHOT, "DN_MULTISHOT" }, \
+ { FS_ISDIR, "ISDIR" })
As a convenience, display the mode and event mask symbolically rather than numerically. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> --- fs/nfsd/trace.h | 21 ++++++++++++++------- include/trace/events/fs.h | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 7 deletions(-)