[PATCH 3/8] ext4: add tracing for i_conv_pending_ios tracking
From: Ojaswin Mujoo
Date: Mon Nov 02 2026 - 15:26:06 EST
Add tracing to track changes to i_conv_pending_ios count.
Signed-off-by: Ojaswin Mujoo <ojaswin@xxxxxxxxxxxxx>
---
fs/ext4/inode.c | 11 ++++++++++-
include/trace/events/ext4.h | 24 ++++++++++++++++++++++++
2 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 280ba3d359e3..8b5cb37cdd6d 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -673,7 +673,16 @@ static void _ext4_conv_pending_mod(struct inode *inode, int n)
{
struct ext4_inode_info *ei = EXT4_I(inode);
- atomic_add(n, &ei->i_conv_pending_ios);
+ /*
+ * Only use the full ordering variant when tracing is needed.
+ */
+ if (trace_ext4_conv_pending_ios_enabled()) {
+ int new_ios = atomic_add_return(n, &ei->i_conv_pending_ios);
+
+ trace_ext4_conv_pending_ios(inode, n > 0, new_ios - n, new_ios);
+ } else {
+ atomic_add(n, &ei->i_conv_pending_ios);
+ }
}
/*
diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h
index 7d255c47c446..f1754b2e836c 100644
--- a/include/trace/events/ext4.h
+++ b/include/trace/events/ext4.h
@@ -3367,6 +3367,30 @@ TRACE_EVENT(ext4_block_zero_eof,
__entry->i_disksize, __entry->did_zero, __entry->zero_written)
);
+/* i_conv_pending_ios accounting tracepoint */
+TRACE_EVENT(ext4_conv_pending_ios,
+ TP_PROTO(struct inode *inode, bool add, int old_ios, int new_ios),
+ TP_ARGS(inode, add, old_ios, new_ios),
+ TP_STRUCT__entry(
+ __field(dev_t, dev)
+ __field(u64, ino)
+ __field(bool, add)
+ __field(int, old_ios)
+ __field(int, new_ios)
+ ),
+ TP_fast_assign(
+ __entry->dev = inode->i_sb->s_dev;
+ __entry->ino = inode->i_ino;
+ __entry->add = add;
+ __entry->old_ios = old_ios;
+ __entry->new_ios = new_ios;
+ ),
+ TP_printk("dev %d:%d ino %llu %s i_conv_pending_ios %d -> %d",
+ MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino,
+ __entry->add ? "inc" : "dec",
+ __entry->old_ios, __entry->new_ios)
+);
+
#endif /* _TRACE_EXT4_H */
/* This part must be outside protection */
--
2.55.0