mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
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:
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
nojournal: nojournal
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user