On the combination of first fail and second success,
we will miss to mark recovery flag because currently
we reuse err variable in the loop.

Signed-off-by: Chengguang Xu <cgxu...@zoho.com.cn>
---
 fs/f2fs/super.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 1443cee15863..f3a68af3b43a 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -2951,6 +2951,7 @@ static int read_raw_super_block(struct f2fs_sb_info *sbi,
                        f2fs_err(sbi, "Unable to read %dth superblock",
                                 block + 1);
                        err = -EIO;
+                       *recovery = 1;
                        continue;
                }
 
@@ -2960,6 +2961,7 @@ static int read_raw_super_block(struct f2fs_sb_info *sbi,
                        f2fs_err(sbi, "Can't find valid F2FS filesystem in %dth 
superblock",
                                 block + 1);
                        brelse(bh);
+                       *recovery = 1;
                        continue;
                }
 
@@ -2972,10 +2974,6 @@ static int read_raw_super_block(struct f2fs_sb_info *sbi,
                brelse(bh);
        }
 
-       /* Fail to read any one of the superblocks*/
-       if (err < 0)
-               *recovery = 1;
-
        /* No valid superblock */
        if (!*raw_super)
                kvfree(super);
-- 
2.20.1





_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to