All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/3] fstests: add checks for testing zoned btrfs
@ 2021-08-16 11:35 Naohiro Aota
  2021-08-16 11:35 ` [PATCH v3 1/3] common: add zoned block device checks Naohiro Aota
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Naohiro Aota @ 2021-08-16 11:35 UTC (permalink / raw)
  To: fstests; +Cc: linux-btrfs, Naohiro Aota

Several tests are failing on zoned btrfs, but actually they are invalid.

One reason was creating too small filesystem. This issue is already
addressed with v2.

The other reason is lacking of zone support of some dm targets and loop
device. This series address the issue.

Naohiro Aota (3):
  common: add zoned block device checks
  fstests: btrfs: add checks for zoned block device
  fstests: generic: add checks for zoned block device

 common/btrfs      | 26 ++++++++++++++++++++++++++
 common/rc         | 13 +++++++++++++
 tests/btrfs/003   | 16 ++++++++++++----
 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/131   |  2 ++
 tests/btrfs/136   |  2 ++
 tests/btrfs/140   |  2 ++
 tests/btrfs/194   |  2 +-
 tests/btrfs/195   |  2 ++
 tests/btrfs/197   |  2 ++
 tests/btrfs/198   |  2 ++
 tests/btrfs/215   |  2 ++
 tests/btrfs/236   | 33 ++++++++++++++++++++-------------
 tests/generic/108 |  2 ++
 tests/generic/471 |  2 ++
 tests/generic/570 |  2 ++
 21 files changed, 116 insertions(+), 27 deletions(-)

-- 
2.32.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v3 1/3] common: add zoned block device checks
  2021-08-16 11:35 [PATCH v3 0/3] fstests: add checks for testing zoned btrfs Naohiro Aota
@ 2021-08-16 11:35 ` Naohiro Aota
  2021-08-17 23:59   ` Darrick J. Wong
  2021-08-16 11:35 ` [PATCH v3 2/3] fstests: btrfs: add checks for zoned block device Naohiro Aota
  2021-08-16 11:35 ` [PATCH v3 3/3] fstests: generic: " Naohiro Aota
  2 siblings, 1 reply; 7+ messages in thread
From: Naohiro Aota @ 2021-08-16 11:35 UTC (permalink / raw)
  To: fstests; +Cc: linux-btrfs, Naohiro Aota

dm-error and dm-snapshot does not have DM_TARGET_ZONED_HM nor
DM_TARGET_MIXED_ZONED_MODEL feature and does not implement
.report_zones(). So, it cannot pass the zone information from the down
layer (zoned device) to the upper layer.

Loop device also cannot pass the zone information.

This patch requires non-zoned block device for the tests using these
ones.

Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
---
 common/rc | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/common/rc b/common/rc
index 84757fc1755e..e0b6d50854c6 100644
--- a/common/rc
+++ b/common/rc
@@ -1837,6 +1837,9 @@ _require_loop()
     else
 	_notrun "This test requires loopback device support"
     fi
+
+    # loop device does not handle zone information
+    _require_non_zoned_device ${TEST_DEV}
 }
 
 # this test requires kernel support for a secondary filesystem
@@ -1966,6 +1969,16 @@ _require_dm_target()
 	if [ $? -ne 0 ]; then
 		_notrun "This test requires dm $target support"
 	fi
+
+	# dm-error cannot handle the zone information
+	#
+	# dm-snapshot and dm-thin-pool cannot ensure sequential writes on
+	# the backing device
+	case $target in
+	error|snapshot|thin-pool)
+		_require_non_zoned_device ${SCRATCH_DEV}
+		;;
+	esac
 }
 
 _zone_type()
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v3 2/3] fstests: btrfs: add checks for zoned block device
  2021-08-16 11:35 [PATCH v3 0/3] fstests: add checks for testing zoned btrfs Naohiro Aota
  2021-08-16 11:35 ` [PATCH v3 1/3] common: add zoned block device checks Naohiro Aota
@ 2021-08-16 11:35 ` Naohiro Aota
  2021-08-16 11:35 ` [PATCH v3 3/3] fstests: generic: " Naohiro Aota
  2 siblings, 0 replies; 7+ messages in thread
