On 2021/10/25 20:09, Wang Xiaojun wrote:
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.

Hmmm, in previous implementation, what problem we will encounter, and
what's the root cause?

Thanks,


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);
  }


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

Reply via email to