在 2021/10/26 8:29, Chao Yu 写道:
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,

In fact, it's not causing problems at this time.

During the code review, I found that this was not logically reasonable.

This parameter(sbi->cur_cp) can be set to 1 only after successful replication.

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