On Thu, Oct 3, 2024 at 12:00 AM Matthew Wilcox (Oracle) wrote: > > Use memcpy_to_folio() instead of open-coding it, and use offset_in_folio() > in case anybody wants to use nilfs2 on a device with large blocks. > > Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> > --- > fs/nilfs2/recovery.c | 11 ++++------- > 1 file changed, 4 insertions(+), 7 deletions(-) > > diff --git a/fs/nilfs2/recovery.c b/fs/nilfs2/recovery.c > index 21d81097a89f..1c665a32f002 100644 > --- a/fs/nilfs2/recovery.c > +++ b/fs/nilfs2/recovery.c > @@ -481,19 +481,16 @@ static int nilfs_prepare_segment_for_recovery(struct the_nilfs *nilfs, > > static int nilfs_recovery_copy_block(struct the_nilfs *nilfs, > struct nilfs_recovery_block *rb, > - loff_t pos, struct page *page) > + loff_t pos, struct folio *folio) > { > struct buffer_head *bh_org; > - size_t from = pos & ~PAGE_MASK; > - void *kaddr; > + size_t from = offset_in_folio(folio, pos); > > bh_org = __bread(nilfs->ns_bdev, rb->blocknr, nilfs->ns_blocksize); > if (unlikely(!bh_org)) > return -EIO; > > - kaddr = kmap_local_page(page); > - memcpy(kaddr + from, bh_org->b_data, bh_org->b_size); > - kunmap_local(kaddr); > + memcpy_to_folio(folio, from, bh_org->b_data, bh_org->b_size); > brelse(bh_org); > return 0; > } > @@ -531,7 +528,7 @@ static int nilfs_recover_dsync_blocks(struct the_nilfs *nilfs, > goto failed_inode; > } > > - err = nilfs_recovery_copy_block(nilfs, rb, pos, &folio->page); > + err = nilfs_recovery_copy_block(nilfs, rb, pos, folio); > if (unlikely(err)) > goto failed_page; > > -- > 2.43.0 > This patch looks good to me. One small thing: with this conversion, there is no reference to the page structure in nilfs_recover_dsync_blocks, so how about changing the jump label "failed_page" to "failed_folio"? This will reduce noise when searching for "page" with grep. Thanks, Ryusuke Konishi