mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 09:04:39 +02:00
f2fs: Use a folio in f2fs_recover_inode_page()
Save four hidden calls to compound_head(). Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Chao Yu <chao@kernel.org> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
7c213e98c7
commit
8b78cea812
|
|
@ -2815,7 +2815,7 @@ int f2fs_recover_inode_page(struct f2fs_sb_info *sbi, struct page *page)
|
|||
struct f2fs_inode *src, *dst;
|
||||
nid_t ino = ino_of_node(page);
|
||||
struct node_info old_ni, new_ni;
|
||||
struct page *ipage;
|
||||
struct folio *ifolio;
|
||||
int err;
|
||||
|
||||
err = f2fs_get_node_info(sbi, ino, &old_ni, false);
|
||||
|
|
@ -2825,8 +2825,8 @@ int f2fs_recover_inode_page(struct f2fs_sb_info *sbi, struct page *page)
|
|||
if (unlikely(old_ni.blk_addr != NULL_ADDR))
|
||||
return -EINVAL;
|
||||
retry:
|
||||
ipage = f2fs_grab_cache_page(NODE_MAPPING(sbi), ino, false);
|
||||
if (!ipage) {
|
||||
ifolio = f2fs_grab_cache_folio(NODE_MAPPING(sbi), ino, false);
|
||||
if (IS_ERR(ifolio)) {
|
||||
memalloc_retry_wait(GFP_NOFS);
|
||||
goto retry;
|
||||
}
|
||||
|
|
@ -2834,13 +2834,13 @@ int f2fs_recover_inode_page(struct f2fs_sb_info *sbi, struct page *page)
|
|||
/* Should not use this inode from free nid list */
|
||||
remove_free_nid(sbi, ino);
|
||||
|
||||
if (!PageUptodate(ipage))
|
||||
SetPageUptodate(ipage);
|
||||
fill_node_footer(ipage, ino, ino, 0, true);
|
||||
set_cold_node(ipage, false);
|
||||
if (!folio_test_uptodate(ifolio))
|
||||
folio_mark_uptodate(ifolio);
|
||||
fill_node_footer(&ifolio->page, ino, ino, 0, true);
|
||||
set_cold_node(&ifolio->page, false);
|
||||
|
||||
src = F2FS_INODE(page);
|
||||
dst = F2FS_INODE(ipage);
|
||||
dst = F2FS_INODE(&ifolio->page);
|
||||
|
||||
memcpy(dst, src, offsetof(struct f2fs_inode, i_ext));
|
||||
dst->i_size = 0;
|
||||
|
|
@ -2876,8 +2876,8 @@ int f2fs_recover_inode_page(struct f2fs_sb_info *sbi, struct page *page)
|
|||
WARN_ON(1);
|
||||
set_node_addr(sbi, &new_ni, NEW_ADDR, false);
|
||||
inc_valid_inode_count(sbi);
|
||||
set_page_dirty(ipage);
|
||||
f2fs_put_page(ipage, 1);
|
||||
folio_mark_dirty(ifolio);
|
||||
f2fs_folio_put(ifolio, true);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user