@@ -497,7 +497,7 @@ int ext2_add_link (struct dentry *dentry, struct inode *inode)
497497 unsigned chunk_size = ext2_chunk_size (dir );
498498 unsigned reclen = EXT2_DIR_REC_LEN (namelen );
499499 unsigned short rec_len , name_len ;
500- struct page * page = NULL ;
500+ struct folio * folio = NULL ;
501501 ext2_dirent * de ;
502502 unsigned long npages = dir_pages (dir );
503503 unsigned long n ;
@@ -506,19 +506,19 @@ int ext2_add_link (struct dentry *dentry, struct inode *inode)
506506
507507 /*
508508 * We take care of directory expansion in the same loop.
509- * This code plays outside i_size, so it locks the page
509+ * This code plays outside i_size, so it locks the folio
510510 * to protect that region.
511511 */
512512 for (n = 0 ; n <= npages ; n ++ ) {
513- char * kaddr = ext2_get_page (dir , n , 0 , & page );
513+ char * kaddr = ext2_get_folio (dir , n , 0 , & folio );
514514 char * dir_end ;
515515
516516 if (IS_ERR (kaddr ))
517517 return PTR_ERR (kaddr );
518- lock_page ( page );
518+ folio_lock ( folio );
519519 dir_end = kaddr + ext2_last_byte (dir , n );
520520 de = (ext2_dirent * )kaddr ;
521- kaddr += PAGE_SIZE - reclen ;
521+ kaddr += folio_size ( folio ) - reclen ;
522522 while ((char * )de <= kaddr ) {
523523 if ((char * )de == dir_end ) {
524524 /* We hit i_size */
@@ -545,15 +545,15 @@ int ext2_add_link (struct dentry *dentry, struct inode *inode)
545545 goto got_it ;
546546 de = (ext2_dirent * ) ((char * ) de + rec_len );
547547 }
548- unlock_page ( page );
549- ext2_put_page ( page , kaddr );
548+ folio_unlock ( folio );
549+ folio_release_kmap ( folio , kaddr );
550550 }
551551 BUG ();
552552 return - EINVAL ;
553553
554554got_it :
555- pos = page_offset ( page ) + offset_in_page ( de );
556- err = ext2_prepare_chunk (page , pos , rec_len );
555+ pos = folio_pos ( folio ) + offset_in_folio ( folio , de );
556+ err = ext2_prepare_chunk (& folio -> page , pos , rec_len );
557557 if (err )
558558 goto out_unlock ;
559559 if (de -> inode ) {
@@ -566,17 +566,17 @@ int ext2_add_link (struct dentry *dentry, struct inode *inode)
566566 memcpy (de -> name , name , namelen );
567567 de -> inode = cpu_to_le32 (inode -> i_ino );
568568 ext2_set_de_type (de , inode );
569- ext2_commit_chunk (page , pos , rec_len );
569+ ext2_commit_chunk (& folio -> page , pos , rec_len );
570570 dir -> i_mtime = inode_set_ctime_current (dir );
571571 EXT2_I (dir )-> i_flags &= ~EXT2_BTREE_FL ;
572572 mark_inode_dirty (dir );
573573 err = ext2_handle_dirsync (dir );
574574 /* OFFSET_CACHE */
575575out_put :
576- ext2_put_page ( page , de );
576+ folio_release_kmap ( folio , de );
577577 return err ;
578578out_unlock :
579- unlock_page ( page );
579+ folio_unlock ( folio );
580580 goto out_put ;
581581}
582582
0 commit comments