From: Naohiro Aota @ 2021-08-16 11:35 UTC (permalink / raw)
  To: fstests; +Cc: linux-btrfs, Naohiro Aota

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/195
  - btrfs/197
  - btrfs/198
  - and these are restricted indirectly by "_require_btrfs_fs_feature raid56"
    - btrfs/125
    - btrfs/148
    - btrfs/157
    - btrfs/158
* 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    | 26 ++++++++++++++++++++++++++
 tests/btrfs/003 | 16 ++++++++++++----
 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/131 |  2 ++
 tests/btrfs/136 |  2 ++
 tests/btrfs/140 |  2 ++
 tests/btrfs/194 |  2 +-
 tests/btrfs/195 |  2 ++
 tests/btrfs/197 |  2 ++
 tests/btrfs/198 |  2 ++
 tests/btrfs/215 |  2 ++
 tests/btrfs/236 | 33 ++++++++++++++++++++-------------
 17 files changed, 97 insertions(+), 27 deletions(-)

diff --git a/common/btrfs b/common/btrfs
index ebe6ce269a6b..ac880bddf524 100644
--- a/common/btrfs
+++ b/common/btrfs
@@ -96,6 +96,11 @@ _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()
@@ -222,6 +227,21 @@ _btrfs_get_profile_configs()
 		else
 			local unsupported=()
 		fi
+
+		if _scratch_btrfs_is_zoned; then
+			# Zoned btrfs only supports SINGLE profile
+			unsupported+=(
+				"dup"
+				"raid0"
+				"raid1"
+				"raid1c3"
+				"raid1c4"
+				"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 +439,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..0aa4c99176b5 100755
--- a/tests/btrfs/003
+++ b/tests/btrfs/003
@@ -173,12 +173,20 @@ _test_remove()
 	_scratch_unmount
 }
 
-_test_raid0
-_test_raid1
-_test_raid10
+# Zoned btrfs only supports SINGLE profile
+if ! _scratch_btrfs_is_zoned; then
+	_test_raid0
+	_test_raid1
+	_test_raid10
+fi
+
 _test_single
 _test_add
