mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
xfs: support realtime/log device setup changes in config sections
Currently changing the devices used by "USE_EXTERNAL" environmental variable is not supported by the config section parsing. Add the functionality so that we can use config sections to test external device configs successfully. This required tracking down a bug in _check_xfs_filesystem() which was causing a log device to be passed to a test device without an external log device. This was caused by an uninitialised variable in the function. I also added full output file removals to the first couple of generic tests that were failing, because that's where the check failure output ends up in this case. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Eryu Guan <eguan@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
committed by
Dave Chinner
parent
dfe582dd39
commit
f8c65ca45d
+45
-18
@@ -416,6 +416,30 @@ if [ -f "$HOST_OPTIONS" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
_check_device()
|
||||
{
|
||||
local name=$1
|
||||
local dev_needed=$2
|
||||
local dev=$3
|
||||
|
||||
if [ -z "$dev" ]; then
|
||||
if [ "$dev_needed" == "required" ]; then
|
||||
_fatal "common/config: $name is required but not defined!"
|
||||
fi
|
||||
return
|
||||
fi
|
||||
|
||||
echo $dev | grep -qE ":|//" > /dev/null 2>&1
|
||||
network_dev=$?
|
||||
if [ "$FSTYP" == "overlay" ]; then
|
||||
if [ ! -d "$dev" ]; then
|
||||
_fatal "common/config: $name ($dev) is not a directory for overlay"
|
||||
fi
|
||||
elif [ ! -b "$dev" -a "$network_dev" != "0" ]; then
|
||||
_fatal "common/config: $name ($dev) is not a block device or a network filesystem"
|
||||
fi
|
||||
}
|
||||
|
||||
# Parse config section options. This function will parse all the configuration
|
||||
# within a single section which name is passed as an argument. For section
|
||||
# name format see comments in get_config_sections().
|
||||
@@ -449,10 +473,13 @@ get_next_config() {
|
||||
local OLD_TEST_FS_MOUNT_OPTS=$TEST_FS_MOUNT_OPTS
|
||||
local OLD_MKFS_OPTIONS=$MKFS_OPTIONS
|
||||
local OLD_FSCK_OPTIONS=$FSCK_OPTIONS
|
||||
local OLD_USE_EXTERNAL=$USE_EXTERNAL
|
||||
|
||||
unset MOUNT_OPTIONS
|
||||
unset MKFS_OPTIONS
|
||||
unset FSCK_OPTIONS
|
||||
unset USE_EXTERNAL
|
||||
|
||||
# We might have deduced SCRATCH_DEV from the SCRATCH_DEV_POOL in the previous
|
||||
# run, so we have to unset it now.
|
||||
if [ "$SCRATCH_DEV_NOT_SET" == "true" ]; then
|
||||
@@ -466,11 +493,20 @@ get_next_config() {
|
||||
[ -z "$TEST_FS_MOUNT_OPTS" ] && _test_mount_opts
|
||||
[ -z "$MKFS_OPTIONS" ] && _mkfs_opts
|
||||
[ -z "$FSCK_OPTIONS" ] && _fsck_opts
|
||||
|
||||
# clear the external devices if we are not using them
|
||||
if [ -z "$USE_EXTERNAL" ]; then
|
||||
unset TEST_RTDEV
|
||||
unset TEST_LOGDEV
|
||||
unset SCRATCH_RTDEV
|
||||
unset SCRATCH_LOGDEV
|
||||
fi
|
||||
else
|
||||
[ -z "$MOUNT_OPTIONS" ] && export MOUNT_OPTIONS=$OLD_MOUNT_OPTIONS
|
||||
[ -z "$TEST_FS_MOUNT_OPTS" ] && export TEST_FS_MOUNT_OPTS=$OLD_TEST_FS_MOUNT_OPTS
|
||||
[ -z "$MKFS_OPTIONS" ] && export MKFS_OPTIONS=$OLD_MKFS_OPTIONS
|
||||
[ -z "$FSCK_OPTIONS" ] && export FSCK_OPTIONS=$OLD_FSCK_OPTIONS
|
||||
[ -z "$USE_EXTERNAL" ] && export USE_EXTERNAL=$OLD_USE_EXTERNAL
|
||||
fi
|
||||
|
||||
# set default RESULT_BASE
|
||||
@@ -491,15 +527,7 @@ get_next_config() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo $TEST_DEV | grep -qE ":|//" > /dev/null 2>&1
|
||||
if [ ! -b "$TEST_DEV" -a "$?" != "0" -a "$FSTYP" != "overlay" ]; then
|
||||
echo "common/config: Error: \$TEST_DEV ($TEST_DEV) is not a block device or a network filesystem"
|
||||
exit 1
|
||||
elif [ "$FSTYP" == "overlay" -a ! -d "$TEST_DEV" ]; then
|
||||
echo "common/config: Error: \$TEST_DEV ($TEST_DEV) is not a directory for overlay"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
_check_device TEST_DEV required $TEST_DEV
|
||||
if [ ! -d "$TEST_DIR" ]; then
|
||||
echo "common/config: Error: \$TEST_DIR ($TEST_DIR) is not a directory"
|
||||
exit 1
|
||||
@@ -517,19 +545,18 @@ get_next_config() {
|
||||
export SCRATCH_DEV_NOT_SET=true
|
||||
fi
|
||||
|
||||
echo $SCRATCH_DEV | grep -qE ":|//" > /dev/null 2>&1
|
||||
if [ ! -z "$SCRATCH_DEV" -a ! -b "$SCRATCH_DEV" -a "$?" != "0" -a "$FSTYP" != "overlay" ]; then
|
||||
echo "common/config: Error: \$SCRATCH_DEV ($SCRATCH_DEV) is not a block device or a network filesystem"
|
||||
exit 1
|
||||
elif [ ! -z "$SCRATCH_DEV" -a "$FSTYP" == "overlay" -a ! -d "$SCRATCH_DEV" ]; then
|
||||
echo "common/config: Error: \$SCRATCH_DEV ($SCRATCH_DEV) is not a directory for overlay"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
_check_device SCRATCH_DEV optional $SCRATCH_DEV
|
||||
if [ ! -z "$SCRATCH_MNT" -a ! -d "$SCRATCH_MNT" ]; then
|
||||
echo "common/config: Error: \$SCRATCH_MNT ($SCRATCH_MNT) is not a directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -n "$USE_EXTERNAL" ]; then
|
||||
_check_device TEST_RTDEV optional $TEST_RTDEV
|
||||
_check_device TEST_LOGDEV optional $TEST_LOGDEV
|
||||
_check_device SCRATCH_RTDEV optional $SCRATCH_RTDEV
|
||||
_check_device SCRATCH_LOGDEV optional $SCRATCH_LOGDEV
|
||||
fi
|
||||
}
|
||||
|
||||
if [ -z "$CONFIG_INCLUDED" ]; then
|
||||
|
||||
+2
-1
@@ -39,7 +39,8 @@ _init_flakey()
|
||||
|
||||
_mount_flakey()
|
||||
{
|
||||
mount -t $FSTYP $MOUNT_OPTIONS $FLAKEY_DEV $SCRATCH_MNT
|
||||
_scratch_options mount
|
||||
mount -t $FSTYP $SCRATCH_OPTIONS $MOUNT_OPTIONS $FLAKEY_DEV $SCRATCH_MNT
|
||||
}
|
||||
|
||||
_unmount_flakey()
|
||||
|
||||
@@ -2017,6 +2017,7 @@ _check_xfs_filesystem()
|
||||
fi
|
||||
|
||||
extra_mount_options=""
|
||||
extra_log_options=""
|
||||
extra_options=""
|
||||
device=$1
|
||||
if [ -f $device ];then
|
||||
|
||||
@@ -45,6 +45,8 @@ _supported_fs generic
|
||||
_supported_os IRIX Linux
|
||||
_require_test
|
||||
|
||||
rm -f $seqres.full
|
||||
|
||||
echo "Silence is goodness ..."
|
||||
|
||||
# ensure target directory exists
|
||||
|
||||
@@ -47,6 +47,8 @@ _supported_os Linux
|
||||
_require_test
|
||||
_require_xfs_io_command "flink"
|
||||
|
||||
rm -f $seqres.full
|
||||
|
||||
testfile="${TEST_DIR}/tst-tmpfile-flink"
|
||||
|
||||
# test creating a r/w tmpfile, do I/O and link it into the namespace
|
||||
|
||||
Reference in New Issue
Block a user