Message ID | 20210811151232.3713733-8-naohiro.aota@wdc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | fstests: add checks for testing zoned btrfs | expand |
On Thu, Aug 12, 2021 at 12:12:31AM +0900, Naohiro Aota wrote: > Modify btrfs tests to require non-zoned block device or limit some part of > tests not to be run on zone block devices. > > Modified tests by the reasons: > > * Mixed BG > - btrfs/011 > * Non-single profile > - btrfs/003 > - btrfs/011 > - btrfs/023 > - btrfs/124 > - btrfs/125 > - btrfs/148 > - btrfs/157 > - btrfs/158 > - btrfs/195 > - btrfs/197 > - btrfs/198 > * Convert from ext4 > - btrfs/012 > - btrfs/136 > * nodatacow > - btrfs/236 > * inode cache > - btrfs/049 > * space cache (v1) > - btrfs/131 > * write outside of FS code > - btrfs/116 > - btrfs/140 > - btrfs/215 > * verbose output > - btrfs/194 > > Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com> > --- > common/btrfs | 18 ++++++++++++++++++ > tests/btrfs/003 | 13 +++++++++---- > tests/btrfs/011 | 21 ++++++++++++--------- > tests/btrfs/012 | 2 ++ > tests/btrfs/023 | 2 ++ > tests/btrfs/049 | 2 ++ > tests/btrfs/116 | 2 ++ > tests/btrfs/124 | 4 ++++ > tests/btrfs/125 | 2 ++ > tests/btrfs/131 | 2 ++ > tests/btrfs/136 | 2 ++ > tests/btrfs/140 | 2 ++ > tests/btrfs/148 | 2 ++ > tests/btrfs/157 | 2 ++ > tests/btrfs/158 | 2 ++ > tests/btrfs/194 | 2 +- > tests/btrfs/195 | 8 ++++++++ > tests/btrfs/197 | 1 + > tests/btrfs/198 | 1 + > tests/btrfs/215 | 1 + > tests/btrfs/236 | 33 ++++++++++++++++++++------------- > 21 files changed, 97 insertions(+), 27 deletions(-) > > diff --git a/common/btrfs b/common/btrfs > index ebe6ce269a6b..fb1a65842012 100644 > --- a/common/btrfs > +++ b/common/btrfs > @@ -222,6 +222,18 @@ _btrfs_get_profile_configs() > else > local unsupported=() > fi > + > + if [ `_zone_type $TEST_DEV` != "none" ]; then Better to have some comments in code as well. > + unsupported+=( > + "dup" > + "raid0" > + "raid1" > + "raid10" > + "raid5" > + "raid6" > + ) > + fi > + > for unsupp in "${unsupported[@]}"; do > if [ "${profiles[0]}" == "$unsupp" -o "${profiles[1]}" == "$unsupp" ]; then > if [ -z "$BTRFS_PROFILE_CONFIGS" ]; then > @@ -419,3 +431,9 @@ _btrfs_rescan_devices() > { > $BTRFS_UTIL_PROG device scan &> /dev/null > } > + > +_scratch_btrfs_is_zoned() > +{ > + [ `_zone_type ${SCRATCH_DEV}` != "none" ] && return 0 > + return 1 > +} > diff --git a/tests/btrfs/003 b/tests/btrfs/003 > index d241ec6e9fdd..af0dc8a7e105 100755 > --- a/tests/btrfs/003 > +++ b/tests/btrfs/003 > @@ -173,12 +173,17 @@ _test_remove() > _scratch_unmount > } > > -_test_raid0 > -_test_raid1 > -_test_raid10 > +if ! _scratch_btrfs_is_zoned; then > + _test_raid0 > + _test_raid1 > + _test_raid10 > +fi > + > _test_single > _test_add > -_test_replace > +if ! _scratch_btrfs_is_zoned; then Same here, some comments to explain why replace doesn't work with zoned devices? > + _test_replace > +fi > _test_remove > > echo "Silence is golden" > diff --git a/tests/btrfs/011 b/tests/btrfs/011 > index f5d865ab3d21..b4673341c24b 100755 > --- a/tests/btrfs/011 > +++ b/tests/btrfs/011 > @@ -226,15 +226,18 @@ btrfs_replace_test() > } > > workout "-m single -d single" 1 no 64 > -workout "-m single -d single -M" 1 no 64 > -workout "-m dup -d single" 1 no 64 > -workout "-m dup -d single" 1 cancel 1024 > -workout "-m dup -d dup -M" 1 no 64 > -workout "-m raid0 -d raid0" 2 no 64 > -workout "-m raid1 -d raid1" 2 no 2048 > -workout "-m raid5 -d raid5" 2 no 64 > -workout "-m raid6 -d raid6" 3 no 64 > -workout "-m raid10 -d raid10" 4 no 64 > +# Mixed BG & RAID/DUP profiles are not supported on zoned btrfs > +if ! _scratch_btrfs_is_zoned; then > + workout "-m dup -d single" 1 no 64 > + workout "-m dup -d single" 1 cancel 1024 > + workout "-m raid0 -d raid0" 2 no 64 > + workout "-m raid1 -d raid1" 2 no 2048 > + workout "-m raid10 -d raid10" 4 no 64 > + workout "-m single -d single -M" 1 no 64 > + workout "-m dup -d dup -M" 1 no 64 > + workout "-m raid5 -d raid5" 2 no 64 > + workout "-m raid6 -d raid6" 3 no 64 > +fi > > echo "*** done" > status=0 > diff --git a/tests/btrfs/012 b/tests/btrfs/012 > index 46341e984821..3040a655095c 100755 > --- a/tests/btrfs/012 > +++ b/tests/btrfs/012 > @@ -28,6 +28,8 @@ _require_scratch_nocheck > _require_command "$BTRFS_CONVERT_PROG" btrfs-convert > _require_command "$MKFS_EXT4_PROG" mkfs.ext4 > _require_command "$E2FSCK_PROG" e2fsck > +# ext4 does not support zoned block device > +_require_non_zoned_device "${SCRATCH_DEV}" > > _require_fs_space $SCRATCH_MNT $(du -s /lib/modules/`uname -r` | ${AWK_PROG} '{print $1}') > > diff --git a/tests/btrfs/023 b/tests/btrfs/023 > index f6c05b121099..49ca95bc9efb 100755 > --- a/tests/btrfs/023 > +++ b/tests/btrfs/023 > @@ -17,6 +17,8 @@ _begin_fstest auto > # real QA test starts here > _supported_fs btrfs > _require_scratch_dev_pool 4 > +# RAID profiles are not supported on zoned btrfs > +_require_non_zoned_device "${SCRATCH_DEV}" > > create_group_profile() > { > diff --git a/tests/btrfs/049 b/tests/btrfs/049 > index ad4ef122f3c9..a9cd5b2cf12b 100755 > --- a/tests/btrfs/049 > +++ b/tests/btrfs/049 > @@ -27,6 +27,8 @@ _cleanup() > _supported_fs btrfs > _require_scratch > _require_dm_target flakey > +# inode cache is not supported on zoned btrfs > +_require_non_zoned_device "$SCRATCH_DEV" > > _scratch_mkfs >> $seqres.full 2>&1 > > diff --git a/tests/btrfs/116 b/tests/btrfs/116 > index 14182e9c0f49..2449e6e3a64d 100755 > --- a/tests/btrfs/116 > +++ b/tests/btrfs/116 > @@ -18,6 +18,8 @@ _begin_fstest auto quick metadata > # real QA test starts here > _supported_fs btrfs > _require_scratch > +# Writing non-contiguous data directly to the device > +_require_non_zoned_device $SCRATCH_DEV > > _scratch_mkfs >>$seqres.full 2>&1 > > diff --git a/tests/btrfs/124 b/tests/btrfs/124 > index 3036cbf4a72c..5c05ffae1b8f 100755 > --- a/tests/btrfs/124 > +++ b/tests/btrfs/124 > @@ -49,6 +49,10 @@ _scratch_dev_pool_get 2 > dev1=`echo $SCRATCH_DEV_POOL | awk '{print $1}'` > dev2=`echo $SCRATCH_DEV_POOL | awk '{print $2}'` > > +# RAID1 is not supported on zoned btrfs > +_require_non_zoned_device "$dev1" > +_require_non_zoned_device "$dev2" > + > dev1_sz=`blockdev --getsize64 $dev1` > dev2_sz=`blockdev --getsize64 $dev2` > # get min of both > diff --git a/tests/btrfs/125 b/tests/btrfs/125 > index e46b194d0139..de6651739f49 100755 > --- a/tests/btrfs/125 > +++ b/tests/btrfs/125 > @@ -43,6 +43,8 @@ _require_scratch_dev_pool 3 > _test_unmount > _require_btrfs_forget_or_module_loadable > _require_btrfs_fs_feature raid56 > +# raid56 is not supported on zoned btrfs > +_require_non_zoned_device "${SCRATCH_DEV}" I think this check could be folded into "_require_btrfs_fs_feature raid56" > > _scratch_dev_pool_get 3 > > diff --git a/tests/btrfs/131 b/tests/btrfs/131 > index 81e5d9bc90c7..f97e8f30666a 100755 > --- a/tests/btrfs/131 > +++ b/tests/btrfs/131 > @@ -18,6 +18,8 @@ _supported_fs btrfs > _require_scratch > _require_btrfs_command inspect-internal dump-super > _require_btrfs_fs_feature free_space_tree > +# space_cache(v1) is not supported on HMZONED > +_require_non_zoned_device "${SCRATCH_DEV}" > > mkfs_v1() > { > diff --git a/tests/btrfs/136 b/tests/btrfs/136 > index 896be18d84f8..b9ab8270f039 100755 > --- a/tests/btrfs/136 > +++ b/tests/btrfs/136 > @@ -22,6 +22,8 @@ _begin_fstest auto convert > # Modify as appropriate. > _supported_fs btrfs > _require_scratch_nocheck > +# ext4 does not support zoned block device > +_require_non_zoned_device "${SCRATCH_DEV}" > > _require_command "$BTRFS_CONVERT_PROG" btrfs-convert > _require_command "$MKFS_EXT4_PROG" mkfs.ext4 > diff --git a/tests/btrfs/140 b/tests/btrfs/140 > index f3379cae75de..a1a465cc8e5d 100755 > --- a/tests/btrfs/140 > +++ b/tests/btrfs/140 > @@ -26,6 +26,8 @@ _require_scratch_dev_pool 2 > _require_btrfs_command inspect-internal dump-tree > _require_command "$FILEFRAG_PROG" filefrag > _require_odirect > +# it overwrites data, which is forbidden on zoned block device > +_require_non_zoned_device "${SCRATCH_DEV}" > > get_physical() > { > diff --git a/tests/btrfs/148 b/tests/btrfs/148 > index 510e46dc0826..eb86df862d9b 100755 > --- a/tests/btrfs/148 > +++ b/tests/btrfs/148 > @@ -18,6 +18,8 @@ _require_scratch > _require_scratch_dev_pool 4 > _require_odirect > _require_btrfs_fs_feature raid56 > +# raid56 is not supported on zoned btrfs > +_require_non_zoned_device "${SCRATCH_DEV}" Same here. > > _scratch_dev_pool_get 4 > > diff --git a/tests/btrfs/157 b/tests/btrfs/157 > index 0cfe3ce56548..d06acead25a1 100755 > --- a/tests/btrfs/157 > +++ b/tests/btrfs/157 > @@ -33,6 +33,8 @@ _supported_fs btrfs > _require_scratch_dev_pool 4 > _require_btrfs_command inspect-internal dump-tree > _require_btrfs_fs_feature raid56 > +# raid56 is not supported on zoned btrfs > +_require_non_zoned_device "${SCRATCH_DEV}" And here. > > get_physical() > { > diff --git a/tests/btrfs/158 b/tests/btrfs/158 > index ad374eba8c7e..dbe1036ae320 100755 > --- a/tests/btrfs/158 > +++ b/tests/btrfs/158 > @@ -25,6 +25,8 @@ _supported_fs btrfs > _require_scratch_dev_pool 4 > _require_btrfs_command inspect-internal dump-tree > _require_btrfs_fs_feature raid56 > +# raid56 is not supported on zoned btrfs > +_require_non_zoned_device "${SCRATCH_DEV}" Ditto. > > get_physical() > { > diff --git a/tests/btrfs/194 b/tests/btrfs/194 > index 9a67e572ef74..a994a429628b 100755 > --- a/tests/btrfs/194 > +++ b/tests/btrfs/194 > @@ -59,7 +59,7 @@ for (( i = 0; i < 64; i++ )); do > $BTRFS_UTIL_PROG device del $device_1 $SCRATCH_MNT > $BTRFS_UTIL_PROG device add -f $device_1 $SCRATCH_MNT > $BTRFS_UTIL_PROG device del $device_2 $SCRATCH_MNT > -done > +done | grep -v 'Resetting device zone' > _scratch_dev_pool_put > > echo "Silence is golden" > diff --git a/tests/btrfs/195 b/tests/btrfs/195 > index 59b979704491..303f18b43281 100755 > --- a/tests/btrfs/195 > +++ b/tests/btrfs/195 > @@ -36,6 +36,14 @@ run_testcase() { > src_type=${args[1]} > dst_type=${args[2]} > > + if [ `_zone_type ${SCRATCH_DEV}` != "none" -a \ > + \( ${src_type} = "raid5" -o \ > + ${src_type} = "raid6" -o \ > + ${dst_type} = "raid5" -o \ > + ${dst_type} = "raid6" \) ]; then > + return > + fi > + > _scratch_dev_pool_get $num_disks > > echo "=== Running test: $1 ===" >> $seqres.full > diff --git a/tests/btrfs/197 b/tests/btrfs/197 > index f5baf5b6066b..5f38df401dea 100755 > --- a/tests/btrfs/197 > +++ b/tests/btrfs/197 > @@ -30,6 +30,7 @@ _supported_fs btrfs > _require_test > _require_scratch > _require_scratch_dev_pool 5 > +_require_non_zoned_device ${SCRATCH_DEV} This test also tests raid5/raid6, I think we could also use the updated _require_btrfs_fs_feature raid56 > > workout() > { > diff --git a/tests/btrfs/198 b/tests/btrfs/198 > index b3e175a25bf9..007445cb5cb4 100755 > --- a/tests/btrfs/198 > +++ b/tests/btrfs/198 > @@ -20,6 +20,7 @@ _supported_fs btrfs > _require_command "$WIPEFS_PROG" wipefs > _require_scratch > _require_scratch_dev_pool 4 > +_require_non_zoned_device ${SCRATCH_DEV} Same here. > > workout() > { > diff --git a/tests/btrfs/215 b/tests/btrfs/215 > index b45bd520b8e6..4a2933df6cdf 100755 > --- a/tests/btrfs/215 > +++ b/tests/btrfs/215 > @@ -24,6 +24,7 @@ get_physical() > > # Modify as appropriate. > _supported_fs btrfs > +_require_non_zoned_device $SCRATCH_DEV Some comments would be good. Thanks, Eryu > > _scratch_mkfs > /dev/null > # disable freespace inode to ensure file is the first thing in the data > diff --git a/tests/btrfs/236 b/tests/btrfs/236 > index a16a1ce62d3a..8481d8f380d2 100755 > --- a/tests/btrfs/236 > +++ b/tests/btrfs/236 > @@ -173,21 +173,28 @@ for ((i = 1; i <= 3; i++)); do > test_fsync "link_cow_$i" "link" > done > > -# Now lets test with nodatacow. > _unmount_flakey > -MOUNT_OPTIONS="-o nodatacow" > -_mount_flakey > > -echo "Testing fsync after rename with NOCOW writes" > -for ((i = 1; i <= 3; i++)); do > - test_fsync "rename_nocow_$i" "rename" > -done > -echo "Testing fsync after link with NOCOW writes" > -for ((i = 1; i <= 3; i++)); do > - test_fsync "link_nocow_$i" "link" > -done > - > -_unmount_flakey > +# Now lets test with nodatacow. > +if ! _scratch_btrfs_is_zoned; then > + MOUNT_OPTIONS="-o nodatacow" > + _mount_flakey > + > + echo "Testing fsync after rename with NOCOW writes" > + for ((i = 1; i <= 3; i++)); do > + test_fsync "rename_nocow_$i" "rename" > + done > + echo "Testing fsync after link with NOCOW writes" > + for ((i = 1; i <= 3; i++)); do > + test_fsync "link_nocow_$i" "link" > + done > + > + _unmount_flakey > +else > + # Fake result. Zoned btrfs does not support NOCOW > + echo "Testing fsync after rename with NOCOW writes" > + echo "Testing fsync after link with NOCOW writes" > +fi > > status=0 > exit > -- > 2.32.0
On Sun, Aug 15, 2021 at 11:12:21PM +0800, Eryu Guan wrote: > On Thu, Aug 12, 2021 at 12:12:31AM +0900, Naohiro Aota wrote: > > Modify btrfs tests to require non-zoned block device or limit some part of > > tests not to be run on zone block devices. > > > > Modified tests by the reasons: > > > > * Mixed BG > > - btrfs/011 > > * Non-single profile > > - btrfs/003 > > - btrfs/011 > > - btrfs/023 > > - btrfs/124 > > - btrfs/125 > > - btrfs/148 > > - btrfs/157 > > - btrfs/158 > > - btrfs/195 > > - btrfs/197 > > - btrfs/198 > > * Convert from ext4 > > - btrfs/012 > > - btrfs/136 > > * nodatacow > > - btrfs/236 > > * inode cache > > - btrfs/049 > > * space cache (v1) > > - btrfs/131 > > * write outside of FS code > > - btrfs/116 > > - btrfs/140 > > - btrfs/215 > > * verbose output > > - btrfs/194 > > > > Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com> > > --- > > common/btrfs | 18 ++++++++++++++++++ > > tests/btrfs/003 | 13 +++++++++---- > > tests/btrfs/011 | 21 ++++++++++++--------- > > tests/btrfs/012 | 2 ++ > > tests/btrfs/023 | 2 ++ > > tests/btrfs/049 | 2 ++ > > tests/btrfs/116 | 2 ++ > > tests/btrfs/124 | 4 ++++ > > tests/btrfs/125 | 2 ++ > > tests/btrfs/131 | 2 ++ > > tests/btrfs/136 | 2 ++ > > tests/btrfs/140 | 2 ++ > > tests/btrfs/148 | 2 ++ > > tests/btrfs/157 | 2 ++ > > tests/btrfs/158 | 2 ++ > > tests/btrfs/194 | 2 +- > > tests/btrfs/195 | 8 ++++++++ > > tests/btrfs/197 | 1 + > > tests/btrfs/198 | 1 + > > tests/btrfs/215 | 1 + > > tests/btrfs/236 | 33 ++++++++++++++++++++------------- > > 21 files changed, 97 insertions(+), 27 deletions(-) > > > > diff --git a/common/btrfs b/common/btrfs > > index ebe6ce269a6b..fb1a65842012 100644 > > --- a/common/btrfs > > +++ b/common/btrfs > > @@ -222,6 +222,18 @@ _btrfs_get_profile_configs() > > else > > local unsupported=() > > fi > > + > > + if [ `_zone_type $TEST_DEV` != "none" ]; then > > Better to have some comments in code as well. Sure. I'll add comments for all the places. > > + unsupported+=( > > + "dup" > > + "raid0" > > + "raid1" > > + "raid10" > > + "raid5" > > + "raid6" > > + ) > > + fi > > + > > for unsupp in "${unsupported[@]}"; do > > if [ "${profiles[0]}" == "$unsupp" -o "${profiles[1]}" == "$unsupp" ]; then > > if [ -z "$BTRFS_PROFILE_CONFIGS" ]; then > > @@ -419,3 +431,9 @@ _btrfs_rescan_devices() > > { > > $BTRFS_UTIL_PROG device scan &> /dev/null > > } > > + > > +_scratch_btrfs_is_zoned() > > +{ > > + [ `_zone_type ${SCRATCH_DEV}` != "none" ] && return 0 > > + return 1 > > +} > > diff --git a/tests/btrfs/003 b/tests/btrfs/003 > > index d241ec6e9fdd..af0dc8a7e105 100755 > > --- a/tests/btrfs/003 > > +++ b/tests/btrfs/003 > > @@ -173,12 +173,17 @@ _test_remove() > > _scratch_unmount > > } > > > > -_test_raid0 > > -_test_raid1 > > -_test_raid10 > > +if ! _scratch_btrfs_is_zoned; then > > + _test_raid0 > > + _test_raid1 > > + _test_raid10 > > +fi > > + > > _test_single > > _test_add > > -_test_replace > > +if ! _scratch_btrfs_is_zoned; then > > Same here, some comments to explain why replace doesn't work with zoned > devices? > > > + _test_replace > > +fi > > _test_remove > > > > echo "Silence is golden" > > diff --git a/tests/btrfs/011 b/tests/btrfs/011 > > index f5d865ab3d21..b4673341c24b 100755 > > --- a/tests/btrfs/011 > > +++ b/tests/btrfs/011 > > @@ -226,15 +226,18 @@ btrfs_replace_test() > > } > > > > workout "-m single -d single" 1 no 64 > > -workout "-m single -d single -M" 1 no 64 > > -workout "-m dup -d single" 1 no 64 > > -workout "-m dup -d single" 1 cancel 1024 > > -workout "-m dup -d dup -M" 1 no 64 > > -workout "-m raid0 -d raid0" 2 no 64 > > -workout "-m raid1 -d raid1" 2 no 2048 > > -workout "-m raid5 -d raid5" 2 no 64 > > -workout "-m raid6 -d raid6" 3 no 64 > > -workout "-m raid10 -d raid10" 4 no 64 > > +# Mixed BG & RAID/DUP profiles are not supported on zoned btrfs > > +if ! _scratch_btrfs_is_zoned; then > > + workout "-m dup -d single" 1 no 64 > > + workout "-m dup -d single" 1 cancel 1024 > > + workout "-m raid0 -d raid0" 2 no 64 > > + workout "-m raid1 -d raid1" 2 no 2048 > > + workout "-m raid10 -d raid10" 4 no 64 > > + workout "-m single -d single -M" 1 no 64 > > + workout "-m dup -d dup -M" 1 no 64 > > + workout "-m raid5 -d raid5" 2 no 64 > > + workout "-m raid6 -d raid6" 3 no 64 > > +fi > > > > echo "*** done" > > status=0 > > diff --git a/tests/btrfs/012 b/tests/btrfs/012 > > index 46341e984821..3040a655095c 100755 > > --- a/tests/btrfs/012 > > +++ b/tests/btrfs/012 > > @@ -28,6 +28,8 @@ _require_scratch_nocheck > > _require_command "$BTRFS_CONVERT_PROG" btrfs-convert > > _require_command "$MKFS_EXT4_PROG" mkfs.ext4 > > _require_command "$E2FSCK_PROG" e2fsck > > +# ext4 does not support zoned block device > > +_require_non_zoned_device "${SCRATCH_DEV}" > > > > _require_fs_space $SCRATCH_MNT $(du -s /lib/modules/`uname -r` | ${AWK_PROG} '{print $1}') > > > > diff --git a/tests/btrfs/023 b/tests/btrfs/023 > > index f6c05b121099..49ca95bc9efb 100755 > > --- a/tests/btrfs/023 > > +++ b/tests/btrfs/023 > > @@ -17,6 +17,8 @@ _begin_fstest auto > > # real QA test starts here > > _supported_fs btrfs > > _require_scratch_dev_pool 4 > > +# RAID profiles are not supported on zoned btrfs > > +_require_non_zoned_device "${SCRATCH_DEV}" > > > > create_group_profile() > > { > > diff --git a/tests/btrfs/049 b/tests/btrfs/049 > > index ad4ef122f3c9..a9cd5b2cf12b 100755 > > --- a/tests/btrfs/049 > > +++ b/tests/btrfs/049 > > @@ -27,6 +27,8 @@ _cleanup() > > _supported_fs btrfs > > _require_scratch > > _require_dm_target flakey > > +# inode cache is not supported on zoned btrfs > > +_require_non_zoned_device "$SCRATCH_DEV" > > > > _scratch_mkfs >> $seqres.full 2>&1 > > > > diff --git a/tests/btrfs/116 b/tests/btrfs/116 > > index 14182e9c0f49..2449e6e3a64d 100755 > > --- a/tests/btrfs/116 > > +++ b/tests/btrfs/116 > > @@ -18,6 +18,8 @@ _begin_fstest auto quick metadata > > # real QA test starts here > > _supported_fs btrfs > > _require_scratch > > +# Writing non-contiguous data directly to the device > > +_require_non_zoned_device $SCRATCH_DEV > > > > _scratch_mkfs >>$seqres.full 2>&1 > > > > diff --git a/tests/btrfs/124 b/tests/btrfs/124 > > index 3036cbf4a72c..5c05ffae1b8f 100755 > > --- a/tests/btrfs/124 > > +++ b/tests/btrfs/124 > > @@ -49,6 +49,10 @@ _scratch_dev_pool_get 2 > > dev1=`echo $SCRATCH_DEV_POOL | awk '{print $1}'` > > dev2=`echo $SCRATCH_DEV_POOL | awk '{print $2}'` > > > > +# RAID1 is not supported on zoned btrfs > > +_require_non_zoned_device "$dev1" > > +_require_non_zoned_device "$dev2" > > + > > dev1_sz=`blockdev --getsize64 $dev1` > > dev2_sz=`blockdev --getsize64 $dev2` > > # get min of both > > diff --git a/tests/btrfs/125 b/tests/btrfs/125 > > index e46b194d0139..de6651739f49 100755 > > --- a/tests/btrfs/125 > > +++ b/tests/btrfs/125 > > @@ -43,6 +43,8 @@ _require_scratch_dev_pool 3 > > _test_unmount > > _require_btrfs_forget_or_module_loadable > > _require_btrfs_fs_feature raid56 > > +# raid56 is not supported on zoned btrfs > > +_require_non_zoned_device "${SCRATCH_DEV}" > > I think this check could be folded into "_require_btrfs_fs_feature raid56" Yeah, that will make the patch much more simple. Thanks.
diff --git a/common/btrfs b/common/btrfs index ebe6ce269a6b..fb1a65842012 100644 --- a/common/btrfs +++ b/common/btrfs @@ -222,6 +222,18 @@ _btrfs_get_profile_configs() else local unsupported=() fi + + if [ `_zone_type $TEST_DEV` != "none" ]; then + unsupported+=( + "dup" + "raid0" + "raid1" + "raid10" + "raid5" + "raid6" + ) + fi + for unsupp in "${unsupported[@]}"; do if [ "${profiles[0]}" == "$unsupp" -o "${profiles[1]}" == "$unsupp" ]; then if [ -z "$BTRFS_PROFILE_CONFIGS" ]; then @@ -419,3 +431,9 @@ _btrfs_rescan_devices() { $BTRFS_UTIL_PROG device scan &> /dev/null } + +_scratch_btrfs_is_zoned() +{ + [ `_zone_type ${SCRATCH_DEV}` != "none" ] && return 0 + return 1 +} diff --git a/tests/btrfs/003 b/tests/btrfs/003 index d241ec6e9fdd..af0dc8a7e105 100755 --- a/tests/btrfs/003 +++ b/tests/btrfs/003 @@ -173,12 +173,17 @@ _test_remove() _scratch_unmount } -_test_raid0 -_test_raid1 -_test_raid10 +if ! _scratch_btrfs_is_zoned; then + _test_raid0 + _test_raid1 + _test_raid10 +fi + _test_single _test_add -_test_replace +if ! _scratch_btrfs_is_zoned; then + _test_replace +fi _test_remove echo "Silence is golden" diff --git a/tests/btrfs/011 b/tests/btrfs/011 index f5d865ab3d21..b4673341c24b 100755 --- a/tests/btrfs/011 +++ b/tests/btrfs/011 @@ -226,15 +226,18 @@ btrfs_replace_test() } workout "-m single -d single" 1 no 64 -workout "-m single -d single -M" 1 no 64 -workout "-m dup -d single" 1 no 64 -workout "-m dup -d single" 1 cancel 1024 -workout "-m dup -d dup -M" 1 no 64 -workout "-m raid0 -d raid0" 2 no 64 -workout "-m raid1 -d raid1" 2 no 2048 -workout "-m raid5 -d raid5" 2 no 64 -workout "-m raid6 -d raid6" 3 no 64 -workout "-m raid10 -d raid10" 4 no 64 +# Mixed BG & RAID/DUP profiles are not supported on zoned btrfs +if ! _scratch_btrfs_is_zoned; then + workout "-m dup -d single" 1 no 64 + workout "-m dup -d single" 1 cancel 1024 + workout "-m raid0 -d raid0" 2 no 64 + workout "-m raid1 -d raid1" 2 no 2048 + workout "-m raid10 -d raid10" 4 no 64 + workout "-m single -d single -M" 1 no 64 + workout "-m dup -d dup -M" 1 no 64 + workout "-m raid5 -d raid5" 2 no 64 + workout "-m raid6 -d raid6" 3 no 64 +fi echo "*** done" status=0 diff --git a/tests/btrfs/012 b/tests/btrfs/012 index 46341e984821..3040a655095c 100755 --- a/tests/btrfs/012 +++ b/tests/btrfs/012 @@ -28,6 +28,8 @@ _require_scratch_nocheck _require_command "$BTRFS_CONVERT_PROG" btrfs-convert _require_command "$MKFS_EXT4_PROG" mkfs.ext4 _require_command "$E2FSCK_PROG" e2fsck +# ext4 does not support zoned block device +_require_non_zoned_device "${SCRATCH_DEV}" _require_fs_space $SCRATCH_MNT $(du -s /lib/modules/`uname -r` | ${AWK_PROG} '{print $1}') diff --git a/tests/btrfs/023 b/tests/btrfs/023 index f6c05b121099..49ca95bc9efb 100755 --- a/tests/btrfs/023 +++ b/tests/btrfs/023 @@ -17,6 +17,8 @@ _begin_fstest auto # real QA test starts here _supported_fs btrfs _require_scratch_dev_pool 4 +# RAID profiles are not supported on zoned btrfs +_require_non_zoned_device "${SCRATCH_DEV}" create_group_profile() { diff --git a/tests/btrfs/049 b/tests/btrfs/049 index ad4ef122f3c9..a9cd5b2cf12b 100755 --- a/tests/btrfs/049 +++ b/tests/btrfs/049 @@ -27,6 +27,8 @@ _cleanup() _supported_fs btrfs _require_scratch _require_dm_target flakey +# inode cache is not supported on zoned btrfs +_require_non_zoned_device "$SCRATCH_DEV" _scratch_mkfs >> $seqres.full 2>&1 diff --git a/tests/btrfs/116 b/tests/btrfs/116 index 14182e9c0f49..2449e6e3a64d 100755 --- a/tests/btrfs/116 +++ b/tests/btrfs/116 @@ -18,6 +18,8 @@ _begin_fstest auto quick metadata # real QA test starts here _supported_fs btrfs _require_scratch +# Writing non-contiguous data directly to the device +_require_non_zoned_device $SCRATCH_DEV _scratch_mkfs >>$seqres.full 2>&1 diff --git a/tests/btrfs/124 b/tests/btrfs/124 index 3036cbf4a72c..5c05ffae1b8f 100755 --- a/tests/btrfs/124 +++ b/tests/btrfs/124 @@ -49,6 +49,10 @@ _scratch_dev_pool_get 2 dev1=`echo $SCRATCH_DEV_POOL | awk '{print $1}'` dev2=`echo $SCRATCH_DEV_POOL | awk '{print $2}'` +# RAID1 is not supported on zoned btrfs +_require_non_zoned_device "$dev1" +_require_non_zoned_device "$dev2" + dev1_sz=`blockdev --getsize64 $dev1` dev2_sz=`blockdev --getsize64 $dev2` # get min of both diff --git a/tests/btrfs/125 b/tests/btrfs/125 index e46b194d0139..de6651739f49 100755 --- a/tests/btrfs/125 +++ b/tests/btrfs/125 @@ -43,6 +43,8 @@ _require_scratch_dev_pool 3 _test_unmount _require_btrfs_forget_or_module_loadable _require_btrfs_fs_feature raid56 +# raid56 is not supported on zoned btrfs +_require_non_zoned_device "${SCRATCH_DEV}" _scratch_dev_pool_get 3 diff --git a/tests/btrfs/131 b/tests/btrfs/131 index 81e5d9bc90c7..f97e8f30666a 100755 --- a/tests/btrfs/131 +++ b/tests/btrfs/131 @@ -18,6 +18,8 @@ _supported_fs btrfs _require_scratch _require_btrfs_command inspect-internal dump-super _require_btrfs_fs_feature free_space_tree +# space_cache(v1) is not supported on HMZONED +_require_non_zoned_device "${SCRATCH_DEV}" mkfs_v1() { diff --git a/tests/btrfs/136 b/tests/btrfs/136 index 896be18d84f8..b9ab8270f039 100755 --- a/tests/btrfs/136 +++ b/tests/btrfs/136 @@ -22,6 +22,8 @@ _begin_fstest auto convert # Modify as appropriate. _supported_fs btrfs _require_scratch_nocheck +# ext4 does not support zoned block device +_require_non_zoned_device "${SCRATCH_DEV}" _require_command "$BTRFS_CONVERT_PROG" btrfs-convert _require_command "$MKFS_EXT4_PROG" mkfs.ext4 diff --git a/tests/btrfs/140 b/tests/btrfs/140 index f3379cae75de..a1a465cc8e5d 100755 --- a/tests/btrfs/140 +++ b/tests/btrfs/140 @@ -26,6 +26,8 @@ _require_scratch_dev_pool 2 _require_btrfs_command inspect-internal dump-tree _require_command "$FILEFRAG_PROG" filefrag _require_odirect +# it overwrites data, which is forbidden on zoned block device +_require_non_zoned_device "${SCRATCH_DEV}" get_physical() { diff --git a/tests/btrfs/148 b/tests/btrfs/148 index 510e46dc0826..eb86df862d9b 100755 --- a/tests/btrfs/148 +++ b/tests/btrfs/148 @@ -18,6 +18,8 @@ _require_scratch _require_scratch_dev_pool 4 _require_odirect _require_btrfs_fs_feature raid56 +# raid56 is not supported on zoned btrfs +_require_non_zoned_device "${SCRATCH_DEV}" _scratch_dev_pool_get 4 diff --git a/tests/btrfs/157 b/tests/btrfs/157 index 0cfe3ce56548..d06acead25a1 100755 --- a/tests/btrfs/157 +++ b/tests/btrfs/157 @@ -33,6 +33,8 @@ _supported_fs btrfs _require_scratch_dev_pool 4 _require_btrfs_command inspect-internal dump-tree _require_btrfs_fs_feature raid56 +# raid56 is not supported on zoned btrfs +_require_non_zoned_device "${SCRATCH_DEV}" get_physical() { diff --git a/tests/btrfs/158 b/tests/btrfs/158 index ad374eba8c7e..dbe1036ae320 100755 --- a/tests/btrfs/158 +++ b/tests/btrfs/158 @@ -25,6 +25,8 @@ _supported_fs btrfs _require_scratch_dev_pool 4 _require_btrfs_command inspect-internal dump-tree _require_btrfs_fs_feature raid56 +# raid56 is not supported on zoned btrfs +_require_non_zoned_device "${SCRATCH_DEV}" get_physical() { diff --git a/tests/btrfs/194 b/tests/btrfs/194 index 9a67e572ef74..a994a429628b 100755 --- a/tests/btrfs/194 +++ b/tests/btrfs/194 @@ -59,7 +59,7 @@ for (( i = 0; i < 64; i++ )); do $BTRFS_UTIL_PROG device del $device_1 $SCRATCH_MNT $BTRFS_UTIL_PROG device add -f $device_1 $SCRATCH_MNT $BTRFS_UTIL_PROG device del $device_2 $SCRATCH_MNT -done +done | grep -v 'Resetting device zone' _scratch_dev_pool_put echo "Silence is golden" diff --git a/tests/btrfs/195 b/tests/btrfs/195 index 59b979704491..303f18b43281 100755 --- a/tests/btrfs/195 +++ b/tests/btrfs/195 @@ -36,6 +36,14 @@ run_testcase() { src_type=${args[1]} dst_type=${args[2]} + if [ `_zone_type ${SCRATCH_DEV}` != "none" -a \ + \( ${src_type} = "raid5" -o \ + ${src_type} = "raid6" -o \ + ${dst_type} = "raid5" -o \ + ${dst_type} = "raid6" \) ]; then + return + fi + _scratch_dev_pool_get $num_disks echo "=== Running test: $1 ===" >> $seqres.full diff --git a/tests/btrfs/197 b/tests/btrfs/197 index f5baf5b6066b..5f38df401dea 100755 --- a/tests/btrfs/197 +++ b/tests/btrfs/197 @@ -30,6 +30,7 @@ _supported_fs btrfs _require_test _require_scratch _require_scratch_dev_pool 5 +_require_non_zoned_device ${SCRATCH_DEV} workout() { diff --git a/tests/btrfs/198 b/tests/btrfs/198 index b3e175a25bf9..007445cb5cb4 100755 --- a/tests/btrfs/198 +++ b/tests/btrfs/198 @@ -20,6 +20,7 @@ _supported_fs btrfs _require_command "$WIPEFS_PROG" wipefs _require_scratch _require_scratch_dev_pool 4 +_require_non_zoned_device ${SCRATCH_DEV} workout() { diff --git a/tests/btrfs/215 b/tests/btrfs/215 index b45bd520b8e6..4a2933df6cdf 100755 --- a/tests/btrfs/215 +++ b/tests/btrfs/215 @@ -24,6 +24,7 @@ get_physical() # Modify as appropriate. _supported_fs btrfs +_require_non_zoned_device $SCRATCH_DEV _scratch_mkfs > /dev/null # disable freespace inode to ensure file is the first thing in the data diff --git a/tests/btrfs/236 b/tests/btrfs/236 index a16a1ce62d3a..8481d8f380d2 100755 --- a/tests/btrfs/236 +++ b/tests/btrfs/236 @@ -173,21 +173,28 @@ for ((i = 1; i <= 3; i++)); do test_fsync "link_cow_$i" "link" done -# Now lets test with nodatacow. _unmount_flakey -MOUNT_OPTIONS="-o nodatacow" -_mount_flakey -echo "Testing fsync after rename with NOCOW writes" -for ((i = 1; i <= 3; i++)); do - test_fsync "rename_nocow_$i" "rename" -done -echo "Testing fsync after link with NOCOW writes" -for ((i = 1; i <= 3; i++)); do - test_fsync "link_nocow_$i" "link" -done - -_unmount_flakey +# Now lets test with nodatacow. +if ! _scratch_btrfs_is_zoned; then + MOUNT_OPTIONS="-o nodatacow" + _mount_flakey + + echo "Testing fsync after rename with NOCOW writes" + for ((i = 1; i <= 3; i++)); do + test_fsync "rename_nocow_$i" "rename" + done + echo "Testing fsync after link with NOCOW writes" + for ((i = 1; i <= 3; i++)); do + test_fsync "link_nocow_$i" "link" + done + + _unmount_flakey +else + # Fake result. Zoned btrfs does not support NOCOW + echo "Testing fsync after rename with NOCOW writes" + echo "Testing fsync after link with NOCOW writes" +fi status=0 exit
Modify btrfs tests to require non-zoned block device or limit some part of tests not to be run on zone block devices. Modified tests by the reasons: * Mixed BG - btrfs/011 * Non-single profile - btrfs/003 - btrfs/011 - btrfs/023 - btrfs/124 - btrfs/125 - btrfs/148 - btrfs/157 - btrfs/158 - btrfs/195 - btrfs/197 - btrfs/198 * Convert from ext4 - btrfs/012 - btrfs/136 * nodatacow - btrfs/236 * inode cache - btrfs/049 * space cache (v1) - btrfs/131 * write outside of FS code - btrfs/116 - btrfs/140 - btrfs/215 * verbose output - btrfs/194 Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com> --- common/btrfs | 18 ++++++++++++++++++ tests/btrfs/003 | 13 +++++++++---- tests/btrfs/011 | 21 ++++++++++++--------- tests/btrfs/012 | 2 ++ tests/btrfs/023 | 2 ++ tests/btrfs/049 | 2 ++ tests/btrfs/116 | 2 ++ tests/btrfs/124 | 4 ++++ tests/btrfs/125 | 2 ++ tests/btrfs/131 | 2 ++ tests/btrfs/136 | 2 ++ tests/btrfs/140 | 2 ++ tests/btrfs/148 | 2 ++ tests/btrfs/157 | 2 ++ tests/btrfs/158 | 2 ++ tests/btrfs/194 | 2 +- tests/btrfs/195 | 8 ++++++++ tests/btrfs/197 | 1 + tests/btrfs/198 | 1 + tests/btrfs/215 | 1 + tests/btrfs/236 | 33 ++++++++++++++++++++------------- 21 files changed, 97 insertions(+), 27 deletions(-)