-_test_replace
+# _test_replace() uses raid1, but zoned btrfs only supports SINGLE
+# profile
+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..9facf3e2092c 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
+# Zoned btrfs only supports SINGLE profile
+_require_non_zoned_device "${SCRATCH_DEV}"
 
 create_group_profile()
 {
diff --git a/tests/btrfs/049 b/tests/btrfs/049
index ad4ef122f3c9..87c205ca9650 100755
--- a/tests/btrfs/049
+++ b/tests/btrfs/049
@@ -27,6 +27,8 @@ _cleanup()
 _supported_fs btrfs
 _require_scratch
 _require_dm_target flakey
+# Zoned btrfs does not support inode cache
+_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/131 b/tests/btrfs/131
index 81e5d9bc90c7..1e072b285ecf 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
+# Zoned btrfs does not support space_cache(v1)
+_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..5a5f828ce0de 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
+# Overwriting data is forbidden on a zoned block device
+_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..747345973244 100755
--- a/tests/btrfs/195
+++ b/tests/btrfs/195
@@ -18,6 +18,8 @@ _begin_fstest auto volume balance
 # Modify as appropriate.
 _supported_fs btrfs
 _require_scratch_dev_pool 4
+# Zoned btrfs only supports SINGLE profile
+_require_non_zoned_device "${SCRATCH_DEV}"
 
 declare -a TEST_VECTORS=(
 # $nr_dev_min:$data:$metadata:$data_convert:$metadata_convert
diff --git a/tests/btrfs/197 b/tests/btrfs/197
index f5baf5b6066b..597bc36f0fd7 100755
--- a/tests/btrfs/197
+++ b/tests/btrfs/197
@@ -30,6 +30,8 @@ _supported_fs btrfs
 _require_test
 _require_scratch
 _require_scratch_dev_pool 5
+# Zoned btrfs only supports SINGLE profile
+_require_non_zoned_device ${SCRATCH_DEV}
 
 workout()
 {
diff --git a/tests/btrfs/198 b/tests/btrfs/198
index b3e175a25bf9..035c63fdb5ec 100755
--- a/tests/btrfs/198
+++ b/tests/btrfs/198
@@ -20,6 +20,8 @@ _supported_fs btrfs
 _require_command "$WIPEFS_PROG" wipefs
 _require_scratch
 _require_scratch_dev_pool 4
+# Zoned btrfs only supports SINGLE profile
+_require_non_zoned_device ${SCRATCH_DEV}
 
 workout()
 {
diff --git a/tests/btrfs/215 b/tests/btrfs/215
index b45bd520b8e6..fa622568adfd 100755
--- a/tests/btrfs/215
+++ b/tests/btrfs/215
@@ -24,6 +24,8 @@ get_physical()
 
 # Modify as appropriate.
 _supported_fs btrfs
+# Overwriting data is forbidden on a zoned block device
+_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
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v3 3/3] fstests: generic: add checks for zoned block device
  2021-08-16 11:35 [PATCH v3 0/3] fstests: add checks for testing zoned btrfs Naohiro Aota
  2021-08-16 11:35 ` [PATCH v3 1/3] common: add zoned block device checks Naohiro Aota
  2021-08-16 11:35 ` [PATCH v3 2/3] fstests: btrfs: add checks for zoned block device Naohiro Aota
@ 2021-08-16 11:35 ` Naohiro Aota
  2021-08-18  0:01   ` Darrick J. Wong
  2 siblings, 1 reply; 7+ messages in thread
From: Naohiro Aota @ 2021-08-16 11:35 UTC (permalink / raw)
  To: fstests; +Cc: linux-btrfs, Naohiro Aota

Modify generic tests to require non-zoned block device

generic/108 is disabled on zoned block device because the LVM device not
always aligned to the zone boundary.

generic/471 is disabled because we cannot enable NoCoW on zoned btrfs.

generic/570 is disabled because swap file which require nocow is not usable
on zoned btrfs.

Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
---
 tests/generic/108 | 2 ++
 tests/generic/471 | 2 ++
 tests/generic/570 | 2 ++
 3 files changed, 6 insertions(+)

diff --git a/tests/generic/108 b/tests/generic/108
index b7797e8fac2b..6e1ea5b9d20a 100755
--- a/tests/generic/108
+++ b/tests/generic/108
@@ -36,6 +36,8 @@ _require_scratch_nocheck
 _require_block_device $SCRATCH_DEV
 _require_scsi_debug
 _require_command "$LVM_PROG" lvm
+# We cannot ensure the Logical Volume is aligned to the zone boundary
+_require_non_zoned_device $SCRATCH_DEV
 
 lvname=lv_$seq
 vgname=vg_$seq
diff --git a/tests/generic/471 b/tests/generic/471
index dab06f3a315c..fbd0b12a9e3a 100755
--- a/tests/generic/471
+++ b/tests/generic/471
@@ -37,6 +37,8 @@ mkdir $testdir
 # all filesystems, use a NOCOW file on btrfs.
 if [ $FSTYP == "btrfs" ]; then
 	_require_chattr C
+	# Zoned btrfs does not support NOCOW
+	_require_non_zoned_device $TEST_DEV
 	touch $testdir/f1
 	$CHATTR_PROG +C $testdir/f1
 fi
diff --git a/tests/generic/570 b/tests/generic/570
index 7d03acfe3c44..126b222d10d2 100755
--- a/tests/generic/570
+++ b/tests/generic/570
@@ -25,6 +25,8 @@ _supported_fs generic
 _require_test_program swapon
 _require_scratch_nocheck
 _require_block_device $SCRATCH_DEV
+# We cannot create swap on a zoned device because it can cause random write IOs
+_require_non_zoned_device "$SCRATCH_DEV"
 test -e /dev/snapshot && _notrun "userspace hibernation to swap is enabled"
 
 $MKSWAP_PROG "$SCRATCH_DEV" >> $seqres.full
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 1/3] common: add zoned block device checks
  2021-08-16 11:35 ` [PATCH v3 1/3] common: add zoned block device checks Naohiro Aota
@ 2021-08-17 23:59   ` Darrick J. Wong
  2021-08-18  2:51     ` Naohiro Aota
  0 siblings, 1 reply; 7+ messages in thread
From: Darrick J. Wong @ 2021-08-17 23:59 UTC (permalink / raw)
  To: Naohiro Aota; +Cc: fstests, linux-btrfs

On Mon, Aug 16, 2021 at 08:35:08PM +0900, Naohiro Aota wrote:
> dm-error and dm-snapshot does not have DM_TARGET_ZONED_HM nor
> DM_TARGET_MIXED_ZONED_MODEL feature and does not implement
> .report_zones(). So, it cannot pass the zone information from the down
> layer (zoned device) to the upper layer.
> 
> Loop device also cannot pass the zone information.
> 
> This patch requires non-zoned block device for the tests using these
> ones.
> 
> Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
> ---
>  common/rc | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/common/rc b/common/rc
> index 84757fc1755e..e0b6d50854c6 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -1837,6 +1837,9 @@ _require_loop()
>      else
>  	_notrun "This test requires loopback device support"
>      fi
> +
> +    # loop device does not handle zone information
> +    _require_non_zoned_device ${TEST_DEV}

Is this true of loop devices sitting on top of zoned block devices?

If so, then the rest looks good to me.
Reviewed-by: Darrick J. Wong <djwong@kernel.org>

--D

>  }
>  
>  # this test requires kernel support for a secondary filesystem
> @@ -1966,6 +1969,16 @@ _require_dm_target()
>  	if [ $? -ne 0 ]; then
>  		_notrun "This test requires dm $target support"
>  	fi
> +
> +	# dm-error cannot handle the zone information
> +	#
> +	# dm-snapshot and dm-thin-pool cannot ensure sequential writes on
> +	# the backing device
> +	case $target in
> +	error|snapshot|thin-pool)
> +		_require_non_zoned_device ${SCRATCH_DEV}
> +		;;
> +	esac
>  }
>  
>  _zone_type()
> -- 
> 2.32.0
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 3/3] fstests: generic: add checks for zoned block device
  2021-08-16 11:35 ` [PATCH v3 3/3] fstests: generic: " Naohiro Aota
@ 2021-08-18  0:01   ` Darrick J. Wong
  0 siblings, 0 replies; 7+ messages in thread
From: Darrick J. Wong @ 2021-08-18  0:01 UTC (permalink / raw)
  To: Naohiro Aota; +Cc: fstests, linux-btrfs

On Mon, Aug 16, 2021 at 08:35:10PM +0900, Naohiro Aota wrote:
> Modify generic tests to require non-zoned block device
> 
> generic/108 is disabled on zoned block device because the LVM device not
> always aligned to the zone boundary.
> 
> generic/471 is disabled because we cannot enable NoCoW on zoned btrfs.
> 
> generic/570 is disabled because swap file which require nocow is not usable
> on zoned btrfs.
> 
> Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>

I'm surprised that only three generic tests needed the annotation, but
the logic makes sense, so
Reviewed-by: Darrick J. Wong <djwong@kernel.org>

--D

> ---
>  tests/generic/108 | 2 ++
>  tests/generic/471 | 2 ++
>  tests/generic/570 | 2 ++
>  3 files changed, 6 insertions(+)
> 
> diff --git a/tests/generic/108 b/tests/generic/108
> index b7797e8fac2b..6e1ea5b9d20a 100755
> --- a/tests/generic/108
> +++ b/tests/generic/108
> @@ -36,6 +36,8 @@ _require_scratch_nocheck
>  _require_block_device $SCRATCH_DEV
>  _require_scsi_debug
>  _require_command "$LVM_PROG" lvm
> +# We cannot ensure the Logical Volume is aligned to the zone boundary
> +_require_non_zoned_device $SCRATCH_DEV
>  
>  lvname=lv_$seq
>  vgname=vg_$seq
> diff --git a/tests/generic/471 b/tests/generic/471
> index dab06f3a315c..fbd0b12a9e3a 100755
> --- a/tests/generic/471
> +++ b/tests/generic/471
> @@ -37,6 +37,8 @@ mkdir $testdir
>  # all filesystems, use a NOCOW file on btrfs.
>  if [ $FSTYP == "btrfs" ]; then
>  	_require_chattr C
> +	# Zoned btrfs does not support NOCOW
> +	_require_non_zoned_device $TEST_DEV
>  	touch $testdir/f1
>  	$CHATTR_PROG +C $testdir/f1
>  fi
> diff --git a/tests/generic/570 b/tests/generic/570
> index 7d03acfe3c44..126b222d10d2 100755
> --- a/tests/generic/570
> +++ b/tests/generic/570
> @@ -25,6 +25,8 @@ _supported_fs generic
>  _require_test_program swapon
>  _require_scratch_nocheck
>  _require_block_device $SCRATCH_DEV
> +# We cannot create swap on a zoned device because it can cause random write IOs
> +_require_non_zoned_device "$SCRATCH_DEV"
>  test -e /dev/snapshot && _notrun "userspace hibernation to swap is enabled"
>  
>  $MKSWAP_PROG "$SCRATCH_DEV" >> $seqres.full
> -- 
> 2.32.0
> 

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 1/3] common: add zoned block device checks
  2021-08-17 23:59   ` Darrick J. Wong
@ 2021-08-18  2:51     ` Naohiro Aota
  0 siblings, 0 replies; 7+ messages in thread
From: Naohiro Aota @ 2021-08-18  2:51 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: fstests, linux-btrfs

On Tue, Aug 17, 2021 at 04:59:54PM -0700, Darrick J. Wong wrote:
> On Mon, Aug 16, 2021 at 08:35:08PM +0900, Naohiro Aota wrote:
> > dm-error and dm-snapshot does not have DM_TARGET_ZONED_HM nor
> > DM_TARGET_MIXED_ZONED_MODEL feature and does not implement
> > .report_zones(). So, it cannot pass the zone information from the down
> > layer (zoned device) to the upper layer.
> > 
> > Loop device also cannot pass the zone information.
> > 
> > This patch requires non-zoned block device for the tests using these
> > ones.
> > 
> > Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
> > ---
> >  common/rc | 13 +++++++++++++
> >  1 file changed, 13 insertions(+)
> > 
> > diff --git a/common/rc b/common/rc
> > index 84757fc1755e..e0b6d50854c6 100644
> > --- a/common/rc
> > +++ b/common/rc
> > @@ -1837,6 +1837,9 @@ _require_loop()
> >      else
> >  	_notrun "This test requires loopback device support"
> >      fi
> > +
> > +    # loop device does not handle zone information
> > +    _require_non_zoned_device ${TEST_DEV}
> 
> Is this true of loop devices sitting on top of zoned block devices?

True. For example, with setting up a loop device on a zoned device
(/dev/nullb1).

$ sudo losetup -l            
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE   DIO LOG-SEC
/dev/loop0         0      0         0  0 /dev/nullb1   0     512

We see "nulb1" as a zoned devcie (host-managed), but loop0 as a
non-zoned device.

$ lsblk -z /dev/loop0 /dev/nullb1
NAME   ZONED
loop0  none
nullb1 host-managed

> If so, then the rest looks good to me.
> Reviewed-by: Darrick J. Wong <djwong@kernel.org>

Thanks.

> --D
> 
> >  }
> >  
> >  # this test requires kernel support for a secondary filesystem
> > @@ -1966,6 +1969,16 @@ _require_dm_target()
> >  	if [ $? -ne 0 ]; then
> >  		_notrun "This test requires dm $target support"
> >  	fi
> > +
> > +	# dm-error cannot handle the zone information
> > +	#
> > +	# dm-snapshot and dm-thin-pool cannot ensure sequential writes on
> > +	# the backing device
> > +	case $target in
> > +	error|snapshot|thin-pool)
> > +		_require_non_zoned_device ${SCRATCH_DEV}
> > +		;;
> > +	esac
> >  }
> >  
> >  _zone_type()
> > -- 
> > 2.32.0
> > 

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-08-18  2:51 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-16 11:35 [PATCH v3 0/3] fstests: add checks for testing zoned btrfs Naohiro Aota
2021-08-16 11:35 ` [PATCH v3 1/3] common: add zoned block device checks Naohiro Aota
2021-08-17 23:59   ` Darrick J. Wong
2021-08-18  2:51     ` Naohiro Aota
2021-08-16 11:35 ` [PATCH v3 2/3] fstests: btrfs: add checks for zoned block device Naohiro Aota
2021-08-16 11:35 ` [PATCH v3 3/3] fstests: generic: " Naohiro Aota
2021-08-18  0:01   ` Darrick J. Wong

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.