Skip to content

Commit c1e4862

Browse files
joannekoongMiklos Szeredi
authored andcommitted
fuse: convert readlink to use folios
Convert readlink 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 ee80369 commit c1e4862

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

fs/fuse/dir.c

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1585,14 +1585,15 @@ static int fuse_permission(struct mnt_idmap *idmap,
15851585
return err;
15861586
}
15871587

1588-
static int fuse_readlink_page(struct inode *inode, struct page *page)
1588+
static int fuse_readlink_page(struct inode *inode, struct folio *folio)
15891589
{
15901590
struct fuse_mount *fm = get_fuse_mount(inode);
1591-
struct fuse_page_desc desc = { .length = PAGE_SIZE - 1 };
1591+
struct fuse_folio_desc desc = { .length = PAGE_SIZE - 1 };
15921592
struct fuse_args_pages ap = {
1593-
.num_pages = 1,
1594-
.pages = &page,
1595-
.descs = &desc,
1593+
.uses_folios = true,
1594+
.num_folios = 1,
1595+
.folios = &folio,
1596+
.folio_descs = &desc,
15961597
};
15971598
char *link;
15981599
ssize_t res;
@@ -1614,7 +1615,7 @@ static int fuse_readlink_page(struct inode *inode, struct page *page)
16141615
if (WARN_ON(res >= PAGE_SIZE))
16151616
return -EIO;
16161617

1617-
link = page_address(page);
1618+
link = folio_address(folio);
16181619
link[res] = '\0';
16191620

16201621
return 0;
@@ -1624,7 +1625,7 @@ static const char *fuse_get_link(struct dentry *dentry, struct inode *inode,
16241625
struct delayed_call *callback)
16251626
{
16261627
struct fuse_conn *fc = get_fuse_conn(inode);
1627-
struct page *page;
1628+
struct folio *folio;
16281629
int err;
16291630

16301631
err = -EIO;
@@ -1638,20 +1639,20 @@ static const char *fuse_get_link(struct dentry *dentry, struct inode *inode,
16381639
if (!dentry)
16391640
goto out_err;
16401641

1641-
page = alloc_page(GFP_KERNEL);
1642+
folio = folio_alloc(GFP_KERNEL, 0);
16421643
err = -ENOMEM;
1643-
if (!page)
1644+
if (!folio)
16441645
goto out_err;
16451646

1646-
err = fuse_readlink_page(inode, page);
1647+
err = fuse_readlink_page(inode, folio);
16471648
if (err) {
1648-
__free_page(page);
1649+
folio_put(folio);
16491650
goto out_err;
16501651
}
16511652

1652-
set_delayed_call(callback, page_put_link, page);
1653+
set_delayed_call(callback, page_put_link, &folio->page);
16531654

1654-
return page_address(page);
1655+
return folio_address(folio);
16551656

16561657
out_err:
16571658
return ERR_PTR(err);
@@ -2231,7 +2232,7 @@ void fuse_init_dir(struct inode *inode)
22312232

22322233
static int fuse_symlink_read_folio(struct file *null, struct folio *folio)
22332234
{
2234-
int err = fuse_readlink_page(folio->mapping->host, &folio->page);
2235+
int err = fuse_readlink_page(folio->mapping->host, folio);
22352236

22362237
if (!err)
22372238
folio_mark_uptodate(folio);

0 commit comments

Comments
 (0)