[LogFS] Erase new journal segments
authorJoern Engel <joern@logfs.org>
Mon, 29 Mar 2010 19:14:52 +0000 (21:14 +0200)
committerJoern Engel <joern@logfs.org>
Mon, 29 Mar 2010 19:14:52 +0000 (21:14 +0200)
If the device contains on old logfs image and the journal is moved to
segment that have never been used by the current logfs and not all
journal segments are erased before the next mount, the old content can
confuse mount code.  To prevent this, always erase the new journal
segments.

Signed-off-by: Joern Engel <joern@logfs.org>
fs/logfs/journal.c

index 25b1345c4652433655436be0b3f1f11707db1714..d57c7b07b60bd101849bafa36bbb387bfd30d877 100644 (file)
@@ -823,6 +823,8 @@ void do_logfs_journal_wl_pass(struct super_block *sb)
                logfs_set_segment_reserved(sb, segno);
                err = btree_insert32(head, segno, (void *)1, GFP_KERNEL);
                BUG_ON(err); /* mempool should prevent this */
+               err = logfs_erase_segment(sb, segno, 1);
+               BUG_ON(err); /* FIXME: remount-ro would be nicer */
        }
        /* Manually move journal_area */
        freeseg(sb, area->a_segno);