diff options
author | Andreas Dilger <adilger@whamcloud.com> | 2011-09-24 13:17:05 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2011-09-24 14:34:47 -0400 |
commit | d90d6a71460d2e3fd57607f90f9abbd1e7d77e3b (patch) | |
tree | eb0f6931fbdb12de524e7401931a04772abddc8e | |
parent | 6b56f3d92d08806ab415e8fd883480f7f9c148e8 (diff) | |
download | e2fsprogs-d90d6a71460d2e3fd57607f90f9abbd1e7d77e3b.tar.gz |
tune2fs: kill external journal if device not found
Continue to remove the external journal device even if the device
cannot be found.
Add a test to verify that the journal device/UUID are actually removed
from the superblock. It isn't possible to use a real journal device
for testing without loopback devices and such (it must be a block device)
and this would invite complexity and failures in the regression test.
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
-rw-r--r-- | misc/tune2fs.c | 6 | ||||
-rw-r--r-- | tests/t_ext_jnl_rm/script | 28 |
2 files changed, 32 insertions, 2 deletions
diff --git a/misc/tune2fs.c b/misc/tune2fs.c index 3e126971..d0d44c8a 100644 --- a/misc/tune2fs.c +++ b/misc/tune2fs.c @@ -184,7 +184,7 @@ static void remove_journal_device(ext2_filsys fs) journal_path = ext2fs_find_block_device(fs->super->s_journal_dev); if (!journal_path) - return; + goto no_valid_journal; } #ifdef CONFIG_TESTIO_DEBUG @@ -251,7 +251,9 @@ static void remove_journal_device(ext2_filsys fs) no_valid_journal: if (commit_remove_journal == 0) { - fputs(_("Journal NOT removed\n"), stderr); + fputs(_("Cannot locate journal device. It was NOT removed\n" + "Use -f option to remove missing journal device.\n"), + stderr); exit(1); } fs->super->s_journal_dev = 0; diff --git a/tests/t_ext_jnl_rm/script b/tests/t_ext_jnl_rm/script new file mode 100644 index 00000000..d7217b6e --- /dev/null +++ b/tests/t_ext_jnl_rm/script @@ -0,0 +1,28 @@ +printf "remove missing external journal device: " +OUT=$test_name.log + +dd if=/dev/zero of=$TMPFILE bs=1k count=512 > /dev/null 2>&1 + +echo mke2fs -q -F -o Linux -b 1024 $TMPFILE >> $OUT +$MKE2FS -q -F -o Linux -I 128 -b 1024 $TMPFILE >> $OUT 2>&1 + +echo "debugfs add journal device/UUID" >> $OUT +$DEBUGFS -w -f - $TMPFILE <<- EOF >> $OUT 2>&1 + feature has_journal + ssv journal_dev 0x9999 + ssv journal_uuid 1db3f677-6832-4adb-bafc-8e4059c30a33 +EOF + +echo "tune2fs -f -O ^has_journal $TMPFILE" >> $OUT +$TUNE2FS -f -O ^has_journal $TMPFILE >> $OUT 2>&1 +$DUMPE2FS -h $TMPFILE >> $OUT 2>&1 +if [ "$(grep 'Journal UUID:' $OUT)" ]; then + rm -f $test_name.ok + mv $test_name.log $test_name.failed + echo "failed" +else + echo "ok" + mv $test_name.log $test_name.ok + rm -f $test_name.failed +fi +rm -f $TMPFILE |