diff mbox

f2fs-tools: move_curseg_info only if check_curseg_offset fails

Message ID 1505060436-45299-1-git-send-email-yunlong.song@huawei.com (mailing list archive)
State New, archived
Headers show

Commit Message

Yunlong Song Sept. 10, 2017, 4:20 p.m. UTC
Current design will lose recovery process when check_curseg_offset is OK.

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

Comments

Chao Yu Sept. 12, 2017, 1:19 a.m. UTC | #1
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 <yunlong.song@huawei.com>

Reviewed-by: Chao Yu <yuchao0@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);
>
diff mbox

Patch

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