f2fs: fix to release node block count in error path of f2fs_new_node_page()
authorChao Yu <chao@kernel.org>
Tue, 7 May 2024 03:31:00 +0000 (11:31 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Fri, 10 May 2024 03:38:28 +0000 (03:38 +0000)
It missed to call dec_valid_node_count() to release node block count
in error path, fix it.

Fixes: 141170b759e0 ("f2fs: fix to avoid use f2fs_bug_on() in f2fs_new_node_page()")
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/node.c

index 95cecf08cb377105288778bc3f5400f55f4b3d42..b72ef96f7e33af7a1cc3fcbe3762cdd4babcd799 100644 (file)
@@ -1329,6 +1329,7 @@ struct page *f2fs_new_node_page(struct dnode_of_data *dn, unsigned int ofs)
        }
        if (unlikely(new_ni.blk_addr != NULL_ADDR)) {
                err = -EFSCORRUPTED;
+               dec_valid_node_count(sbi, dn->inode, !ofs);
                set_sbi_flag(sbi, SBI_NEED_FSCK);
                f2fs_handle_error(sbi, ERROR_INVALID_BLKADDR);
                goto fail;
@@ -1355,7 +1356,6 @@ struct page *f2fs_new_node_page(struct dnode_of_data *dn, unsigned int ofs)
        if (ofs == 0)
                inc_valid_inode_count(sbi);
        return page;
-
 fail:
        clear_node_page_dirty(page);
        f2fs_put_page(page, 1);