From: Darrick J. Wong Date: Mon, 8 Sep 2014 23:12:35 +0000 (-0700) Subject: misc: zero s_jnl_blocks when removing internal journal X-Git-Tag: v1.43-WIP-2015-05-18~200 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e690eae5134f9ac101c49a8ca0e096da186da067;p=thirdparty%2Fe2fsprogs.git misc: zero s_jnl_blocks when removing internal journal When we're removing the internal journal (broken journal, turning it off, or adding an external journal), zero s_jnl_blocks so that they can't be picked up by accident later. Signed-off-by: Darrick J. Wong Cc: TR Reardon Signed-off-by: Theodore Ts'o --- diff --git a/e2fsck/journal.c b/e2fsck/journal.c index 16bd757ea..d12e3176b 100644 --- a/e2fsck/journal.c +++ b/e2fsck/journal.c @@ -549,6 +549,7 @@ static errcode_t e2fsck_journal_fix_bad_inode(e2fsck_t ctx, "filesystem is now ext2 only ***\n\n"); sb->s_feature_compat &= ~EXT3_FEATURE_COMPAT_HAS_JOURNAL; sb->s_journal_inum = 0; + memset(sb->s_jnl_blocks, 0, sizeof(sb->s_jnl_blocks)); ctx->flags |= E2F_FLAG_JOURNAL_INODE; ctx->fs->flags &= ~EXT2_FLAG_MASTER_SB_ONLY; e2fsck_clear_recover(ctx, 1); diff --git a/lib/ext2fs/mkjournal.c b/lib/ext2fs/mkjournal.c index 85f86bf9b..0a7cd18a0 100644 --- a/lib/ext2fs/mkjournal.c +++ b/lib/ext2fs/mkjournal.c @@ -490,6 +490,7 @@ errcode_t ext2fs_add_journal_device(ext2_filsys fs, ext2_filsys journal_dev) fs->super->s_journal_dev = st.st_rdev; memcpy(fs->super->s_journal_uuid, jsb->s_uuid, sizeof(fs->super->s_journal_uuid)); + memset(fs->super->s_jnl_blocks, 0, sizeof(fs->super->s_jnl_blocks)); fs->super->s_feature_compat |= EXT3_FEATURE_COMPAT_HAS_JOURNAL; ext2fs_mark_super_dirty(fs); return 0; diff --git a/misc/tune2fs.c b/misc/tune2fs.c index c22c8fddf..7292ab1a3 100644 --- a/misc/tune2fs.c +++ b/misc/tune2fs.c @@ -377,6 +377,7 @@ static errcode_t remove_journal_inode(ext2_filsys fs) return retval; } fs->super->s_journal_inum = 0; + memset(fs->super->s_jnl_blocks, 0, sizeof(fs->super->s_jnl_blocks)); ext2fs_mark_super_dirty(fs); return 0;