[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-nfs
Subject: [PATCH v2 30/31] NFSD: Update the nfsd_file_fsnotify_handle_event() tracepoint
From: Chuck Lever <chuck.lever () oracle ! com>
Date: 2022-06-28 18:09:02
Message-ID: 165643974221.84360.1679436915112501560.stgit () manet ! 1015granger ! net
[Download RAW message or body]
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(-)
diff --git a/fs/nfsd/trace.h b/fs/nfsd/trace.h
index c4582bdf988a..22358c38691b 100644
--- a/fs/nfsd/trace.h
+++ b/fs/nfsd/trace.h
@@ -9,6 +9,7 @@
#define _NFSD_TRACE_H
#include <linux/tracepoint.h>
+#include <trace/events/fs.h>
#include "export.h"
#include "nfsfh.h"
@@ -974,22 +975,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,
diff --git a/include/trace/events/fs.h b/include/trace/events/fs.h
index 738b97f22f36..3c75f85086a2 100644
--- a/include/trace/events/fs.h
+++ b/include/trace/events/fs.h
@@ -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" })
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic