diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2014-09-03 19:41:44 -0700 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2014-09-03 19:45:42 -0700 |
commit | cfeb015e887db6edbd13ad41597d82f1e565fc33 (patch) | |
tree | 27d0d7f9369d531c387906e6915a14752cb64ea9 | |
parent | 7eb6c5a03b78d8673030e89ce15345d69d5e5777 (diff) | |
download | android_external_f2fs-tools-cfeb015e887db6edbd13ad41597d82f1e565fc33.tar.gz android_external_f2fs-tools-cfeb015e887db6edbd13ad41597d82f1e565fc33.tar.bz2 android_external_f2fs-tools-cfeb015e887db6edbd13ad41597d82f1e565fc33.zip |
f2fs: rearrange options to remove redundant check
This patch summarizes the usage of options.
-a : auto_fix, fix corruption, only if f2fs reported some potential errors
-f : force, fix corruption entire partition
None : prompt, if fsck.f2fs detets any corruption
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r-- | fsck/fsck.c | 18 | ||||
-rw-r--r-- | fsck/main.c | 17 | ||||
-rw-r--r-- | fsck/mount.c | 2 | ||||
-rw-r--r-- | include/f2fs_fs.h | 1 |
4 files changed, 19 insertions, 19 deletions
diff --git a/fsck/fsck.c b/fsck/fsck.c index 3fd9784..d0819c4 100644 --- a/fsck/fsck.c +++ b/fsck/fsck.c @@ -367,7 +367,7 @@ void fsck_chk_inode_blk(struct f2fs_sb_info *sbi, u32 nid, if (find_and_dec_hard_link_list(sbi, nid)) { ASSERT_MSG("[0x%x] needs more i_links=0x%x", nid, i_links); - if (config.fix_cnt) { + if (config.fix_on) { node_blk->i.i_links = cpu_to_le32(i_links + 1); need_fix = 1; @@ -383,7 +383,7 @@ void fsck_chk_inode_blk(struct f2fs_sb_info *sbi, u32 nid, if (fsck_chk_xattr_blk(sbi, nid, le32_to_cpu(node_blk->i.i_xattr_nid), blk_cnt) && - config.fix_cnt) { + config.fix_on) { node_blk->i.i_xattr_nid = 0; need_fix = 1; FIX_MSG("Remove xattr block: 0x%x, x_nid = 0x%x", @@ -408,7 +408,7 @@ void fsck_chk_inode_blk(struct f2fs_sb_info *sbi, u32 nid, ftype, nid, idx, ni->version); if (!ret) { *blk_cnt = *blk_cnt + 1; - } else if (config.fix_cnt) { + } else if (config.fix_on) { node_blk->i.i_addr[idx] = 0; need_fix = 1; FIX_MSG("[0x%x] i_addr[%d] = 0", nid, idx); @@ -433,7 +433,7 @@ void fsck_chk_inode_blk(struct f2fs_sb_info *sbi, u32 nid, ftype, ntype, blk_cnt); if (!ret) { *blk_cnt = *blk_cnt + 1; - } else if (config.fix_cnt) { + } else if (config.fix_on) { node_blk->i.i_nid[idx] = 0; need_fix = 1; FIX_MSG("[0x%x] i_nid[%d] = 0", nid, idx); @@ -457,7 +457,7 @@ check: ASSERT_MSG("ino: 0x%x has i_blocks: %08"PRIx64", " "but has %u blocks", nid, i_blocks, *blk_cnt); - if (config.fix_cnt) { + if (config.fix_on) { node_blk->i.i_blocks = cpu_to_le64(*blk_cnt); need_fix = 1; FIX_MSG("[0x%x] i_blocks=0x%08"PRIx64" -> 0x%x", @@ -467,7 +467,7 @@ check: if (ftype == F2FS_FT_DIR && i_links != child_cnt) { ASSERT_MSG("ino: 0x%x has i_links: %u but real links: %u", nid, i_links, child_cnt); - if (config.fix_cnt) { + if (config.fix_on) { node_blk->i.i_links = cpu_to_le32(child_cnt); need_fix = 1; FIX_MSG("Dir: 0x%x i_links= 0x%x -> 0x%x", @@ -651,7 +651,7 @@ int fsck_chk_dentry_blk(struct f2fs_sb_info *sbi, u32 blk_addr, TYPE_INODE, &blk_cnt); - if (ret && config.fix_cnt) { + if (ret && config.fix_on) { int j; int slots = (name_len + F2FS_SLOT_LEN - 1) / F2FS_SLOT_LEN; @@ -734,7 +734,7 @@ void fsck_chk_orphan_node(struct f2fs_sb_info *sbi) if (!is_set_ckpt_flags(ckpt, CP_ORPHAN_PRESENT_FLAG)) return; - if (config.fix_cnt) + if (config.fix_on) return; start_blk = __start_cp_addr(sbi) + 1 + @@ -983,7 +983,7 @@ int fsck_verify(struct f2fs_sb_info *sbi) } /* fix global metadata */ - if (config.bug_on && config.fix_cnt) { + if (config.bug_on && config.fix_on) { fix_nat_entries(sbi); rewrite_sit_area_bitmap(sbi); fix_checkpoint(sbi); diff --git a/fsck/main.c b/fsck/main.c index e20eac2..2af3daf 100644 --- a/fsck/main.c +++ b/fsck/main.c @@ -17,7 +17,10 @@ void fsck_usage() { MSG(0, "\nUsage: fsck.f2fs [options] device\n"); MSG(0, "[options]:\n"); + MSG(0, " -a check/fix potential corruption, reported by f2fs\n"); MSG(0, " -d debug level [default:0]\n"); + MSG(0, " -f check/fix entire partition\n"); + MSG(0, " -t show directory tree [-d -1]\n"); exit(1); } @@ -214,24 +217,22 @@ fsck_again: f2fs_do_umount(sbi); out: if (config.func == FSCK && config.bug_on) { - if (config.fix_on == 0 && !config.auto_fix) { + if (config.fix_on == 0 && config.auto_fix == 0) { char ans[255] = {0}; retry: printf("Do you want to fix this partition? [Y/N] "); ret = scanf("%s", ans); ASSERT(ret >= 0); if (!strcasecmp(ans, "y")) - config.fix_cnt++; + config.fix_on = 1; else if (!strcasecmp(ans, "n")) - config.fix_cnt = 0; + config.fix_on = 0; else goto retry; - } else { - config.fix_cnt++; + + if (config.fix_on) + goto fsck_again; } - /* avoid infinite trials */ - if (config.fix_cnt > 0 && config.fix_cnt < 4) - goto fsck_again; } f2fs_finalize_device(&config); diff --git a/fsck/mount.c b/fsck/mount.c index 5a12bb1..415f977 100644 --- a/fsck/mount.c +++ b/fsck/mount.c @@ -1213,7 +1213,7 @@ int f2fs_do_mount(struct f2fs_sb_info *sbi) u32 flag = le32_to_cpu(sbi->ckpt->ckpt_flags); if (flag & CP_FSCK_FLAG) - config.fix_cnt = 1; + config.fix_on = 1; else return 1; } diff --git a/include/f2fs_fs.h b/include/f2fs_fs.h index 6467791..6367e05 100644 --- a/include/f2fs_fs.h +++ b/include/f2fs_fs.h @@ -183,7 +183,6 @@ struct f2fs_configuration { int func; void *private; int fix_on; - int fix_cnt; int bug_on; int auto_fix; } __attribute__((packed)); |