From: Josef Bacik <josef@toxicpanda.com>
To: Joanne Koong <joannelkoong@gmail.com>
Cc: miklos@szeredi.hu, linux-fsdevel@vger.kernel.org,
bernd.schubert@fastmail.fm, jefflexu@linux.alibaba.com,
kernel-team@meta.com
Subject: Re: [PATCH v3 6/9] fuse: convert fuse_writepages_fill() to use a folio for its tmp page
Date: Fri, 23 Aug 2024 15:03:46 -0400 [thread overview]
Message-ID: <20240823190346.GB2237731@perftesting> (raw)
In-Reply-To: <20240823162730.521499-7-joannelkoong@gmail.com>
On Fri, Aug 23, 2024 at 09:27:27AM -0700, Joanne Koong wrote:
> To pave the way for refactoring out the shared logic in
> fuse_writepages_fill() and fuse_writepage_locked(), this change converts
> the temporary page in fuse_writepages_fill() to use the folio API.
>
> This is similar to the change in e0887e095a80 ("fuse: Convert
> fuse_writepage_locked to take a folio"), which converted the tmp page in
> fuse_writepage_locked() to use the folio API.
>
> inc_node_page_state() is intentionally preserved here instead of
> converting to node_stat_add_folio() since it is updating the stat of the
> underlying page and to better maintain API symmetry with
> dec_node_page_stat() in fuse_writepage_finish_stat().
>
> No functional changes added.
>
> Signed-off-by: Joanne Koong <joannelkoong@gmail.com>
> ---
> fs/fuse/file.c | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/fs/fuse/file.c b/fs/fuse/file.c
> index a51b0b085616..905b202a7acd 100644
> --- a/fs/fuse/file.c
> +++ b/fs/fuse/file.c
> @@ -2260,7 +2260,7 @@ static int fuse_writepages_fill(struct folio *folio,
> struct inode *inode = data->inode;
> struct fuse_inode *fi = get_fuse_inode(inode);
> struct fuse_conn *fc = get_fuse_conn(inode);
> - struct page *tmp_page;
> + struct folio *tmp_folio;
> int err;
>
> if (wpa && fuse_writepage_need_send(fc, &folio->page, ap, data)) {
> @@ -2269,8 +2269,8 @@ static int fuse_writepages_fill(struct folio *folio,
> }
>
> err = -ENOMEM;
> - tmp_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM);
> - if (!tmp_page)
> + tmp_folio = folio_alloc(GFP_NOFS | __GFP_HIGHMEM, 0);
> + if (!tmp_folio)
> goto out_unlock;
>
> /*
> @@ -2290,7 +2290,7 @@ static int fuse_writepages_fill(struct folio *folio,
> err = -ENOMEM;
> wpa = fuse_writepage_args_alloc();
> if (!wpa) {
> - __free_page(tmp_page);
> + folio_put(tmp_folio);
> goto out_unlock;
> }
> fuse_writepage_add_to_bucket(fc, wpa);
> @@ -2308,14 +2308,14 @@ static int fuse_writepages_fill(struct folio *folio,
> }
> folio_start_writeback(folio);
>
> - copy_highpage(tmp_page, &folio->page);
> - ap->pages[ap->num_pages] = tmp_page;
> + folio_copy(tmp_folio, folio);
> + ap->pages[ap->num_pages] = &tmp_folio->page;
> ap->descs[ap->num_pages].offset = 0;
> ap->descs[ap->num_pages].length = PAGE_SIZE;
> data->orig_pages[ap->num_pages] = &folio->page;
>
> inc_wb_stat(&inode_to_bdi(inode)->wb, WB_WRITEBACK);
> - inc_node_page_state(tmp_page, NR_WRITEBACK_TEMP);
> + inc_node_page_state(&tmp_folio->page, NR_WRITEBACK_TEMP);
I *think* you can use
node_stat_add_folio(tmp_folio, NR_WRITEBACK_TEMP);
here instead of inc_node_page_state(). Thanks,
Josef
next prev parent reply other threads:[~2024-08-23 19:03 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-23 16:27 [PATCH v3 0/9] fuse: writeback clean up / refactoring Joanne Koong
2024-08-23 16:27 ` [PATCH v3 1/9] fuse: drop unused fuse_mount arg in fuse_writepage_finish() Joanne Koong
2024-08-23 16:27 ` [PATCH v3 2/9] fuse: refactor finished writeback stats updates into helper function Joanne Koong
2024-08-23 16:27 ` [PATCH v3 3/9] fuse: update stats for pages in dropped aux writeback list Joanne Koong
2024-08-23 16:27 ` [PATCH v3 4/9] fuse: clean up error handling in fuse_writepages() Joanne Koong
2024-08-23 16:27 ` [PATCH v3 5/9] fuse: move initialization of fuse_file to fuse_writepages() instead of in callback Joanne Koong
2024-08-23 18:59 ` Josef Bacik
2024-08-23 21:21 ` Joanne Koong
2024-08-23 16:27 ` [PATCH v3 6/9] fuse: convert fuse_writepages_fill() to use a folio for its tmp page Joanne Koong
2024-08-23 19:03 ` Josef Bacik [this message]
2024-08-23 21:38 ` Joanne Koong
2024-08-26 14:31 ` Josef Bacik
2024-08-23 16:27 ` [PATCH v3 7/9] fuse: move folio_start_writeback to after the allocations in fuse_writepage_locked() Joanne Koong
2024-08-23 16:27 ` [PATCH v3 8/9] fuse: move fuse file initialization to wpa allocation time Joanne Koong
2024-08-23 16:27 ` [PATCH v3 9/9] fuse: refactor out shared logic in fuse_writepages_fill() and fuse_writepage_locked() Joanne Koong
2024-08-23 19:24 ` Josef Bacik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240823190346.GB2237731@perftesting \
--to=josef@toxicpanda.com \
--cc=bernd.schubert@fastmail.fm \
--cc=jefflexu@linux.alibaba.com \
--cc=joannelkoong@gmail.com \
--cc=kernel-team@meta.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=miklos@szeredi.hu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.