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@xxxxxxx> Reviewed-by: Omar Sandoval <osandov@xxxxxx> --- 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