Commit 9a8ebcf5 authored by Joanne Koong's avatar Joanne Koong Committed by Miklos Szeredi

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 e0887e09 ("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: default avatarJoanne Koong <joannelkoong@gmail.com>
Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
parent 672c3b74
...@@ -2260,7 +2260,7 @@ static int fuse_writepages_fill(struct folio *folio, ...@@ -2260,7 +2260,7 @@ static int fuse_writepages_fill(struct folio *folio,
struct inode *inode = data->inode; struct inode *inode = data->inode;
struct fuse_inode *fi = get_fuse_inode(inode); struct fuse_inode *fi = get_fuse_inode(inode);
struct fuse_conn *fc = get_fuse_conn(inode); struct fuse_conn *fc = get_fuse_conn(inode);
struct page *tmp_page; struct folio *tmp_folio;
int err; int err;
if (wpa && fuse_writepage_need_send(fc, &folio->page, ap, data)) { if (wpa && fuse_writepage_need_send(fc, &folio->page, ap, data)) {
...@@ -2269,8 +2269,8 @@ static int fuse_writepages_fill(struct folio *folio, ...@@ -2269,8 +2269,8 @@ static int fuse_writepages_fill(struct folio *folio,
} }
err = -ENOMEM; err = -ENOMEM;
tmp_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM); tmp_folio = folio_alloc(GFP_NOFS | __GFP_HIGHMEM, 0);
if (!tmp_page) if (!tmp_folio)
goto out_unlock; goto out_unlock;
/* /*
...@@ -2290,7 +2290,7 @@ static int fuse_writepages_fill(struct folio *folio, ...@@ -2290,7 +2290,7 @@ static int fuse_writepages_fill(struct folio *folio,
err = -ENOMEM; err = -ENOMEM;
wpa = fuse_writepage_args_alloc(); wpa = fuse_writepage_args_alloc();
if (!wpa) { if (!wpa) {
__free_page(tmp_page); folio_put(tmp_folio);
goto out_unlock; goto out_unlock;
} }
fuse_writepage_add_to_bucket(fc, wpa); fuse_writepage_add_to_bucket(fc, wpa);
...@@ -2308,14 +2308,14 @@ static int fuse_writepages_fill(struct folio *folio, ...@@ -2308,14 +2308,14 @@ static int fuse_writepages_fill(struct folio *folio,
} }
folio_start_writeback(folio); folio_start_writeback(folio);
copy_highpage(tmp_page, &folio->page); folio_copy(tmp_folio, folio);
ap->pages[ap->num_pages] = tmp_page; ap->pages[ap->num_pages] = &tmp_folio->page;
ap->descs[ap->num_pages].offset = 0; ap->descs[ap->num_pages].offset = 0;
ap->descs[ap->num_pages].length = PAGE_SIZE; ap->descs[ap->num_pages].length = PAGE_SIZE;
data->orig_pages[ap->num_pages] = &folio->page; data->orig_pages[ap->num_pages] = &folio->page;
inc_wb_stat(&inode_to_bdi(inode)->wb, WB_WRITEBACK); 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; err = 0;
if (data->wpa) { if (data->wpa) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment