mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 12:17:12 +09:00
f2fs: Add a new CP flag to help fsck fix resize SPO issues
[ Upstream commit c84ef3c5e6 ]
Add and set a new CP flag CP_RESIZEFS_FLAG during
online resize FS to help fsck fix the metadata mismatch
that may happen due to SPO during resize, where SB
got updated but CP data couldn't be written yet.
fsck errors -
Info: CKPT version = 6ed7bccb
Wrong user_block_count(2233856)
[f2fs_do_mount:3365] Checkpoint is polluted
Signed-off-by: Sahitya Tummala <stummala@codeaurora.org>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
066f1e4174
commit
380d129046
@@ -1301,10 +1301,14 @@ static void update_ckpt_flags(struct f2fs_sb_info *sbi, struct cp_control *cpc)
|
||||
else
|
||||
__clear_ckpt_flags(ckpt, CP_ORPHAN_PRESENT_FLAG);
|
||||
|
||||
if (is_sbi_flag_set(sbi, SBI_NEED_FSCK) ||
|
||||
is_sbi_flag_set(sbi, SBI_IS_RESIZEFS))
|
||||
if (is_sbi_flag_set(sbi, SBI_NEED_FSCK))
|
||||
__set_ckpt_flags(ckpt, CP_FSCK_FLAG);
|
||||
|
||||
if (is_sbi_flag_set(sbi, SBI_IS_RESIZEFS))
|
||||
__set_ckpt_flags(ckpt, CP_RESIZEFS_FLAG);
|
||||
else
|
||||
__clear_ckpt_flags(ckpt, CP_RESIZEFS_FLAG);
|
||||
|
||||
if (is_sbi_flag_set(sbi, SBI_CP_DISABLED))
|
||||
__set_ckpt_flags(ckpt, CP_DISABLED_FLAG);
|
||||
else
|
||||
|
||||
@@ -124,6 +124,7 @@ struct f2fs_super_block {
|
||||
/*
|
||||
* For checkpoint
|
||||
*/
|
||||
#define CP_RESIZEFS_FLAG 0x00004000
|
||||
#define CP_DISABLED_QUICK_FLAG 0x00002000
|
||||
#define CP_DISABLED_FLAG 0x00001000
|
||||
#define CP_QUOTA_NEED_FSCK_FLAG 0x00000800
|
||||
|
||||
Reference in New Issue
Block a user