On Mon, Jul 19, 2021 at 12:19:34PM +0100, Christoph Hellwig wrote: > On Sat, Jul 17, 2021 at 07:40:41PM +0100, Matthew Wilcox wrote: > > Well, either sense of a WARN_ON is wrong. > > > > For a file which is PAGE_SIZE + 3 bytes in size, to_iomap_page() will > > be NULL. For a file which is PAGE_SIZE/2 + 3 bytes in size, > > to_iomap_page() will not be NULL. (assuming the block size is <= > > PAGE_SIZE / 2). > > > > I think we need a prep patch that looks something like this: > > Something like this is where we should eventually end up, but it > also affects the read from disk case so we need to be careful. I also think it'd be better to leave this hunk as it-is (don't touch it in this patch), I mean just iop = iomap_page_create(inode, page); as https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/iomap/buffered-io.c?id=229adf3c64dbeae4e2f45fb561907ada9fcc0d0c#n256 since iomap_read_inline_data() now calls iomap_set_range_uptodate() to set blocks uptodate rather than SetPageUptodate() directly and we also have iomap_page_release() as well. Some follow-up optimized patch can be raised up independently since it's somewhat out of current topic for now. Thanks, Gao Xiang