Current design will lose recovery process when check_curseg_offset is OK.

Signed-off-by: Yunlong Song <yunlong.s...@huawei.com>
---
 fsck/fsck.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/fsck/fsck.c b/fsck/fsck.c
index cb341ba..56a47be 100644
--- a/fsck/fsck.c
+++ b/fsck/fsck.c
@@ -2026,9 +2026,11 @@ int fsck_verify(struct f2fs_sb_info *sbi)
                        fix_hard_links(sbi);
                        fix_nat_entries(sbi);
                        rewrite_sit_area_bitmap(sbi);
-                       move_curseg_info(sbi, SM_I(sbi)->main_blkaddr);
-                       write_curseg_info(sbi);
-                       flush_curseg_sit_entries(sbi);
+                       if (check_curseg_offset(sbi)) {
+                               move_curseg_info(sbi, SM_I(sbi)->main_blkaddr);
+                               write_curseg_info(sbi);
+                               flush_curseg_sit_entries(sbi);
+                       }
                        fix_checkpoint(sbi);
                } else if (is_set_ckpt_flags(cp, CP_FSCK_FLAG)) {
                        write_checkpoint(sbi);
-- 
1.8.5.2

Reply via email to