bio->bi_write_stream is not set by the filesystem code. Use inode's write stream value to do that. Signed-off-by: Kanchan Joshi <joshi.k@xxxxxxxxxxx> --- fs/btrfs/extent_io.c | 1 + fs/buffer.c | 14 +++++++++----- fs/direct-io.c | 1 + fs/ext4/page-io.c | 1 + fs/iomap/direct-io.c | 1 + fs/iomap/ioend.c | 1 + fs/mpage.c | 1 + 7 files changed, 15 insertions(+), 5 deletions(-) diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index 1dc931c4937f..280fdfcfd855 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@ -666,6 +666,7 @@ static void alloc_new_bio(struct btrfs_inode *inode, 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->bio.bi_write_stream = inode->vfs_inode.i_write_stream; bbio->inode = inode; bbio->file_offset = file_offset; bio_ctrl->bbio = bbio; diff --git a/fs/buffer.c b/fs/buffer.c index ead4dc85debd..6b85e9992036 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -55,7 +55,8 @@ static int fsync_buffers_list(spinlock_t *lock, struct list_head *list); static void submit_bh_wbc(blk_opf_t opf, struct buffer_head *bh, - enum rw_hint hint, struct writeback_control *wbc); + enum rw_hint hint, u8 write_stream, + struct writeback_control *wbc); #define BH_ENTRY(list) list_entry((list), struct buffer_head, b_assoc_buffers) @@ -1931,7 +1932,8 @@ int __block_write_full_folio(struct inode *inode, struct folio *folio, struct buffer_head *next = bh->b_this_page; if (buffer_async_write(bh)) { submit_bh_wbc(REQ_OP_WRITE | write_flags, bh, - inode->i_write_hint, wbc); + inode->i_write_hint, + inode->i_write_stream, wbc); nr_underway++; } bh = next; @@ -1986,7 +1988,8 @@ int __block_write_full_folio(struct inode *inode, struct folio *folio, if (buffer_async_write(bh)) { clear_buffer_dirty(bh); submit_bh_wbc(REQ_OP_WRITE | write_flags, bh, - inode->i_write_hint, wbc); + inode->i_write_hint, + inode->i_write_stream, wbc); nr_underway++; } bh = next; @@ -2778,7 +2781,7 @@ static void end_bio_bh_io_sync(struct bio *bio) } static void submit_bh_wbc(blk_opf_t opf, struct buffer_head *bh, - enum rw_hint write_hint, + enum rw_hint write_hint, u8 write_stream, struct writeback_control *wbc) { const enum req_op op = opf & REQ_OP_MASK; @@ -2807,6 +2810,7 @@ static void submit_bh_wbc(blk_opf_t opf, struct buffer_head *bh, bio->bi_iter.bi_sector = bh->b_blocknr * (bh->b_size >> 9); bio->bi_write_hint = write_hint; + bio->bi_write_stream = write_stream; bio_add_folio_nofail(bio, bh->b_folio, bh->b_size, bh_offset(bh)); @@ -2826,7 +2830,7 @@ static void submit_bh_wbc(blk_opf_t opf, struct buffer_head *bh, void submit_bh(blk_opf_t opf, struct buffer_head *bh) { - submit_bh_wbc(opf, bh, WRITE_LIFE_NOT_SET, NULL); + submit_bh_wbc(opf, bh, WRITE_LIFE_NOT_SET, 0, NULL); } EXPORT_SYMBOL(submit_bh); diff --git a/fs/direct-io.c b/fs/direct-io.c index 1694ee9a9382..f086d21b5b1c 100644 --- a/fs/direct-io.c +++ b/fs/direct-io.c @@ -410,6 +410,7 @@ dio_bio_alloc(struct dio *dio, struct dio_submit *sdio, if (dio->is_pinned) bio_set_flag(bio, BIO_PAGE_PINNED); bio->bi_write_hint = file_inode(dio->iocb->ki_filp)->i_write_hint; + bio->bi_write_stream = file_inode(dio->iocb->ki_filp)->i_write_stream; sdio->bio = bio; sdio->logical_offset_in_bio = sdio->cur_page_fs_offset; diff --git a/fs/ext4/page-io.c b/fs/ext4/page-io.c index 179e54f3a3b6..573093ecd7d9 100644 --- a/fs/ext4/page-io.c +++ b/fs/ext4/page-io.c @@ -447,6 +447,7 @@ static void io_submit_add_bh(struct ext4_io_submit *io, if (io->io_bio == NULL) { io_submit_init_bio(io, bh); io->io_bio->bi_write_hint = inode->i_write_hint; + io->io_bio->bi_write_stream = inode->i_write_stream; } if (!bio_add_folio(io->io_bio, io_folio, bh->b_size, bh_offset(bh))) goto submit_and_retry; diff --git a/fs/iomap/direct-io.c b/fs/iomap/direct-io.c index 6f25d4cfea9f..ba304109da72 100644 --- a/fs/iomap/direct-io.c +++ b/fs/iomap/direct-io.c @@ -430,6 +430,7 @@ static int iomap_dio_bio_iter(struct iomap_iter *iter, struct iomap_dio *dio) GFP_KERNEL); bio->bi_iter.bi_sector = iomap_sector(iomap, pos); bio->bi_write_hint = inode->i_write_hint; + bio->bi_write_stream = inode->i_write_stream; bio->bi_ioprio = dio->iocb->ki_ioprio; bio->bi_private = dio; bio->bi_end_io = iomap_dio_bio_end_io; diff --git a/fs/iomap/ioend.c b/fs/iomap/ioend.c index b49fa75eab26..652525c93fdd 100644 --- a/fs/iomap/ioend.c +++ b/fs/iomap/ioend.c @@ -107,6 +107,7 @@ static struct iomap_ioend *iomap_alloc_ioend(struct iomap_writepage_ctx *wpc, GFP_NOFS, &iomap_ioend_bioset); bio->bi_iter.bi_sector = iomap_sector(&wpc->iomap, pos); bio->bi_write_hint = wpc->inode->i_write_hint; + bio->bi_write_stream = wpc->inode->i_write_stream; wbc_init_bio(wpc->wbc, bio); wpc->nr_folios = 0; return iomap_init_ioend(wpc->inode, bio, pos, ioend_flags); diff --git a/fs/mpage.c b/fs/mpage.c index c5fd821fd30e..6a50bbe38adc 100644 --- a/fs/mpage.c +++ b/fs/mpage.c @@ -595,6 +595,7 @@ static int mpage_write_folio(struct writeback_control *wbc, struct folio *folio, bio->bi_iter.bi_sector = first_block << (blkbits - 9); wbc_init_bio(wbc, bio); bio->bi_write_hint = inode->i_write_hint; + bio->bi_write_stream = inode->i_write_stream; } /* -- 2.25.1