From: Josef Bacik Date: Fri, 5 Apr 2024 19:56:13 +0000 (-0400) Subject: fstests: change how we test for supported raid configs X-Git-Tag: v2024.04.28~11 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=fc408e773e1dc06faa475bd386f2e8e10d7134b1;p=xfstests-dev.git 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 where appropriate. Reviewed-by: Anand Jain Signed-off-by: Josef Bacik Signed-off-by: Anand Jain --- diff --git a/common/btrfs b/common/btrfs index a320b0e4..bc769cc4 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 1b6e5d78..d957c139 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 65a26292..9bbcd8e9 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 648db0d0..aec844ff 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 28599d09..d7805afd 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() {