Skip to content

Commit 02b78c7

Browse files
joannekoongMiklos Szeredi
authored andcommitted
fuse: convert readdir to use folios
Convert readdir requests to use a folio instead of a page. No functional changes. Signed-off-by: Joanne Koong <[email protected]> Reviewed-by: Josef Bacik <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]>
1 parent c1e4862 commit 02b78c7

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

fs/fuse/readdir.c

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -331,24 +331,25 @@ static int fuse_readdir_uncached(struct file *file, struct dir_context *ctx)
331331
{
332332
int plus;
333333
ssize_t res;
334-
struct page *page;
334+
struct folio *folio;
335335
struct inode *inode = file_inode(file);
336336
struct fuse_mount *fm = get_fuse_mount(inode);
337337
struct fuse_io_args ia = {};
338338
struct fuse_args_pages *ap = &ia.ap;
339-
struct fuse_page_desc desc = { .length = PAGE_SIZE };
339+
struct fuse_folio_desc desc = { .length = PAGE_SIZE };
340340
u64 attr_version = 0;
341341
bool locked;
342342

343-
page = alloc_page(GFP_KERNEL);
344-
if (!page)
343+
folio = folio_alloc(GFP_KERNEL, 0);
344+
if (!folio)
345345
return -ENOMEM;
346346

347347
plus = fuse_use_readdirplus(inode, ctx);
348348
ap->args.out_pages = true;
349-
ap->num_pages = 1;
350-
ap->pages = &page;
351-
ap->descs = &desc;
349+
ap->uses_folios = true;
350+
ap->num_folios = 1;
351+
ap->folios = &folio;
352+
ap->folio_descs = &desc;
352353
if (plus) {
353354
attr_version = fuse_get_attr_version(fm->fc);
354355
fuse_read_args_fill(&ia, file, ctx->pos, PAGE_SIZE,
@@ -367,15 +368,15 @@ static int fuse_readdir_uncached(struct file *file, struct dir_context *ctx)
367368
if (ff->open_flags & FOPEN_CACHE_DIR)
368369
fuse_readdir_cache_end(file, ctx->pos);
369370
} else if (plus) {
370-
res = parse_dirplusfile(page_address(page), res,
371+
res = parse_dirplusfile(folio_address(folio), res,
371372
file, ctx, attr_version);
372373
} else {
373-
res = parse_dirfile(page_address(page), res, file,
374+
res = parse_dirfile(folio_address(folio), res, file,
374375
ctx);
375376
}
376377
}
377378

378-
__free_page(page);
379+
folio_put(folio);
379380
fuse_invalidate_atime(inode);
380381
return res;
381382
}

0 commit comments

Comments
 (0)