[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <176169811678.1426244.3641881790453505639.stgit@frogsfrogsfrogs>
Date: Tue, 28 Oct 2025 17:54:51 -0700
From: "Darrick J. Wong" <djwong@...nel.org>
To: djwong@...nel.org, miklos@...redi.hu
Cc: joannelkoong@...il.com, bernd@...ernd.com, neal@...pa.dev,
linux-ext4@...r.kernel.org, linux-fsdevel@...r.kernel.org
Subject: [PATCH 4/9] fuse_trace: allow local filesystems to set some VFS
iflags
From: Darrick J. Wong <djwong@...nel.org>
Add tracepoints for the previous patch.
Signed-off-by: "Darrick J. Wong" <djwong@...nel.org>
---
fs/fuse/fuse_trace.h | 29 +++++++++++++++++++++++++++++
fs/fuse/ioctl.c | 7 +++++++
2 files changed, 36 insertions(+)
diff --git a/fs/fuse/fuse_trace.h b/fs/fuse/fuse_trace.h
index 9a52f258ca3b2b..817bb6a5d3a961 100644
--- a/fs/fuse/fuse_trace.h
+++ b/fs/fuse/fuse_trace.h
@@ -176,6 +176,35 @@ TRACE_EVENT(fuse_request_end,
__entry->unique, __entry->len, __entry->error)
);
+DECLARE_EVENT_CLASS(fuse_fileattr_class,
+ TP_PROTO(const struct inode *inode, unsigned int old_iflags),
+
+ TP_ARGS(inode, old_iflags),
+
+ TP_STRUCT__entry(
+ FUSE_INODE_FIELDS
+ __field(unsigned int, old_iflags)
+ __field(unsigned int, new_iflags)
+ ),
+
+ TP_fast_assign(
+ FUSE_INODE_ASSIGN(inode, fi, fm);
+ __entry->old_iflags = old_iflags;
+ __entry->new_iflags = inode->i_flags;
+ ),
+
+ TP_printk(FUSE_INODE_FMT " old_iflags 0x%x iflags 0x%x",
+ FUSE_INODE_PRINTK_ARGS,
+ __entry->old_iflags,
+ __entry->new_iflags)
+);
+#define DEFINE_FUSE_FILEATTR_EVENT(name) \
+DEFINE_EVENT(fuse_fileattr_class, name, \
+ TP_PROTO(const struct inode *inode, unsigned int old_iflags), \
+ TP_ARGS(inode, old_iflags))
+DEFINE_FUSE_FILEATTR_EVENT(fuse_fileattr_update_inode);
+DEFINE_FUSE_FILEATTR_EVENT(fuse_fileattr_init);
+
#ifdef CONFIG_FUSE_BACKING
#define FUSE_BACKING_FLAG_STRINGS \
{ FUSE_BACKING_TYPE_PASSTHROUGH, "pass" }, \
diff --git a/fs/fuse/ioctl.c b/fs/fuse/ioctl.c
index bd2caf191ce2e0..5180066678e8c1 100644
--- a/fs/fuse/ioctl.c
+++ b/fs/fuse/ioctl.c
@@ -4,6 +4,7 @@
*/
#include "fuse_i.h"
+#include "fuse_trace.h"
#include <linux/uio.h>
#include <linux/compat.h>
@@ -530,12 +531,16 @@ static void fuse_fileattr_update_inode(struct inode *inode,
update_iflag(inode, S_APPEND, fa->fsx_xflags & FS_XFLAG_APPEND);
}
+ trace_fuse_fileattr_update_inode(inode, old_iflags);
+
if (old_iflags != inode->i_flags)
fuse_invalidate_attr(inode);
}
void fuse_fileattr_init(struct inode *inode, const struct fuse_attr *attr)
{
+ unsigned int old_iflags = inode->i_flags;
+
if (!fuse_inode_is_exclusive(inode))
return;
@@ -547,6 +552,8 @@ void fuse_fileattr_init(struct inode *inode, const struct fuse_attr *attr)
if (attr->flags & FUSE_ATTR_APPEND)
inode->i_flags |= S_APPEND;
+
+ trace_fuse_fileattr_init(inode, old_iflags);
}
int fuse_fileattr_get(struct dentry *dentry, struct file_kattr *fa)
Powered by blists - more mailing lists