@@ -2532,7 +2532,7 @@ EXPORT_SYMBOL_GPL(nfs_unlink);
2532
2532
int nfs_symlink (struct mnt_idmap * idmap , struct inode * dir ,
2533
2533
struct dentry * dentry , const char * symname )
2534
2534
{
2535
- struct page * page ;
2535
+ struct folio * folio ;
2536
2536
char * kaddr ;
2537
2537
struct iattr attr ;
2538
2538
unsigned int pathlen = strlen (symname );
@@ -2547,24 +2547,24 @@ int nfs_symlink(struct mnt_idmap *idmap, struct inode *dir,
2547
2547
attr .ia_mode = S_IFLNK | S_IRWXUGO ;
2548
2548
attr .ia_valid = ATTR_MODE ;
2549
2549
2550
- page = alloc_page (GFP_USER );
2551
- if (!page )
2550
+ folio = folio_alloc (GFP_USER , 0 );
2551
+ if (!folio )
2552
2552
return - ENOMEM ;
2553
2553
2554
- kaddr = page_address ( page );
2554
+ kaddr = folio_address ( folio );
2555
2555
memcpy (kaddr , symname , pathlen );
2556
2556
if (pathlen < PAGE_SIZE )
2557
2557
memset (kaddr + pathlen , 0 , PAGE_SIZE - pathlen );
2558
2558
2559
2559
trace_nfs_symlink_enter (dir , dentry );
2560
- error = NFS_PROTO (dir )-> symlink (dir , dentry , page , pathlen , & attr );
2560
+ error = NFS_PROTO (dir )-> symlink (dir , dentry , folio , pathlen , & attr );
2561
2561
trace_nfs_symlink_exit (dir , dentry , error );
2562
2562
if (error != 0 ) {
2563
2563
dfprintk (VFS , "NFS: symlink(%s/%lu, %pd, %s) error %d\n" ,
2564
2564
dir -> i_sb -> s_id , dir -> i_ino ,
2565
2565
dentry , symname , error );
2566
2566
d_drop (dentry );
2567
- __free_page ( page );
2567
+ folio_put ( folio );
2568
2568
return error ;
2569
2569
}
2570
2570
@@ -2574,18 +2574,13 @@ int nfs_symlink(struct mnt_idmap *idmap, struct inode *dir,
2574
2574
* No big deal if we can't add this page to the page cache here.
2575
2575
* READLINK will get the missing page from the server if needed.
2576
2576
*/
2577
- if (!add_to_page_cache_lru (page , d_inode (dentry )-> i_mapping , 0 ,
2578
- GFP_KERNEL )) {
2579
- SetPageUptodate (page );
2580
- unlock_page (page );
2581
- /*
2582
- * add_to_page_cache_lru() grabs an extra page refcount.
2583
- * Drop it here to avoid leaking this page later.
2584
- */
2585
- put_page (page );
2586
- } else
2587
- __free_page (page );
2577
+ if (filemap_add_folio (d_inode (dentry )-> i_mapping , folio , 0 ,
2578
+ GFP_KERNEL ) == 0 ) {
2579
+ folio_mark_uptodate (folio );
2580
+ folio_unlock (folio );
2581
+ }
2588
2582
2583
+ folio_put (folio );
2589
2584
return 0 ;
2590
2585
}
2591
2586
EXPORT_SYMBOL_GPL (nfs_symlink );
0 commit comments