aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fsck/defrag.c1
-rw-r--r--fsck/fsck.h1
-rw-r--r--fsck/mount.c8
3 files changed, 10 insertions, 0 deletions
diff --git a/fsck/defrag.c b/fsck/defrag.c
index 7ca7260..7abc0bf 100644
--- a/fsck/defrag.c
+++ b/fsck/defrag.c
@@ -90,6 +90,7 @@ int f2fs_defragment(struct f2fs_sb_info *sbi, u64 from, u64 len, u64 to, int lef
/* update curseg info; can update sit->types */
move_curseg_info(sbi, to);
+ zero_journal_entries(sbi);
write_curseg_info(sbi);
/* flush dirty sit entries */
diff --git a/fsck/fsck.h b/fsck/fsck.h
index 1464146..3870948 100644
--- a/fsck/fsck.h
+++ b/fsck/fsck.h
@@ -135,6 +135,7 @@ extern int f2fs_do_mount(struct f2fs_sb_info *);
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 *);
diff --git a/fsck/mount.c b/fsck/mount.c
index 8418dcc..735ed90 100644
--- a/fsck/mount.c
+++ b/fsck/mount.c
@@ -1446,6 +1446,14 @@ void move_curseg_info(struct f2fs_sb_info *sbi, u64 from)
}
}
+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);