aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosef Bacik <josef@toxicpanda.com>2024-04-05 15:56:13 -0400
committerZorro Lang <zlang@kernel.org>2024-04-28 19:08:22 +0800
commitfc408e773e1dc06faa475bd386f2e8e10d7134b1 (patch)
treeee62842f6c3672ed7fb4d5f31af021764aeecb45
parent465775bac1c1e45cca967ad5a2128241e730c0de (diff)
downloadxfstests-dev-fc408e773e1dc06faa475bd386f2e8e10d7134b1.tar.gz
fstests: change how we test for supported raid configs
In btrfs there's a few ways we limit the RAID profiles we'll use. We have the raid56 feature that can be compiled out, zoned devices don't support certain raid configurations, and you can manually set BTRFS_PROFILE_CONFIGS to limit what you're testing. To handle all of these different scenarios in the same way, update _btrfs_get_profile_configs() to check for RAID56 support and remove it if it is not there, and then add _require_btrfs_raid_type and _check_btrfs_raid_type to get all the settings and then check if the requested raid type is available. >From there I've updated all of the existing tests that use _require_btrfs_fs_feature raid56 to use _require_btrfs_raid_type <type> where appropriate. Reviewed-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Anand Jain <anand.jain@oracle.com>
-rw-r--r--common/btrfs30
-rwxr-xr-xtests/btrfs/1252
-rwxr-xr-xtests/btrfs/1483
-rwxr-xr-xtests/btrfs/1572
-rwxr-xr-xtests/btrfs/1582
5 files changed, 30 insertions, 9 deletions
diff --git a/common/btrfs b/common/btrfs
index a320b0e41d..bc769cc4d3 100644
--- a/common/btrfs
+++ b/common/btrfs
@@ -109,11 +109,6 @@ _require_btrfs_fs_feature()
modprobe btrfs > /dev/null 2>&1
[ -e /sys/fs/btrfs/features/$feat ] || \
_notrun "Feature $feat not supported by the available btrfs version"
-
- if [ $feat = "raid56" ]; then
- # Zoned btrfs only supports SINGLE profile
- _require_non_zoned_device "${SCRATCH_DEV}"
- fi
}
_require_btrfs_fs_sysfs()
@@ -239,6 +234,8 @@ _btrfs_get_profile_configs()
return
fi
+ modprobe btrfs > /dev/null 2>&1
+
local unsupported=()
if [ "$1" == "replace" ]; then
# We can't do replace with these profiles because they
@@ -258,6 +255,14 @@ _btrfs_get_profile_configs()
)
fi
+ if [ ! -e /sys/fs/btrfs/features/raid56 ]; then
+ # We don't have raid56 compiled in, remove them
+ unsupported+=(
+ "raid5"
+ "raid6"
+ )
+ fi
+
if _scratch_btrfs_is_zoned; then
# Zoned btrfs only supports SINGLE profile
unsupported+=(
@@ -962,3 +967,18 @@ mkfs_clone()
_mkfs_dev -fq --uuid $fsid --device-uuid $uuid $dev2
}
+
+_check_btrfs_raid_type()
+{
+ _btrfs_get_profile_configs
+ if [[ ! "${_btrfs_profile_configs[@]}" =~ "$1" ]]; then
+ return 1
+ fi
+ return 0
+}
+
+_require_btrfs_raid_type()
+{
+ _check_btrfs_raid_type $1 || \
+ _notrun "$1 isn't supported by the profile config or scratch device"
+}
diff --git a/tests/btrfs/125 b/tests/btrfs/125
index 1b6e5d78b2..d957c13911 100755
--- a/tests/btrfs/125
+++ b/tests/btrfs/125
@@ -41,7 +41,7 @@ _supported_fs btrfs
_require_scratch_dev_pool 3
_test_unmount
_require_btrfs_forget_or_module_loadable
-_require_btrfs_fs_feature raid56
+_require_btrfs_raid_type raid5
_scratch_dev_pool_get 3
diff --git a/tests/btrfs/148 b/tests/btrfs/148
index 65a2629225..9bbcd8e92f 100755
--- a/tests/btrfs/148
+++ b/tests/btrfs/148
@@ -17,7 +17,8 @@ _supported_fs btrfs
_require_scratch
_require_scratch_dev_pool 4
_require_odirect
-_require_btrfs_fs_feature raid56
+_require_btrfs_raid_type raid5
+_require_btrfs_raid_type raid6
_scratch_dev_pool_get 4
diff --git a/tests/btrfs/157 b/tests/btrfs/157
index 648db0d09d..aec844ffa8 100755
--- a/tests/btrfs/157
+++ b/tests/btrfs/157
@@ -34,7 +34,7 @@ _supported_fs btrfs
_require_btrfs_no_nodatacow
_require_scratch_dev_pool 4
_require_btrfs_command inspect-internal dump-tree
-_require_btrfs_fs_feature raid56
+_require_btrfs_raid_type raid6
get_physical()
{
diff --git a/tests/btrfs/158 b/tests/btrfs/158
index 28599d0963..d7805afd6b 100755
--- a/tests/btrfs/158
+++ b/tests/btrfs/158
@@ -26,7 +26,7 @@ _supported_fs btrfs
_require_btrfs_no_nodatacow
_require_scratch_dev_pool 4
_require_btrfs_command inspect-internal dump-tree
-_require_btrfs_fs_feature raid56
+_require_btrfs_raid_type raid5
get_physical()
{