Skip to content

Commit 9bafbe7

Browse files
josefbacikMiklos Szeredi
authored andcommitted
fuse: convert fuse_fill_write_pages to use folios
Convert this to grab the folio directly, and update all the helpers to use the folio related functions. Reviewed-by: Joanne Koong <[email protected]> Signed-off-by: Josef Bacik <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]>
1 parent 785d06a commit 9bafbe7

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

fs/fuse/file.c

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,7 +1213,7 @@ static ssize_t fuse_fill_write_pages(struct fuse_io_args *ia,
12131213

12141214
do {
12151215
size_t tmp;
1216-
struct page *page;
1216+
struct folio *folio;
12171217
pgoff_t index = pos >> PAGE_SHIFT;
12181218
size_t bytes = min_t(size_t, PAGE_SIZE - offset,
12191219
iov_iter_count(ii));
@@ -1225,25 +1225,27 @@ static ssize_t fuse_fill_write_pages(struct fuse_io_args *ia,
12251225
if (fault_in_iov_iter_readable(ii, bytes))
12261226
break;
12271227

1228-
err = -ENOMEM;
1229-
page = grab_cache_page_write_begin(mapping, index);
1230-
if (!page)
1228+
folio = __filemap_get_folio(mapping, index, FGP_WRITEBEGIN,
1229+
mapping_gfp_mask(mapping));
1230+
if (IS_ERR(folio)) {
1231+
err = PTR_ERR(folio);
12311232
break;
1233+
}
12321234

12331235
if (mapping_writably_mapped(mapping))
1234-
flush_dcache_page(page);
1236+
flush_dcache_folio(folio);
12351237

1236-
tmp = copy_page_from_iter_atomic(page, offset, bytes, ii);
1237-
flush_dcache_page(page);
1238+
tmp = copy_folio_from_iter_atomic(folio, offset, bytes, ii);
1239+
flush_dcache_folio(folio);
12381240

12391241
if (!tmp) {
1240-
unlock_page(page);
1241-
put_page(page);
1242+
folio_unlock(folio);
1243+
folio_put(folio);
12421244
goto again;
12431245
}
12441246

12451247
err = 0;
1246-
ap->pages[ap->num_pages] = page;
1248+
ap->pages[ap->num_pages] = &folio->page;
12471249
ap->descs[ap->num_pages].length = tmp;
12481250
ap->num_pages++;
12491251

@@ -1255,10 +1257,10 @@ static ssize_t fuse_fill_write_pages(struct fuse_io_args *ia,
12551257

12561258
/* If we copied full page, mark it uptodate */
12571259
if (tmp == PAGE_SIZE)
1258-
SetPageUptodate(page);
1260+
folio_mark_uptodate(folio);
12591261

1260-
if (PageUptodate(page)) {
1261-
unlock_page(page);
1262+
if (folio_test_uptodate(folio)) {
1263+
folio_unlock(folio);
12621264
} else {
12631265
ia->write.page_locked = true;
12641266
break;

0 commit comments

Comments
 (0)