On Fri, Sep 27, 2024 at 1:46 PM Josef Bacik <josef@xxxxxxxxxxxxxx> wrote: > > Convert this to grab the folio directly, and update all the helpers to > use the folio related functions. > > Signed-off-by: Josef Bacik <josef@xxxxxxxxxxxxxx> Reviewed-by: Joanne Koong <joannelkoong@xxxxxxxxx> > --- > fs/fuse/file.c | 20 +++++++++++++++----- > 1 file changed, 15 insertions(+), 5 deletions(-) > > diff --git a/fs/fuse/file.c b/fs/fuse/file.c > index 1f7fe5416139..c8a5fa579615 100644 > --- a/fs/fuse/file.c > +++ b/fs/fuse/file.c > @@ -483,6 +483,16 @@ static void fuse_wait_on_page_writeback(struct inode *inode, pgoff_t index) > wait_event(fi->page_waitq, !fuse_page_is_writeback(inode, index)); > } > > +static void fuse_wait_on_folio_writeback(struct inode *inode, > + struct folio *folio) > +{ > + struct fuse_inode *fi = get_fuse_inode(inode); > + pgoff_t last = folio_next_index(folio) - 1; > + > + wait_event(fi->page_waitq, > + !fuse_range_is_writeback(inode, folio_index(folio), last)); > +} > + > /* > * Wait for all pending writepages on the inode to finish. > * > @@ -2527,17 +2537,17 @@ static void fuse_vma_close(struct vm_area_struct *vma) > */ > static vm_fault_t fuse_page_mkwrite(struct vm_fault *vmf) > { > - struct page *page = vmf->page; > + struct folio *folio = page_folio(vmf->page); > struct inode *inode = file_inode(vmf->vma->vm_file); > > file_update_time(vmf->vma->vm_file); > - lock_page(page); > - if (page->mapping != inode->i_mapping) { > - unlock_page(page); > + folio_lock(folio); > + if (folio->mapping != inode->i_mapping) { > + folio_unlock(folio); > return VM_FAULT_NOPAGE; > } > > - fuse_wait_on_page_writeback(inode, page->index); > + fuse_wait_on_folio_writeback(inode, folio); > return VM_FAULT_LOCKED; > } > > -- > 2.43.0 > >