ext4: pass write-hint for buffered IO
authorj.xia <j.xia@samsung.com>
Thu, 19 Sep 2024 02:03:41 +0000 (10:03 +0800)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 13 Nov 2024 04:54:14 +0000 (23:54 -0500)
Commit 449813515d3e ("block, fs: Restore the per-bio/request data
lifetime fields") restored write-hint support in ext4. But that is
applicable only for direct IO. This patch supports passing
write-hint for buffered IO from ext4 file system to block layer
by filling bi_write_hint of struct bio in io_submit_add_bh().

Signed-off-by: j.xia <j.xia@samsung.com>
Link: https://patch.msgid.link/20240919020341.2657646-1-j.xia@samsung.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/page-io.c

index ad5543866d21526d60e6c12a366b7f64ed18208d..bb8b17c394d47462163e3502b55c5b8982de19bf 100644 (file)
@@ -417,8 +417,10 @@ static void io_submit_add_bh(struct ext4_io_submit *io,
 submit_and_retry:
                ext4_io_submit(io);
        }
-       if (io->io_bio == NULL)
+       if (io->io_bio == NULL) {
                io_submit_init_bio(io, bh);
+               io->io_bio->bi_write_hint = inode->i_write_hint;
+       }
        if (!bio_add_folio(io->io_bio, io_folio, bh->b_size, bh_offset(bh)))
                goto submit_and_retry;
        wbc_account_cgroup_owner(io->io_wbc, &folio->page, bh->b_size);