[PATCH 4/8] rpdfs: add inode change debugging routine
Valerie Aurora <[email protected]> Fri, 24 Apr 2026 16:05:16 +0200
| Newsgroups | dev.linux.lists.rpdfs-devel |
|---|---|
| Message-ID | <[email protected]> |
print_inode_change() can be added to copy_vfs_inode_to_rinode() to
log what has changed since the last inode update.
---
fs/rpdfs/inode.c | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/fs/rpdfs/inode.c b/fs/rpdfs/inode.c
index 428c9081fd75..7abd2c58373f 100644
--- a/fs/rpdfs/inode.c
+++ b/fs/rpdfs/inode.c
@@ -82,6 +82,44 @@ static void copy_rinode_to_vfs_inode(struct inode *inode, struct rpdfs_inode *ri
ri->xattr_creates = rinode->xattr_creates;
}
+__always_unused
+static inline void print_diff64(char *name, u64 new, u64 old)
+{
+ old = le64_to_cpu(old);
+
+ if (old != new)
+ rpdfs_prd("%s: %llu -> %llu (%lld)", name, old, new, new - old);
+}
+
+__always_unused
+static void print_inode_change(struct inode *inode, struct rpdfs_inode *rinode)
+{
+ struct rpdfs_inode_info *ri = RPDFS_I(inode);
+ struct timespec64 ts;
+
+ rpdfs_prd("copying inode %lu to rinode", inode->i_ino);
+
+ print_diff64("ino", ri->ig.ino, rinode->ig.ino);
+ print_diff64("gen", ri->ig.gen, rinode->ig.gen);
+ print_diff64("i_size", i_size_read(inode), rinode->size);
+ print_diff64("nlink", inode->i_nlink, rinode->nlink);
+ print_diff64("uid", i_uid_read(inode), rinode->uid);
+ print_diff64("gid", i_gid_read(inode), rinode->gid);
+ print_diff64("mode", inode->i_mode, rinode->mode);
+
+ ts = inode_get_atime(inode);
+ print_diff64("atime", timespec64_to_ns(&ts), rinode->atime_nsec);
+ ts = inode_get_ctime(inode);
+ print_diff64("ctime", timespec64_to_ns(&ts), rinode->atime_nsec);
+ ts = inode_get_mtime(inode);
+ print_diff64("mtime", timespec64_to_ns(&ts), rinode->atime_nsec);
+ print_diff64("crtime", ri->crtime_nsec, rinode->crtime_nsec);
+
+ print_diff64("dirents", ri->dirents.ref.bnr, rinode->dirents.ref.bnr);
+ print_diff64("xattrs", ri->xattrs.ref.bnr, rinode->xattrs.ref.bnr);
+ print_diff64("xattr_creates", ri->xattr_creates, rinode->xattr_creates);
+}
+
static __le64 cpu_ts64_to_le64_ns(struct timespec64 ts)
{
return cpu_to_le64(timespec64_to_ns(&ts));
--
2.49.0