From: Wenjie Qi Date: Tue, 16 Jun 2026 03:06:55 +0000 (+0800) Subject: f2fs: skip direct I/O iostat context when disabled X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=34636c6dcd6f75570c553a4188b5dbe0f758159a;p=thirdparty%2Flinux.git f2fs: skip direct I/O iostat context when disabled F2FS iostat is optional and is disabled by default. Direct I/O still allocates and binds a bio_iostat_ctx, updates the submit timestamp, and replaces bi_end_io for every DIO bio even when sbi->iostat_enable is false. The byte accounting calls do not need an extra guard because f2fs_update_iostat() already checks sbi->iostat_enable. Only skip the DIO bio context setup when iostat is disabled. If iostat is enabled through sysfs before submission, the existing context allocation and latency accounting path is still used. QEMU benchmark on a 1GiB F2FS virtio-blk image, with iostat_enable=0, 4KiB O_DIRECT I/O over a 64MiB file, 50000 iterations per run: baseline patched direct_read median 65264.50 ns 55470.95 ns direct_read recheck 65553.75 ns 55470.95 ns direct_write median 68054.62 ns 56309.44 ns direct_write recheck 66873.51 ns 56309.44 ns Signed-off-by: Wenjie Qi Reviewed-by: Chao Yu Signed-off-by: Jaegeuk Kim --- diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index d240ca78a31fe..8acdd94272a0c 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -4801,6 +4801,9 @@ static void f2fs_dio_iostat_start(struct f2fs_sb_info *sbi, struct bio *bio) { void *bi_private = bio->bi_private; + if (!sbi->iostat_enable) + return; + iostat_alloc_and_bind_ctx(sbi, bio, bi_private); iostat_update_submit_ctx(bio, DATA); bio->bi_end_io = f2fs_dio_end_bio;