Re: [PATCH v3 06/10] fuse: convert fuse_do_readpage to use folios

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Sep 27, 2024 at 1:54 PM Josef Bacik <josef@xxxxxxxxxxxxxx> wrote:
>
> Now that the buffered write path is using folios, convert
> fuse_do_readpage() to take a folio instead of a page, update it to use
> the appropriate folio helpers, and update the callers to pass in the
> folio directly instead of a page.
>
> Signed-off-by: Josef Bacik <josef@xxxxxxxxxxxxxx>
> ---
>  fs/fuse/file.c | 25 ++++++++++++-------------
>  1 file changed, 12 insertions(+), 13 deletions(-)
>
> diff --git a/fs/fuse/file.c b/fs/fuse/file.c
> index 2af9ec67a8e7..8a4621939d3b 100644
> --- a/fs/fuse/file.c
> +++ b/fs/fuse/file.c
> @@ -858,12 +858,13 @@ static void fuse_short_read(struct inode *inode, u64 attr_ver, size_t num_read,
>         }
>  }
>
> -static int fuse_do_readpage(struct file *file, struct page *page)
> +static int fuse_do_readpage(struct file *file, struct folio *folio)

Should we also rename this to fuse_do_readfolio instead of fuse_do_readpage?

>  {
> -       struct inode *inode = page->mapping->host;
> +       struct inode *inode = folio->mapping->host;
>         struct fuse_mount *fm = get_fuse_mount(inode);
> -       loff_t pos = page_offset(page);
> +       loff_t pos = folio_pos(folio);
>         struct fuse_page_desc desc = { .length = PAGE_SIZE };
> +       struct page *page = &folio->page;
>         struct fuse_io_args ia = {
>                 .ap.args.page_zeroing = true,
>                 .ap.args.out_pages = true,
> @@ -875,11 +876,10 @@ static int fuse_do_readpage(struct file *file, struct page *page)
>         u64 attr_ver;
>
>         /*
> -        * Page writeback can extend beyond the lifetime of the
> -        * page-cache page, so make sure we read a properly synced
> -        * page.
> +        * Folio writeback can extend beyond the lifetime of the
> +        * folio, so make sure we read a properly synced folio.

Is this comment true that folio writeback can extend beyond the
lifetime of the folio? Or is it that folio writeback can extend beyond
the lifetime of the folio in the page cache?

>          */
> -       fuse_wait_on_page_writeback(inode, page->index);
> +       fuse_wait_on_folio_writeback(inode, folio);
>
>         attr_ver = fuse_get_attr_version(fm->fc);
>
> @@ -897,25 +897,24 @@ static int fuse_do_readpage(struct file *file, struct page *page)
>         if (res < desc.length)
>                 fuse_short_read(inode, attr_ver, res, &ia.ap);
>
> -       SetPageUptodate(page);
> +       folio_mark_uptodate(folio);
>
>         return 0;
>  }
>
>  static int fuse_read_folio(struct file *file, struct folio *folio)
>  {
> -       struct page *page = &folio->page;
> -       struct inode *inode = page->mapping->host;
> +       struct inode *inode = folio->mapping->host;
>         int err;
>
>         err = -EIO;
>         if (fuse_is_bad(inode))
>                 goto out;
>
> -       err = fuse_do_readpage(file, page);
> +       err = fuse_do_readpage(file, folio);
>         fuse_invalidate_atime(inode);
>   out:
> -       unlock_page(page);
> +       folio_unlock(folio);
>         return err;
>  }
>
> @@ -2444,7 +2443,7 @@ static int fuse_write_begin(struct file *file, struct address_space *mapping,
>                         folio_zero_segment(folio, 0, off);
>                 goto success;
>         }
> -       err = fuse_do_readpage(file, &folio->page);
> +       err = fuse_do_readpage(file, folio);
>         if (err)
>                 goto cleanup;
>  success:
> --
> 2.43.0
>
>





[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux