If sbi->cur_cp is 2 and the duplicate_checkpoint function returns
in advance because sbi->cp_backuped is set to true, we cannot set
sbi->cur_cp to 1.

Signed-off-by: Wang Xiaojun <[email protected]>
---
 fsck/fsck.c  | 3 ---
 fsck/mount.c | 5 ++---
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/fsck/fsck.c b/fsck/fsck.c
index 110c1ec..aa77a34 100644
--- a/fsck/fsck.c
+++ b/fsck/fsck.c
@@ -2383,9 +2383,6 @@ static void fix_checkpoints(struct f2fs_sb_info *sbi)
 {
        /* copy valid checkpoint to its mirror position */
        duplicate_checkpoint(sbi);
-
-       /* repair checkpoint at CP #0 position */
-       sbi->cur_cp = 1;
        fix_checkpoint(sbi);
 }
 
diff --git a/fsck/mount.c b/fsck/mount.c
index c928a15..295170e 100644
--- a/fsck/mount.c
+++ b/fsck/mount.c
@@ -2998,6 +2998,8 @@ void duplicate_checkpoint(struct f2fs_sb_info *sbi)
        ASSERT(ret >= 0);
 
        sbi->cp_backuped = 1;
+       /* repair checkpoint at CP #0 position */
+       sbi->cur_cp = 1;
 
        MSG(0, "Info: Duplicate valid checkpoint to mirror position "
                "%llu -> %llu\n", src, dst);
@@ -3098,9 +3100,6 @@ void write_checkpoints(struct f2fs_sb_info *sbi)
 {
        /* copy valid checkpoint to its mirror position */
        duplicate_checkpoint(sbi);
-
-       /* repair checkpoint at CP #0 position */
-       sbi->cur_cp = 1;
        write_checkpoint(sbi);
 }
 
-- 
2.31.1



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to