Re: [PATCH blktests v2 1/2] common/rc: Check both max_active_zones and max_open_zones

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/3/20 18:42, Shin'ichiro Kawasaki wrote:
> Linux kernel 5.9 introduced new sysfs attributes max_active_zones and
> max_open_zones for zoned block devices. Max_open_zones is the limit of
> number of zones in open status. Max_active_zones is the limit of number
> of zones in open or closed status. Currently, the helper function
> _test_dev_max_active_zones() checks only max_active_zones, but it is not
> enough. When the device has max_open_zones, check for max_active_zones
> can not avoid the errors for write operations.
>
> To avoid the error, improve the function _test_dev_max_active_zones() to
> check the limits both. Rename it to _test_dev_max_open_active_zones().
> When one of the limits is available for the test target device, return
> it. If both limits are available, return smaller limit.
>
> Also modify block/004 and zbd/003 to call the renamed helper function
> and update comment description.
>
> Fixes: e6981bb2d9ce ("common/rc: Add _test_dev_max_active_zones() helper function")
> Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@xxxxxxx>
> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@xxxxxxx>
> ---
>  common/rc       | 19 ++++++++++++++++---
>  tests/block/004 |  2 +-
>  tests/zbd/003   |  6 +++---
>  3 files changed, 20 insertions(+), 7 deletions(-)
>
> diff --git a/common/rc b/common/rc
> index d396fb5..a837542 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -280,11 +280,24 @@ _test_dev_is_partition() {
>  	[[ -n ${TEST_DEV_PART_SYSFS} ]]
>  }
>  
> -_test_dev_max_active_zones() {
> +# Return max open zones or max active zones of the test target device.
> +# If the device has both, return smaller value.
> +_test_dev_max_open_active_zones() {
> +	local -i moz=0
> +	local -i maz=0
> +
> +	if [[ -r "${TEST_DEV_SYSFS}/queue/max_open_zones" ]]; then
> +		moz=$(_test_dev_queue_get max_open_zones)
> +	fi
> +
>  	if [[ -r "${TEST_DEV_SYSFS}/queue/max_active_zones" ]]; then
> -		_test_dev_queue_get max_active_zones
> +		maz=$(_test_dev_queue_get max_active_zones)
> +	fi
> +
> +	if ((!moz)) || ((maz && maz < moz)); then
> +		echo "${maz}"
>  	else
> -		echo 0
> +		echo "${moz}"
>  	fi
>  }
>  
> diff --git a/tests/block/004 b/tests/block/004
> index 6eff6ce..a7cec95 100755
> --- a/tests/block/004
> +++ b/tests/block/004
> @@ -26,7 +26,7 @@ test_device() {
>  	if _test_dev_is_zoned; then
>  		_test_dev_queue_set scheduler deadline
>  		opts+=("--direct=1" "--zonemode=zbd")
> -		opts+=("--max_open_zones=$(_test_dev_max_active_zones)")
> +		opts+=("--max_open_zones=$(_test_dev_max_open_active_zones)")
>  	fi
>  
>  	FIO_PERF_FIELDS=("write iops")
> diff --git a/tests/zbd/003 b/tests/zbd/003
> index 1e92e81..7f4fa2c 100755
> --- a/tests/zbd/003
> +++ b/tests/zbd/003
> @@ -30,10 +30,10 @@ test_device() {
>  
>  	echo "Running ${TEST_NAME}"
>  
> -	# When the test device has max_active_zone limit, reset all zones. This
> -	# ensures the write operations in this test case do not open zones
> +	# When the test device has max_open/active_zones limit, reset all zones.
> +	# This ensures the write operations in this test case do not open zones
>  	# beyond the limit.
> -	(($(_test_dev_max_active_zones))) && blkzone reset "${TEST_DEV}"
> +	(($(_test_dev_max_open_active_zones))) && blkzone reset "${TEST_DEV}"
>  
>  	# Get physical block size as dd block size to meet zoned block device
>  	# requirement

Looks good.

Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@xxxxxxx>





[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux