Skip to content

Commit 0cee64c

Browse files
jankarabrauner
authored andcommitted
writeback: Add tracepoint to track pending inode switches
Add trace_inode_switch_wbs_queue tracepoint to allow insight into how many inodes are queued to switch their bdi_writeback structure. Acked-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Christian Brauner <brauner@kernel.org>
1 parent 9a6ebbd commit 0cee64c

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

fs/fs-writeback.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -667,6 +667,7 @@ static void inode_switch_wbs(struct inode *inode, int new_wb_id)
667667

668668
isw->inodes[0] = inode;
669669

670+
trace_inode_switch_wbs_queue(inode->i_wb, new_wb, 1);
670671
wb_queue_isw(new_wb, isw);
671672
return;
672673

@@ -752,6 +753,7 @@ bool cleanup_offline_cgwb(struct bdi_writeback *wb)
752753
return restart;
753754
}
754755

756+
trace_inode_switch_wbs_queue(wb, new_wb, nr);
755757
wb_queue_isw(new_wb, isw);
756758

757759
return restart;

include/trace/events/writeback.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,35 @@ TRACE_EVENT(inode_foreign_history,
213213
)
214214
);
215215

216+
TRACE_EVENT(inode_switch_wbs_queue,
217+
218+
TP_PROTO(struct bdi_writeback *old_wb, struct bdi_writeback *new_wb,
219+
unsigned int count),
220+
221+
TP_ARGS(old_wb, new_wb, count),
222+
223+
TP_STRUCT__entry(
224+
__array(char, name, 32)
225+
__field(ino_t, old_cgroup_ino)
226+
__field(ino_t, new_cgroup_ino)
227+
__field(unsigned int, count)
228+
),
229+
230+
TP_fast_assign(
231+
strscpy_pad(__entry->name, bdi_dev_name(old_wb->bdi), 32);
232+
__entry->old_cgroup_ino = __trace_wb_assign_cgroup(old_wb);
233+
__entry->new_cgroup_ino = __trace_wb_assign_cgroup(new_wb);
234+
__entry->count = count;
235+
),
236+
237+
TP_printk("bdi %s: old_cgroup_ino=%lu new_cgroup_ino=%lu count=%u",
238+
__entry->name,
239+
(unsigned long)__entry->old_cgroup_ino,
240+
(unsigned long)__entry->new_cgroup_ino,
241+
__entry->count
242+
)
243+
);
244+
216245
TRACE_EVENT(inode_switch_wbs,
217246

218247
TP_PROTO(struct inode *inode, struct bdi_writeback *old_wb,

0 commit comments

Comments
 (0)