Message ID | 20231123125121.4064694-12-yi.zhang@huaweicloud.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | ext4: use iomap for regular file's buffered IO path and enable large foilo | expand |
On Thu, Nov 23, 2023 at 08:51:13PM +0800, Zhang Yi wrote: > From: Zhang Yi <yi.zhang@huawei.com> > > Add a private parameter to iomap_ioend structure, letting filesystems > can pass something they needed from .prepare_ioend() to IO end. On it's own this looks fine. Note that I have a series that I probably should send out ASAP: http://git.infradead.org/users/hch/misc.git/shortlog/refs/heads/iomap-map-multiple-blocks that makes each ioend only have the embdeed bio, and bi_private in that is unused, so you could just use that if we go down that route.
On 2023/11/23 23:36, Christoph Hellwig wrote: > On Thu, Nov 23, 2023 at 08:51:13PM +0800, Zhang Yi wrote: >> From: Zhang Yi <yi.zhang@huawei.com> >> >> Add a private parameter to iomap_ioend structure, letting filesystems >> can pass something they needed from .prepare_ioend() to IO end. > > On it's own this looks fine. Note that I have a series that I probably > should send out ASAP: > > http://git.infradead.org/users/hch/misc.git/shortlog/refs/heads/iomap-map-multiple-blocks > > that makes each ioend only have the embdeed bio, and bi_private in that > is unused, so you could just use that if we go down that route. > Thanks for this improvement, I will analyze the changes of this series in depth. Thanks, Yi.
diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c index 2bc0aa23fde3..fd4d43bafd1b 100644 --- a/fs/iomap/buffered-io.c +++ b/fs/iomap/buffered-io.c @@ -1676,6 +1676,7 @@ iomap_alloc_ioend(struct inode *inode, struct iomap_writepage_ctx *wpc, ioend->io_offset = offset; ioend->io_bio = bio; ioend->io_sector = sector; + ioend->io_private = NULL; return ioend; } diff --git a/include/linux/iomap.h b/include/linux/iomap.h index 96dd0acbba44..8b3296a5474d 100644 --- a/include/linux/iomap.h +++ b/include/linux/iomap.h @@ -300,6 +300,7 @@ struct iomap_ioend { sector_t io_sector; /* start sector of ioend */ struct bio *io_bio; /* bio being built */ struct bio io_inline_bio; /* MUST BE LAST! */ + void *io_private; /* fs private pointer */ }; struct iomap_writeback_ops {