@@ -1585,14 +1585,15 @@ static int fuse_permission(struct mnt_idmap *idmap,
1585
1585
return err ;
1586
1586
}
1587
1587
1588
- static int fuse_readlink_page (struct inode * inode , struct page * page )
1588
+ static int fuse_readlink_page (struct inode * inode , struct folio * folio )
1589
1589
{
1590
1590
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 };
1592
1592
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 ,
1596
1597
};
1597
1598
char * link ;
1598
1599
ssize_t res ;
@@ -1614,7 +1615,7 @@ static int fuse_readlink_page(struct inode *inode, struct page *page)
1614
1615
if (WARN_ON (res >= PAGE_SIZE ))
1615
1616
return - EIO ;
1616
1617
1617
- link = page_address ( page );
1618
+ link = folio_address ( folio );
1618
1619
link [res ] = '\0' ;
1619
1620
1620
1621
return 0 ;
@@ -1624,7 +1625,7 @@ static const char *fuse_get_link(struct dentry *dentry, struct inode *inode,
1624
1625
struct delayed_call * callback )
1625
1626
{
1626
1627
struct fuse_conn * fc = get_fuse_conn (inode );
1627
- struct page * page ;
1628
+ struct folio * folio ;
1628
1629
int err ;
1629
1630
1630
1631
err = - EIO ;
@@ -1638,20 +1639,20 @@ static const char *fuse_get_link(struct dentry *dentry, struct inode *inode,
1638
1639
if (!dentry )
1639
1640
goto out_err ;
1640
1641
1641
- page = alloc_page (GFP_KERNEL );
1642
+ folio = folio_alloc (GFP_KERNEL , 0 );
1642
1643
err = - ENOMEM ;
1643
- if (!page )
1644
+ if (!folio )
1644
1645
goto out_err ;
1645
1646
1646
- err = fuse_readlink_page (inode , page );
1647
+ err = fuse_readlink_page (inode , folio );
1647
1648
if (err ) {
1648
- __free_page ( page );
1649
+ folio_put ( folio );
1649
1650
goto out_err ;
1650
1651
}
1651
1652
1652
- set_delayed_call (callback , page_put_link , page );
1653
+ set_delayed_call (callback , page_put_link , & folio -> page );
1653
1654
1654
- return page_address ( page );
1655
+ return folio_address ( folio );
1655
1656
1656
1657
out_err :
1657
1658
return ERR_PTR (err );
@@ -2231,7 +2232,7 @@ void fuse_init_dir(struct inode *inode)
2231
2232
2232
2233
static int fuse_symlink_read_folio (struct file * null , struct folio * folio )
2233
2234
{
2234
- int err = fuse_readlink_page (folio -> mapping -> host , & folio -> page );
2235
+ int err = fuse_readlink_page (folio -> mapping -> host , folio );
2235
2236
2236
2237
if (!err )
2237
2238
folio_mark_uptodate (folio );
0 commit comments