f2fs: check cur_valid_map_mir & raw_sit block count when flush sit entries
We should check valid_map_mir and block count to ensure the flushed raw_sit is correct. Signed-off-by: Zhikang Zhang <zhangzhikang1@huawei.com> Signed-off-by: Yunlei He <heyunlei@huawei.com> Reviewed-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
3d165dc3ae
commit
56b07e7e65
@ -3400,6 +3400,11 @@ void flush_sit_entries(struct f2fs_sb_info *sbi, struct cp_control *cpc)
|
|||||||
int offset, sit_offset;
|
int offset, sit_offset;
|
||||||
|
|
||||||
se = get_seg_entry(sbi, segno);
|
se = get_seg_entry(sbi, segno);
|
||||||
|
#ifdef CONFIG_F2FS_CHECK_FS
|
||||||
|
if (memcmp(se->cur_valid_map, se->cur_valid_map_mir,
|
||||||
|
SIT_VBLOCK_MAP_SIZE))
|
||||||
|
f2fs_bug_on(sbi, 1);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* add discard candidates */
|
/* add discard candidates */
|
||||||
if (!(cpc->reason & CP_DISCARD)) {
|
if (!(cpc->reason & CP_DISCARD)) {
|
||||||
@ -3415,10 +3420,14 @@ void flush_sit_entries(struct f2fs_sb_info *sbi, struct cp_control *cpc)
|
|||||||
cpu_to_le32(segno);
|
cpu_to_le32(segno);
|
||||||
seg_info_to_raw_sit(se,
|
seg_info_to_raw_sit(se,
|
||||||
&sit_in_journal(journal, offset));
|
&sit_in_journal(journal, offset));
|
||||||
|
check_block_count(sbi, segno,
|
||||||
|
&sit_in_journal(journal, offset));
|
||||||
} else {
|
} else {
|
||||||
sit_offset = SIT_ENTRY_OFFSET(sit_i, segno);
|
sit_offset = SIT_ENTRY_OFFSET(sit_i, segno);
|
||||||
seg_info_to_raw_sit(se,
|
seg_info_to_raw_sit(se,
|
||||||
&raw_sit->entries[sit_offset]);
|
&raw_sit->entries[sit_offset]);
|
||||||
|
check_block_count(sbi, segno,
|
||||||
|
&raw_sit->entries[sit_offset]);
|
||||||
}
|
}
|
||||||
|
|
||||||
__clear_bit(segno, bitmap);
|
__clear_bit(segno, bitmap);
|
||||||
|
Loading…
Reference in New Issue
Block a user