diff mbox series

[blktests,5/5] zbd: Change sysfs path for partition devices

Message ID 20190220081231.15366-6-shinichiro.kawasaki@wdc.com (mailing list archive)
State New, archived
Headers show
Series Fix failures found with zoned block devices | expand

Commit Message

Shinichiro Kawasaki Feb. 20, 2019, 8:12 a.m. UTC
zbd/001 and zbd/002 test cases fail for partition devices because of
sysfs path difference between partition devices and their holder
devices. The size parameter in sysfs path is different between the
partition devices and their holder devices. The holder devices have
nr_zones parameter in sysfs but the partition devices do not.

Utilize _test_dev_is_partition() helper function and TEST_DEV_PART_SYSFS
variable to refer correct sysfs size parameter for the partition devices.
Do not refer sysfs nr_zones parameter for the partition devices. Instead,
calculate the expected nr_zones from device capacity and zone size.

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
---
 tests/zbd/rc | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Comments

Omar Sandoval March 4, 2019, 10:36 p.m. UTC | #1
On Wed, Feb 20, 2019 at 05:12:31PM +0900, Shin'ichiro Kawasaki wrote:
> zbd/001 and zbd/002 test cases fail for partition devices because of
> sysfs path difference between partition devices and their holder
> devices. The size parameter in sysfs path is different between the
> partition devices and their holder devices. The holder devices have
> nr_zones parameter in sysfs but the partition devices do not.
> 
> Utilize _test_dev_is_partition() helper function and TEST_DEV_PART_SYSFS
> variable to refer correct sysfs size parameter for the partition devices.
> Do not refer sysfs nr_zones parameter for the partition devices. Instead,
> calculate the expected nr_zones from device capacity and zone size.

Reviewed-by: Omar Sandoval <osandov@fb.com>

> Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
> ---
>  tests/zbd/rc | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/zbd/rc b/tests/zbd/rc
> index c32bf31..88538d0 100644
> --- a/tests/zbd/rc
> +++ b/tests/zbd/rc
> @@ -75,7 +75,11 @@ export SV_NR_ZONES=4
>  _get_sysfs_variable() {
>  	unset SYSFS_VARS
>  	local _dir=${TEST_DEV_SYSFS}
> -	SYSFS_VARS[$SV_CAPACITY]=$(<"${_dir}"/size)
> +	if _test_dev_is_partition; then
> +		SYSFS_VARS[$SV_CAPACITY]=$(<"${TEST_DEV_PART_SYSFS}"/size)
> +	else
> +		SYSFS_VARS[$SV_CAPACITY]=$(<"${_dir}"/size)
> +	fi
>  	SYSFS_VARS[$SV_CHUNK_SECTORS]=$(<"${_dir}"/queue/chunk_sectors)
>  	SYSFS_VARS[$SV_PHYS_BLK_SIZE]=$(<"${_dir}"/queue/physical_block_size)
>  	SYSFS_VARS[$SV_PHYS_BLK_SECTORS]=$((SYSFS_VARS[SV_PHYS_BLK_SIZE] / 512))
> @@ -83,7 +87,7 @@ _get_sysfs_variable() {
>  	# If the nr_zones sysfs attribute exists, get its value. Otherwise,
>  	# calculate its value based on the total capacity and zone size, taking
>  	# into account that the last zone can be smaller than other zones.
> -	if [[ -e ${TEST_DEV_SYSFS}/queue/nr_zones ]]; then
> +	if [[ -e "${_dir}"/queue/nr_zones ]] && ! _test_dev_is_partition; then
>  		SYSFS_VARS[$SV_NR_ZONES]=$(<"${_dir}"/queue/nr_zones)
>  	else
>  		SYSFS_VARS[$SV_NR_ZONES]=$(( (SYSFS_VARS[SV_CAPACITY] - 1) \
> -- 
> 2.20.1
>
diff mbox series

Patch

diff --git a/tests/zbd/rc b/tests/zbd/rc
index c32bf31..88538d0 100644
--- a/tests/zbd/rc
+++ b/tests/zbd/rc
@@ -75,7 +75,11 @@  export SV_NR_ZONES=4
 _get_sysfs_variable() {
 	unset SYSFS_VARS
 	local _dir=${TEST_DEV_SYSFS}
-	SYSFS_VARS[$SV_CAPACITY]=$(<"${_dir}"/size)
+	if _test_dev_is_partition; then
+		SYSFS_VARS[$SV_CAPACITY]=$(<"${TEST_DEV_PART_SYSFS}"/size)
+	else
+		SYSFS_VARS[$SV_CAPACITY]=$(<"${_dir}"/size)
+	fi
 	SYSFS_VARS[$SV_CHUNK_SECTORS]=$(<"${_dir}"/queue/chunk_sectors)
 	SYSFS_VARS[$SV_PHYS_BLK_SIZE]=$(<"${_dir}"/queue/physical_block_size)
 	SYSFS_VARS[$SV_PHYS_BLK_SECTORS]=$((SYSFS_VARS[SV_PHYS_BLK_SIZE] / 512))
@@ -83,7 +87,7 @@  _get_sysfs_variable() {
 	# If the nr_zones sysfs attribute exists, get its value. Otherwise,
 	# calculate its value based on the total capacity and zone size, taking
 	# into account that the last zone can be smaller than other zones.
-	if [[ -e ${TEST_DEV_SYSFS}/queue/nr_zones ]]; then
+	if [[ -e "${_dir}"/queue/nr_zones ]] && ! _test_dev_is_partition; then
 		SYSFS_VARS[$SV_NR_ZONES]=$(<"${_dir}"/queue/nr_zones)
 	else
 		SYSFS_VARS[$SV_NR_ZONES]=$(( (SYSFS_VARS[SV_CAPACITY] - 1) \