Skip to content

Commit 1de0736

Browse files
Matthew Wilcox (Oracle)jankara
authored andcommitted
ext2: Convert ext2_add_link() to use a folio
Remove five hidden calls to compound_head() and fix a couple of places that assumed PAGE_SIZE. Signed-off-by: Matthew Wilcox (Oracle) <[email protected]> Signed-off-by: Jan Kara <[email protected]> Message-Id: <[email protected]>
1 parent 51706b6 commit 1de0736

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

fs/ext2/dir.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

554554
got_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 */
575575
out_put:
576-
ext2_put_page(page, de);
576+
folio_release_kmap(folio, de);
577577
return err;
578578
out_unlock:
579-
unlock_page(page);
579+
folio_unlock(folio);
580580
goto out_put;
581581
}
582582

0 commit comments

Comments
 (0)