summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Dilger <adilger@whamcloud.com>2011-09-24 13:17:05 -0400
committerTheodore Ts'o <tytso@mit.edu>2011-09-24 14:34:47 -0400
commitd90d6a71460d2e3fd57607f90f9abbd1e7d77e3b (patch)
treeeb0f6931fbdb12de524e7401931a04772abddc8e
parent6b56f3d92d08806ab415e8fd883480f7f9c148e8 (diff)
downloade2fsprogs-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.c6
-rw-r--r--tests/t_ext_jnl_rm/script28
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