mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-23 07:23:12 +02:00
ext4: enhance tracepoints during the folios writeback
commit 6b132759b0
upstream.
After mpage_map_and_submit_extent() supports restarting handle if
credits are insufficient during allocating blocks, it is more likely to
exit the current mapping iteration and continue to process the current
processing partially mapped folio again. The existing tracepoints are
not sufficient to track this situation, so enhance the tracepoints to
track the writeback position and the return value before and after
submitting the folios.
Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/20250707140814.542883-7-yi.zhang@huaweicloud.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
ffb21eafbf
commit
7fe61ac002
|
@ -2936,7 +2936,8 @@ retry:
|
|||
}
|
||||
mpd->do_map = 1;
|
||||
|
||||
trace_ext4_da_write_pages(inode, mpd->start_pos, wbc);
|
||||
trace_ext4_da_write_folios_start(inode, mpd->start_pos,
|
||||
mpd->next_pos, wbc);
|
||||
ret = mpage_prepare_extent_to_map(mpd);
|
||||
if (!ret && mpd->map.m_len)
|
||||
ret = mpage_map_and_submit_extent(handle, mpd,
|
||||
|
@ -2974,6 +2975,8 @@ retry:
|
|||
} else
|
||||
ext4_put_io_end(mpd->io_submit.io_end);
|
||||
mpd->io_submit.io_end = NULL;
|
||||
trace_ext4_da_write_folios_end(inode, mpd->start_pos,
|
||||
mpd->next_pos, wbc, ret);
|
||||
|
||||
if (ret == -ENOSPC && sbi->s_journal) {
|
||||
/*
|
||||
|
|
|
@ -482,16 +482,17 @@ TRACE_EVENT(ext4_writepages,
|
|||
(unsigned long) __entry->writeback_index)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ext4_da_write_pages,
|
||||
TP_PROTO(struct inode *inode, loff_t start_pos,
|
||||
TRACE_EVENT(ext4_da_write_folios_start,
|
||||
TP_PROTO(struct inode *inode, loff_t start_pos, loff_t next_pos,
|
||||
struct writeback_control *wbc),
|
||||
|
||||
TP_ARGS(inode, start_pos, wbc),
|
||||
TP_ARGS(inode, start_pos, next_pos, wbc),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( dev_t, dev )
|
||||
__field( ino_t, ino )
|
||||
__field( loff_t, start_pos )
|
||||
__field( loff_t, next_pos )
|
||||
__field( long, nr_to_write )
|
||||
__field( int, sync_mode )
|
||||
),
|
||||
|
@ -500,16 +501,47 @@ TRACE_EVENT(ext4_da_write_pages,
|
|||
__entry->dev = inode->i_sb->s_dev;
|
||||
__entry->ino = inode->i_ino;
|
||||
__entry->start_pos = start_pos;
|
||||
__entry->next_pos = next_pos;
|
||||
__entry->nr_to_write = wbc->nr_to_write;
|
||||
__entry->sync_mode = wbc->sync_mode;
|
||||
),
|
||||
|
||||
TP_printk("dev %d,%d ino %lu start_pos 0x%llx nr_to_write %ld sync_mode %d",
|
||||
TP_printk("dev %d,%d ino %lu start_pos 0x%llx next_pos 0x%llx nr_to_write %ld sync_mode %d",
|
||||
MAJOR(__entry->dev), MINOR(__entry->dev),
|
||||
(unsigned long) __entry->ino, __entry->start_pos,
|
||||
(unsigned long) __entry->ino, __entry->start_pos, __entry->next_pos,
|
||||
__entry->nr_to_write, __entry->sync_mode)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ext4_da_write_folios_end,
|
||||
TP_PROTO(struct inode *inode, loff_t start_pos, loff_t next_pos,
|
||||
struct writeback_control *wbc, int ret),
|
||||
|
||||
TP_ARGS(inode, start_pos, next_pos, wbc, ret),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( dev_t, dev )
|
||||
__field( ino_t, ino )
|
||||
__field( loff_t, start_pos )
|
||||
__field( loff_t, next_pos )
|
||||
__field( long, nr_to_write )
|
||||
__field( int, ret )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->dev = inode->i_sb->s_dev;
|
||||
__entry->ino = inode->i_ino;
|
||||
__entry->start_pos = start_pos;
|
||||
__entry->next_pos = next_pos;
|
||||
__entry->nr_to_write = wbc->nr_to_write;
|
||||
__entry->ret = ret;
|
||||
),
|
||||
|
||||
TP_printk("dev %d,%d ino %lu start_pos 0x%llx next_pos 0x%llx nr_to_write %ld ret %d",
|
||||
MAJOR(__entry->dev), MINOR(__entry->dev),
|
||||
(unsigned long) __entry->ino, __entry->start_pos, __entry->next_pos,
|
||||
__entry->nr_to_write, __entry->ret)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ext4_da_write_pages_extent,
|
||||
TP_PROTO(struct inode *inode, struct ext4_map_blocks *map),
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user