2017-09-10 16:20:51

by Yunlong Song

[permalink] [raw]
Subject: [PATCH] f2fs-tools: move_curseg_info only if check_curseg_offset fails

Current design will lose recovery process when check_curseg_offset is OK.

Signed-off-by: Yunlong Song <[email protected]>
---
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


2017-09-12 01:20:34

by Chao Yu

[permalink] [raw]
Subject: Re: [PATCH] f2fs-tools: move_curseg_info only if check_curseg_offset fails

On 2017/9/11 0:20, Yunlong Song wrote:
> Current design will lose recovery process when check_curseg_offset is OK.
>
> Signed-off-by: Yunlong Song <[email protected]>

Reviewed-by: Chao Yu <[email protected]>

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