Message ID | 20210705181824.2174165-3-agruenba@redhat.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | iomap: small block problems | expand |
On Mon, Jul 05, 2021 at 08:18:24PM +0200, Andreas Gruenbacher wrote: > Create an iop in the writeback path if one doesn't exist. This allows > us to avoid creating the iop in some cases. The only current case we > do that for is pages with inline data, but it can be extended to pages > which are entirely within an extent. It also allows for an iop to be > removed from pages in the future (eg page split). > > Co-developed-by: Matthew Wilcox (Oracle) <willy@infradead.org> > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> > Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Looks good, Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c index 03537ecb2a94..6330dabc451e 100644 --- a/fs/iomap/buffered-io.c +++ b/fs/iomap/buffered-io.c @@ -1336,14 +1336,13 @@ iomap_writepage_map(struct iomap_writepage_ctx *wpc, struct writeback_control *wbc, struct inode *inode, struct page *page, u64 end_offset) { - struct iomap_page *iop = to_iomap_page(page); + struct iomap_page *iop = iomap_page_create(inode, page); struct iomap_ioend *ioend, *next; unsigned len = i_blocksize(inode); u64 file_offset; /* file offset of page */ int error = 0, count = 0, i; LIST_HEAD(submit_list); - WARN_ON_ONCE(i_blocks_per_page(inode, page) > 1 && !iop); WARN_ON_ONCE(iop && atomic_read(&iop->write_bytes_pending) != 0); /*