From: Qu Wenruo Date: Thu, 8 Sep 2016 02:52:21 +0000 (+0800) Subject: common/rc: Enhance _exclude_scratch_mount_option to handle multiple options X-Git-Tag: v2022.05.01~2363 X-Git-Url: http://git.apps.os.sepia.ceph.com/?p=xfstests-dev.git;a=commitdiff_plain;h=d67700c75a0af8e926fc5bf5111217454a217c3a common/rc: Enhance _exclude_scratch_mount_option to handle multiple options Enhance _exclude_scratch_mount_option() function to normalize mount options. Now it can understand and extract real mount option from string like "-o opt1,opt2 -oopt3". And now we do word grep to handle mount options like noinode_cache and inode_cache. Finally, allow it to accept multiple options at the same time. No need for multiple _exclude_scratch_mount_option lines now Signed-off-by: Qu Wenruo Reviewed-by: Eryu Guan Signed-off-by: Eryu Guan --- diff --git a/common/rc b/common/rc index 899bef49..505e8239 100644 --- a/common/rc +++ b/common/rc @@ -3192,12 +3192,25 @@ _require_cloner() _notrun "cloner binary not present at $CLONER_PROG" } -# skip test if MKFS_OPTIONS contains the given string +# Normalize mount options from global $MOUNT_OPTIONS +# Convert options like "-o opt1,opt2 -oopt3" to +# "opt1 opt2 opt3" +_normalize_mount_options() +{ + echo $MOUNT_OPTIONS | sed -n 's/-o\s*\(\S*\)/\1/gp'| sed 's/,/ /g' +} + +# skip test if MOUNT_OPTIONS contains the given strings _exclude_scratch_mount_option() { - if echo $MOUNT_OPTIONS | grep -q "$1"; then - _notrun "mount option \"$1\" not allowed in this test" - fi + local mnt_opts=$(_normalize_mount_options) + + while [ $# -gt 0 ]; do + if echo $mnt_opts | grep -qw "$1"; then + _notrun "mount option \"$1\" not allowed in this test" + fi + shift + done } _require_atime() diff --git a/tests/ext4/271 b/tests/ext4/271 index 8674090e..6f61e51e 100755 --- a/tests/ext4/271 +++ b/tests/ext4/271 @@ -41,10 +41,8 @@ _supported_os Linux _require_scratch # this test needs no journal to be loaded, skip on journal related mount # options, otherwise mount would fail with "-o noload" mount option -_exclude_scratch_mount_option "data=" -_exclude_scratch_mount_option "commit=" -_exclude_scratch_mount_option "journal_checksum" -_exclude_scratch_mount_option "journal_async_commit" +_exclude_scratch_mount_option "data" "commit" "journal_checksum" \ + "journal_async_commit" rm -f $seqres.full _scratch_mkfs_sized $((128 * 1024 * 1024)) >> $seqres.full 2>&1 diff --git a/tests/xfs/134 b/tests/xfs/134 index b3a11073..21fe1edd 100755 --- a/tests/xfs/134 +++ b/tests/xfs/134 @@ -51,8 +51,7 @@ _supported_os Linux IRIX _require_test _require_xfs_quota # we can't run with group quotas -_exclude_scratch_mount_option "gquota" -_exclude_scratch_mount_option "grpquota" +_exclude_scratch_mount_option "gquota" "grpquota" dir=$SCRATCH_MNT/project