From: Bart Van Assche <bvanassche@acm.org>
To: "Martin K . Petersen" <martin.petersen@oracle.com>
Cc: linux-scsi@vger.kernel.org, linux-block@vger.kernel.org,
linux-fsdevel@vger.kernel.org, Jens Axboe <axboe@kernel.dk>,
Christoph Hellwig <hch@lst.de>,
Daejun Park <daejun7.park@samsung.com>,
Kanchan Joshi <joshi.k@samsung.com>,
Bart Van Assche <bvanassche@acm.org>, Jan Kara <jack@suse.cz>,
Christian Brauner <brauner@kernel.org>,
Alexander Viro <viro@zeniv.linux.org.uk>
Subject: [PATCH v4 04/15] fs: Restore write hint support
Date: Tue, 14 Nov 2023 13:40:59 -0800 [thread overview]
Message-ID: <20231114214132.1486867-5-bvanassche@acm.org> (raw)
In-Reply-To: <20231114214132.1486867-1-bvanassche@acm.org>
Initialize the bio lifetime to the data lifetime information that is
available in struct inode. This patch reverts a small subset of commit
c75e707fe1aa ("block: remove the per-bio/request write hint").
Cc: Jan Kara <jack@suse.cz>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Christian Brauner <brauner@kernel.org>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
block/fops.c | 3 +++
fs/iomap/buffered-io.c | 2 ++
fs/iomap/direct-io.c | 1 +
fs/mpage.c | 1 +
4 files changed, 7 insertions(+)
diff --git a/block/fops.c b/block/fops.c
index 0abaac705daf..059c098c7a58 100644
--- a/block/fops.c
+++ b/block/fops.c
@@ -74,6 +74,7 @@ static ssize_t __blkdev_direct_IO_simple(struct kiocb *iocb,
}
bio.bi_iter.bi_sector = pos >> SECTOR_SHIFT;
bio.bi_ioprio = iocb->ki_ioprio;
+ bio.bi_lifetime = iocb->ki_filp->f_inode->i_write_hint;
ret = bio_iov_iter_get_pages(&bio, iter);
if (unlikely(ret))
@@ -206,6 +207,7 @@ static ssize_t __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter,
bio->bi_private = dio;
bio->bi_end_io = blkdev_bio_end_io;
bio->bi_ioprio = iocb->ki_ioprio;
+ bio->bi_lifetime = iocb->ki_filp->f_inode->i_write_hint;
ret = bio_iov_iter_get_pages(bio, iter);
if (unlikely(ret)) {
@@ -323,6 +325,7 @@ static ssize_t __blkdev_direct_IO_async(struct kiocb *iocb,
bio->bi_iter.bi_sector = pos >> SECTOR_SHIFT;
bio->bi_end_io = blkdev_bio_end_io_async;
bio->bi_ioprio = iocb->ki_ioprio;
+ bio->bi_lifetime = iocb->ki_filp->f_inode->i_write_hint;
if (iov_iter_is_bvec(iter)) {
/*
diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c
index f72df2babe56..0a430d85dec4 100644
--- a/fs/iomap/buffered-io.c
+++ b/fs/iomap/buffered-io.c
@@ -1677,6 +1677,7 @@ iomap_alloc_ioend(struct inode *inode, struct iomap_writepage_ctx *wpc,
REQ_OP_WRITE | wbc_to_write_flags(wbc),
GFP_NOFS, &iomap_ioend_bioset);
bio->bi_iter.bi_sector = sector;
+ bio->bi_lifetime = inode->i_write_hint;
wbc_init_bio(wbc, bio);
ioend = container_of(bio, struct iomap_ioend, io_inline_bio);
@@ -1707,6 +1708,7 @@ iomap_chain_bio(struct bio *prev)
new = bio_alloc(prev->bi_bdev, BIO_MAX_VECS, prev->bi_opf, GFP_NOFS);
bio_clone_blkg_association(new, prev);
new->bi_iter.bi_sector = bio_end_sector(prev);
+ new->bi_lifetime = prev->bi_lifetime;
bio_chain(prev, new);
bio_get(prev); /* for iomap_finish_ioend */
diff --git a/fs/iomap/direct-io.c b/fs/iomap/direct-io.c
index bcd3f8cf5ea4..df095b9700a7 100644
--- a/fs/iomap/direct-io.c
+++ b/fs/iomap/direct-io.c
@@ -381,6 +381,7 @@ static loff_t iomap_dio_bio_iter(const struct iomap_iter *iter,
GFP_KERNEL);
bio->bi_iter.bi_sector = iomap_sector(iomap, pos);
bio->bi_ioprio = dio->iocb->ki_ioprio;
+ bio->bi_lifetime = dio->iocb->ki_filp->f_inode->i_write_hint;
bio->bi_private = dio;
bio->bi_end_io = iomap_dio_bio_end_io;
diff --git a/fs/mpage.c b/fs/mpage.c
index ffb064ed9d04..0eea809a6d46 100644
--- a/fs/mpage.c
+++ b/fs/mpage.c
@@ -611,6 +611,7 @@ static int __mpage_writepage(struct folio *folio, struct writeback_control *wbc,
GFP_NOFS);
bio->bi_iter.bi_sector = blocks[0] << (blkbits - 9);
wbc_init_bio(wbc, bio);
+ bio->bi_lifetime = inode->i_write_hint;
}
/*
next prev parent reply other threads:[~2023-11-14 21:42 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-14 21:40 [PATCH v4 00/15] Pass data lifetime information to SCSI disk devices Bart Van Assche
2023-11-14 21:40 ` [PATCH v4 01/15] fs: Rename the kernel-internal data lifetime constants Bart Van Assche
2023-11-20 7:19 ` Kanchan Joshi
2023-11-27 7:08 ` Christoph Hellwig
2023-11-27 8:45 ` Kanchan Joshi
2023-11-27 9:29 ` Christoph Hellwig
2023-11-27 19:00 ` Bart Van Assche
2023-11-14 21:40 ` [PATCH v4 02/15] fs: Move enum rw_hint into a new header file Bart Van Assche
2023-11-14 21:40 ` [PATCH v4 03/15] block: Restore data lifetime support in struct bio and struct request Bart Van Assche
2023-11-14 21:40 ` Bart Van Assche [this message]
2023-11-14 21:41 ` [PATCH v4 05/15] fs/f2fs: Restore data lifetime support Bart Van Assche
2023-11-20 7:36 ` Kanchan Joshi
2023-11-20 17:53 ` Bart Van Assche
2023-11-14 21:41 ` [PATCH v4 06/15] scsi: core: Query the Block Limits Extension VPD page Bart Van Assche
2023-11-14 21:41 ` [PATCH v4 07/15] scsi_proto: Add structures and constants related to I/O groups and streams Bart Van Assche
2023-11-14 21:41 ` [PATCH v4 08/15] sd: Translate data lifetime information Bart Van Assche
2023-11-14 21:41 ` [PATCH v4 09/15] scsi_debug: Reduce code duplication Bart Van Assche
2023-11-14 21:41 ` [PATCH v4 10/15] scsi_debug: Support the block limits extension VPD page Bart Van Assche
2023-11-14 21:41 ` [PATCH v4 11/15] scsi_debug: Rework page code error handling Bart Van Assche
2023-11-14 21:41 ` [PATCH v4 12/15] scsi_debug: Rework subpage " Bart Van Assche
2023-11-14 21:41 ` [PATCH v4 13/15] scsi_debug: Implement the IO Advice Hints Grouping mode page Bart Van Assche
2023-11-14 21:41 ` [PATCH v4 14/15] scsi_debug: Implement GET STREAM STATUS Bart Van Assche
2023-11-14 21:41 ` [PATCH v4 15/15] scsi_debug: Maintain write statistics per group number Bart Van Assche
2023-11-21 19:25 ` Bart Van Assche
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231114214132.1486867-5-bvanassche@acm.org \
--to=bvanassche@acm.org \
--cc=axboe@kernel.dk \
--cc=brauner@kernel.org \
--cc=daejun7.park@samsung.com \
--cc=hch@lst.de \
--cc=jack@suse.cz \
--cc=joshi.k@samsung.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).