In sanity_check_nid, __check_inode_mode will check i_mode value of an inode. So integrate sanity_check_inode to __check_inode_mode to clean up the code.
Signed-off-by: Sheng Yong <shengyo...@huawei.com> --- fsck/fsck.c | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/fsck/fsck.c b/fsck/fsck.c index 29823a1..fcaab14 100644 --- a/fsck/fsck.c +++ b/fsck/fsck.c @@ -334,6 +334,11 @@ static int __check_inode_mode(u32 nid, enum FILE_TYPE ftype, u32 mode) { if (ftype >= F2FS_FT_MAX) return 0; + /* f2fs_iget will return -EIO if mode is not valid file type */ + if (!S_ISLNK(mode) && !S_ISREG(mode) && !S_ISDIR(mode) && + !S_ISCHR(mode) && !S_ISBLK(mode) && !S_ISFIFO(mode) && + !S_ISSOCK(mode)) + goto err; if (S_ISLNK(mode) && ftype != F2FS_FT_SYMLINK) goto err; if (S_ISREG(mode) && ftype != F2FS_FT_REG_FILE) @@ -465,25 +470,6 @@ static int sanity_check_nid(struct f2fs_sb_info *sbi, u32 nid, return 0; } -static int sanity_check_inode(struct f2fs_sb_info *sbi, struct f2fs_node *node) -{ - struct f2fs_fsck *fsck = F2FS_FSCK(sbi); - struct f2fs_inode *fi = &node->i; - - if (!(le16_to_cpu(fi->i_mode) & S_IFMT)) { - ASSERT_MSG("i_mode is not valid. [0x%x]", le16_to_cpu(fi->i_mode)); - goto remove_node; - } - - return 0; - -remove_node: - f2fs_set_bit(le32_to_cpu(node->footer.ino), fsck->nat_area_bitmap); - fsck->chk.valid_blk_cnt--; - fsck->chk.valid_node_cnt--; - return -EINVAL; -} - static int fsck_chk_xattr_blk(struct f2fs_sb_info *sbi, u32 ino, u32 x_nid, u32 *blk_cnt) { @@ -528,8 +514,6 @@ int fsck_chk_node_blk(struct f2fs_sb_info *sbi, struct f2fs_inode *inode, if (ntype == TYPE_INODE) { struct f2fs_fsck *fsck = F2FS_FSCK(sbi); - if (sanity_check_inode(sbi, node_blk)) - goto err; fsck_chk_inode_blk(sbi, nid, ftype, node_blk, blk_cnt, &ni, child); quota_add_inode_usage(fsck->qctx, nid, &node_blk->i); } else { -- 2.11.0 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel