summaryrefslogtreecommitdiff
path: root/fs/fuse
diff options
context:
space:
mode:
authorJoanne Koong <joannelkoong@gmail.com>2024-08-26 14:19:06 -0700
committerMiklos Szeredi <mszeredi@redhat.com>2024-08-29 11:43:12 +0200
commit9a8ebcf5e04e6cc9472bfcdd90b2aeef35a2f8f6 (patch)
tree25963bfcf2338c159db4a40535b4a5da9c268adb /fs/fuse
parent672c3b7457fcee9656c36a29a4b21ec4a652433e (diff)
downloadlwn-9a8ebcf5e04e6cc9472bfcdd90b2aeef35a2f8f6.tar.gz
lwn-9a8ebcf5e04e6cc9472bfcdd90b2aeef35a2f8f6.zip
fuse: convert fuse_writepages_fill() to use a folio for its tmp page
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 commit 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> Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/fuse')
-rw-r--r--fs/fuse/file.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index 9d4f8bdc3865..0653fac40782 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);
err = 0;
if (data->wpa) {