aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJing Xia <j.xia@samsung.com>2024-09-03 13:40:12 +0800
committerDavid Sterba <dsterba@suse.com>2025-01-13 14:53:21 +0100
commit2fa07d7a0f0084d9777f076a154ad10e759ba731 (patch)
tree724a6ad3e6b856a10b5255eebc4fe0eae9f1bd7c
parentbtrfs: print read policy on module load (diff)
downloadlinux-rng-2fa07d7a0f0084d9777f076a154ad10e759ba731.tar.xz
linux-rng-2fa07d7a0f0084d9777f076a154ad10e759ba731.zip
btrfs: pass write-hint for buffered IO
Commit 449813515d3e ("block, fs: Restore the per-bio/request data lifetime fields") restored write-hint support in btrfs. But that is applicable only for direct IO. This patch supports passing write-hint for buffered IO from btrfs file system to block layer by filling bi_write_hint of struct bio in alloc_new_bio(). There's an ongoing discussion which devices can use that, https://lore.kernel.org/all/20240910150200.6589-6-joshi.k@samsung.com, in SCSI there's support using sd_group_number() and sd_setup_rw32_cmnd(). The hint goes from the application directly to the block device so it's up to the application to set up everything properly to utilize the different hint classes. Link: https://lore.kernel.org/all/20240910150200.6589-6-joshi.k@samsung.com Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Jing Xia <j.xia@samsung.com> [ Add more context and use case. ] Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--fs/btrfs/extent_io.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 9725ff7f274d..74f2775db51e 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -710,6 +710,7 @@ static void alloc_new_bio(struct btrfs_inode *inode,
bbio = btrfs_bio_alloc(BIO_MAX_VECS, bio_ctrl->opf, fs_info,
bio_ctrl->end_io_func, NULL);
bbio->bio.bi_iter.bi_sector = disk_bytenr >> SECTOR_SHIFT;
+ bbio->bio.bi_write_hint = inode->vfs_inode.i_write_hint;
bbio->inode = inode;
bbio->file_offset = file_offset;
bio_ctrl->bbio = bbio;