Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

ext4: increase IO priority of fastcommit

The following code paths may result in high latency or even task hangs:
1. fastcommit io is throttled by wbt.
2. jbd2_fc_wait_bufs() might wait for a long time while
JBD2_FAST_COMMIT_ONGOING is set in journal->flags, and then
jbd2_journal_commit_transaction() waits for the
JBD2_FAST_COMMIT_ONGOING bit for a long time while holding the write
lock of j_state_lock.
3. start_this_handle() waits for read lock of j_state_lock which
results in high latency or task hang.

Given the fact that ext4_fc_commit() already modifies the current
process' IO priority to match that of the jbd2 thread, it should be
reasonable to match jbd2's IO submission flags as well.

Suggested-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Signed-off-by: Julian Sun <sunjunchao@bytedance.com>
Reviewed-by: Zhang Yi <yi.zhang@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Message-ID: <20250827121812.1477634-1-sunjunchao@bytedance.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>

authored by

Julian Sun and committed by
Theodore Ts'o
46e75c56 d6ace46c

+1 -1
+1 -1
fs/ext4/fast_commit.c
··· 663 663 664 664 static void ext4_fc_submit_bh(struct super_block *sb, bool is_tail) 665 665 { 666 - blk_opf_t write_flags = REQ_SYNC; 666 + blk_opf_t write_flags = JBD2_JOURNAL_REQ_FLAGS; 667 667 struct buffer_head *bh = EXT4_SB(sb)->s_fc_bh; 668 668 669 669 /* Add REQ_FUA | REQ_PREFLUSH only its tail */