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 | 33 +++++++++++----------------------
 1 file changed, 11 insertions(+), 22 deletions(-)

diff --git a/fsck/fsck.c b/fsck/fsck.c
index 0a37f7a..f6391e9 100644
--- a/fsck/fsck.c
+++ b/fsck/fsck.c
@@ -334,6 +334,15 @@ 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)) {
+               ASSERT_MSG("inode [0x%x] unknown file type i_mode [0x%x]",
+                          nid, mode);
+               return -1;
+       }
+
        if (S_ISLNK(mode) && ftype != F2FS_FT_SYMLINK)
                goto err;
        if (S_ISREG(mode) && ftype != F2FS_FT_REG_FILE)
@@ -350,7 +359,8 @@ static int __check_inode_mode(u32 nid, enum FILE_TYPE 
ftype, u32 mode)
                goto err;
        return 0;
 err:
-       ASSERT_MSG("mismatch i_mode [0x%x] [0x%x vs. 0x%x]", nid, ftype, mode);
+       ASSERT_MSG("inode [0x%x] mismatch i_mode [0x%x vs. 0x%x]",
+                  nid, ftype, mode);
        return -1;
 }
 
@@ -465,25 +475,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 +519,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.14.1


------------------------------------------------------------------------------
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

Reply via email to