On Wed, Nov 16, 2022 at 12:09 AM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > > On Tue, Nov 15, 2022 at 06:10:08PM -0800, Vishal Moola (Oracle) wrote: > > { > > struct inode *orig_inode = file_inode(o_filp); > > struct page *pagep[2] = {NULL, NULL}; > > + struct folio *folio[2] = {NULL, NULL}; > > I have a feeling that mext_page_double_lock() should also be converted > to use folios. But this makes me nervous: > > int blocks_per_page = PAGE_SIZE >> orig_inode->i_blkbits; > > and I'm not sure what will happen if one or both of the orig_page > and donor_page is large -- possibly different sizes of large. > > Obviously ext4 doesn't allow large folios today, but it would be good to > get some reasoning about why this isn't laying a trap for later (or at > least assertions that neither folio is large so that there's an obvious > scream instead of silent data corruption). I had thought once mext_page_mkuptodate() and block_commit_write() were converted to folios, large folios wouldn't be a problem. I hadn't considered that the folios may be of different sizes. I can add assertions about both folios being large and the same size in v2.