f2fs: retain inconsistency information to initiate fsck.f2fs
This patch adds sbi->need_fsck to conduct fsck.f2fs later. This flag can only be removed by fsck.f2fs. Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
Родитель
4081363fbe
Коммит
2ae4c673e3
|
@ -882,6 +882,9 @@ static void do_checkpoint(struct f2fs_sb_info *sbi, bool is_umount)
|
|||
else
|
||||
clear_ckpt_flags(ckpt, CP_ORPHAN_PRESENT_FLAG);
|
||||
|
||||
if (sbi->need_fsck)
|
||||
set_ckpt_flags(ckpt, CP_FSCK_FLAG);
|
||||
|
||||
/* update SIT/NAT bitmap */
|
||||
get_sit_bitmap(sbi, __bitmap_ptr(sbi, SIT_BITMAP));
|
||||
get_nat_bitmap(sbi, __bitmap_ptr(sbi, NAT_BITMAP));
|
||||
|
|
|
@ -434,6 +434,7 @@ struct f2fs_sb_info {
|
|||
struct buffer_head *raw_super_buf; /* buffer head of raw sb */
|
||||
struct f2fs_super_block *raw_super; /* raw super block pointer */
|
||||
int s_dirty; /* dirty flag for checkpoint */
|
||||
bool need_fsck; /* need fsck.f2fs to fix */
|
||||
|
||||
/* for node-related operations */
|
||||
struct f2fs_nm_info *nm_info; /* node manager */
|
||||
|
|
|
@ -849,6 +849,7 @@ static void init_sb_info(struct f2fs_sb_info *sbi)
|
|||
atomic_set(&sbi->nr_pages[i], 0);
|
||||
|
||||
sbi->dir_level = DEF_DIR_LEVEL;
|
||||
sbi->need_fsck = false;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -85,6 +85,7 @@ struct f2fs_super_block {
|
|||
/*
|
||||
* For checkpoint
|
||||
*/
|
||||
#define CP_FSCK_FLAG 0x00000010
|
||||
#define CP_ERROR_FLAG 0x00000008
|
||||
#define CP_COMPACT_SUM_FLAG 0x00000004
|
||||
#define CP_ORPHAN_PRESENT_FLAG 0x00000002
|
||||
|
|
Загрузка…
Ссылка в новой задаче