This patch tries to set SBI_NEED_FSCK flag into sbi only when we fail to recover
in fill_super, so we could skip fscking image when we fail to fill super for
other reason.

Signed-off-by: Chao Yu <chao2...@samsung.com>
---
 fs/f2fs/super.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index e649f21..476df03 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -966,7 +966,7 @@ static int f2fs_fill_super(struct super_block *sb, void 
*data, int silent)
        struct buffer_head *raw_super_buf;
        struct inode *root;
        long err = -EINVAL;
-       bool retry = true;
+       bool retry = true, need_fsck = false;
        char *options = NULL;
        int i;
 
@@ -1155,9 +1155,6 @@ try_onemore:
        if (err)
                goto free_proc;
 
-       if (!retry)
-               set_sbi_flag(sbi, SBI_NEED_FSCK);
-
        /* recover fsynced data */
        if (!test_opt(sbi, DISABLE_ROLL_FORWARD)) {
                /*
@@ -1169,8 +1166,13 @@ try_onemore:
                        err = -EROFS;
                        goto free_kobj;
                }
+
+               if (need_fsck)
+                       set_sbi_flag(sbi, SBI_NEED_FSCK);
+
                err = recover_fsync_data(sbi);
                if (err) {
+                       need_fsck = true;
                        f2fs_msg(sb, KERN_ERR,
                                "Cannot recover all fsync data errno=%ld", err);
                        goto free_kobj;
-- 
2.3.0


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to