generic/050: Fix test failure for filesystems without journal

Filesystems without journal can happily mount unrecovered filesystem
read-only which confuses this test. Handle this by providing
different expected output for filesystems without journal.

Signed-off-by: Jan Kara <jack@suse.cz>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
This commit is contained in:
Jan Kara
2019-11-05 14:19:21 +01:00
committed by Eryu Guan
parent 6ad9168b0a
commit 2814810ed1
6 changed files with 59 additions and 7 deletions
+1
View File
@@ -255,6 +255,7 @@
# Symlinked files
/tests/generic/035.out
/tests/generic/050.out
/tests/xfs/033.out
/tests/xfs/071.out
/tests/xfs/096.out
+27 -7
View File
@@ -3159,7 +3159,7 @@ _require_norecovery()
# It's possible that TEST_DEV and SCRATCH_DEV have different features (it'd be
# odd, but possible) so check $TEST_DEV by default, but we can optionall pass
# any dev we want.
_require_metadata_journaling()
_has_metadata_journaling()
{
if [ -z $1 ]; then
local dev=$TEST_DEV
@@ -3169,32 +3169,52 @@ _require_metadata_journaling()
case "$FSTYP" in
ext2|vfat|msdos|udf)
_notrun "$FSTYP does not support metadata journaling"
echo "$FSTYP does not support metadata journaling"
return 1
;;
ext4)
# ext4 could be mkfs'd without a journal...
_require_dumpe2fs
$DUMPE2FS_PROG -h $dev 2>&1 | grep -q has_journal || \
_notrun "$FSTYP on $dev not configured with metadata journaling"
$DUMPE2FS_PROG -h $dev 2>&1 | grep -q has_journal || {
echo "$FSTYP on $dev not configured with metadata journaling"
return 1
}
# ext4 might not load a journal
_exclude_scratch_mount_option "noload"
if _normalize_mount_options | grep -qw "noload"; then
echo "mount option \"noload\" not allowed in this test"
return 1
fi
;;
overlay)
# metadata journaling check is based on base filesystem configurations
# and because -overlay option saves those configurations to OVL_BASE_*,
# adding restore/override the configurations before/after the check.
if [ ! -z $OVL_BASE_FSTYP -a $OVL_BASE_FSTYP != "overlay" ]; then
local ret
_overlay_config_restore
_require_metadata_journaling
_has_metadata_journaling
ret=$?
_overlay_config_override
return $ret
else
_notrun "No metadata journaling support for legacy overlay setup"
echo "No metadata journaling support for legacy overlay setup"
return 1
fi
;;
*)
# by default we pass; if you need to, add your fs above!
;;
esac
return 0
}
_require_metadata_journaling()
{
local msg=$(_has_metadata_journaling $@)
if [ -n "$msg" ]; then
_notrun "$msg"
fi
}
_count_extents()
+8
View File
@@ -6,6 +6,7 @@
#
# Check out various mount/remount/unmount scenarious on a read-only blockdev.
#
seqfull=$0
seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"
@@ -34,6 +35,13 @@ _require_scratch_shutdown
_require_local_device $SCRATCH_DEV
_require_norecovery
# Select appropriate output file
features=""
if ! _has_metadata_journaling $SCRATCH_DEV >/dev/null; then
features="nojournal"
fi
_link_out_file "$features"
_scratch_mkfs >/dev/null 2>&1
filter_ro_mount() {
+1
View File
@@ -0,0 +1 @@
nojournal: nojournal
+22
View File
@@ -0,0 +1,22 @@
QA output created by 050
setting device read-only
mounting read-only block device:
mount: device write-protected, mounting read-only
touching file on read-only filesystem (should fail)
touch: cannot touch 'SCRATCH_MNT/foo': Read-only file system
unmounting read-only filesystem
setting device read-write
mounting read-write block device:
touch files
going down:
unmounting shutdown filesystem:
setting device read-only
mounting filesystem that needs recovery on a read-only device:
mount: device write-protected, mounting read-only
unmounting read-only filesystem
mounting filesystem with -o norecovery on a read-only device:
mount: device write-protected, mounting read-only
unmounting read-only filesystem
setting device read-write
mounting filesystem that needs recovery with -o ro:
*** done