mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
f2fs: Use a folio in is_alive()
Remove four 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
722066201f
commit
1a116e876a
1 changed files with 11 additions and 11 deletions
22
fs/f2fs/gc.c
22
fs/f2fs/gc.c
|
@ -1134,7 +1134,7 @@ block_t f2fs_start_bidx_of_node(unsigned int node_ofs, struct inode *inode)
|
|||
static bool is_alive(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
|
||||
struct node_info *dni, block_t blkaddr, unsigned int *nofs)
|
||||
{
|
||||
struct page *node_page;
|
||||
struct folio *node_folio;
|
||||
nid_t nid;
|
||||
unsigned int ofs_in_node, max_addrs, base;
|
||||
block_t source_blkaddr;
|
||||
|
@ -1142,12 +1142,12 @@ static bool is_alive(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
|
|||
nid = le32_to_cpu(sum->nid);
|
||||
ofs_in_node = le16_to_cpu(sum->ofs_in_node);
|
||||
|
||||
node_page = f2fs_get_node_page(sbi, nid);
|
||||
if (IS_ERR(node_page))
|
||||
node_folio = f2fs_get_node_folio(sbi, nid);
|
||||
if (IS_ERR(node_folio))
|
||||
return false;
|
||||
|
||||
if (f2fs_get_node_info(sbi, nid, dni, false)) {
|
||||
f2fs_put_page(node_page, 1);
|
||||
f2fs_folio_put(node_folio, true);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1158,12 +1158,12 @@ static bool is_alive(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
|
|||
}
|
||||
|
||||
if (f2fs_check_nid_range(sbi, dni->ino)) {
|
||||
f2fs_put_page(node_page, 1);
|
||||
f2fs_folio_put(node_folio, true);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (IS_INODE(node_page)) {
|
||||
base = offset_in_addr(F2FS_INODE(node_page));
|
||||
if (IS_INODE(&node_folio->page)) {
|
||||
base = offset_in_addr(F2FS_INODE(&node_folio->page));
|
||||
max_addrs = DEF_ADDRS_PER_INODE;
|
||||
} else {
|
||||
base = 0;
|
||||
|
@ -1173,13 +1173,13 @@ static bool is_alive(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
|
|||
if (base + ofs_in_node >= max_addrs) {
|
||||
f2fs_err(sbi, "Inconsistent blkaddr offset: base:%u, ofs_in_node:%u, max:%u, ino:%u, nid:%u",
|
||||
base, ofs_in_node, max_addrs, dni->ino, dni->nid);
|
||||
f2fs_put_page(node_page, 1);
|
||||
f2fs_folio_put(node_folio, true);
|
||||
return false;
|
||||
}
|
||||
|
||||
*nofs = ofs_of_node(node_page);
|
||||
source_blkaddr = data_blkaddr(NULL, node_page, ofs_in_node);
|
||||
f2fs_put_page(node_page, 1);
|
||||
*nofs = ofs_of_node(&node_folio->page);
|
||||
source_blkaddr = data_blkaddr(NULL, &node_folio->page, ofs_in_node);
|
||||
f2fs_folio_put(node_folio, true);
|
||||
|
||||
if (source_blkaddr != blkaddr) {
|
||||
#ifdef CONFIG_F2FS_CHECK_FS
|
||||
|
|
Loading…
Add table
Reference in a new issue