When moving data or node blocks, it changes current segment information
dynamtically. Meanwhile, its journal entry space is recovered by old
stale data.
This patch makes sure that its journal space is zeroed out.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
/* update curseg info; can update sit->types */
move_curseg_info(sbi, to);
+ zero_journal_entries(sbi);
write_curseg_info(sbi);
/* flush dirty sit entries */
extern void f2fs_do_umount(struct f2fs_sb_info *);
extern void flush_journal_entries(struct f2fs_sb_info *);
+extern void zero_journal_entries(struct f2fs_sb_info *);
extern void flush_sit_entries(struct f2fs_sb_info *);
extern void move_curseg_info(struct f2fs_sb_info *, u64);
extern void write_curseg_info(struct f2fs_sb_info *);
}
}
+void zero_journal_entries(struct f2fs_sb_info *sbi)
+{
+ int i;
+
+ for (i = 0; i < NO_CHECK_TYPE; i++)
+ CURSEG_I(sbi, i)->sum_blk->n_nats = 0;
+}
+
void write_curseg_info(struct f2fs_sb_info *sbi)
{
struct f2fs_checkpoint *cp = F2FS_CKPT(sbi);