Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f4d06493 authored by Zhikang Zhang's avatar Zhikang Zhang Committed by Jaegeuk Kim
Browse files

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: default avatarZhikang Zhang <zhangzhikang1@huawei.com>
Signed-off-by: default avatarYunlei He <heyunlei@huawei.com>
Reviewed-by: default avatarChao Yu <yuchao0@huawei.com>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent 20d4b4a4
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -3483,6 +3483,11 @@ void flush_sit_entries(struct f2fs_sb_info *sbi, struct cp_control *cpc)
			int offset, sit_offset;

			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 */
			if (!(cpc->reason & CP_DISCARD)) {
@@ -3498,10 +3503,14 @@ void flush_sit_entries(struct f2fs_sb_info *sbi, struct cp_control *cpc)
							cpu_to_le32(segno);
				seg_info_to_raw_sit(se,
					&sit_in_journal(journal, offset));
				check_block_count(sbi, segno,
					&sit_in_journal(journal, offset));
			} else {
				sit_offset = SIT_ENTRY_OFFSET(sit_i, segno);
				seg_info_to_raw_sit(se,
						&raw_sit->entries[sit_offset]);
				check_block_count(sbi, segno,
						&raw_sit->entries[sit_offset]);
			}

			__clear_bit(segno, bitmap);