[PATCH blktests 1/5] zbd/rc: Support zone capacity report by blkzone

Shin'ichiro Kawasaki
2020-07-28T10:14:57Z

Linux kernel 5.9 zone descriptor interface added the new zone capacity
field defining the range of sectors usable within a zone. The blkzone
tool recently supported the zone capacity in its report zone feature.
Modify the helper function _get_blkzone_report() to support the zone
capacity field.

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

diff --git a/tests/zbd/rc b/tests/zbd/rc
index 3124693..dafd130 100644
--- a/tests/zbd/rc
+++ b/tests/zbd/rc
@@ -104,6 +104,7 @@ _put_sysfs_variable() {
# until put function call.
_get_blkzone_report() {
local target_dev=${1}
+ local cap_idx wptr_idx conds_idx type_idx

# Initialize arrays to store parsed blkzone reports.
# Number of reported zones is set in REPORTED_COUNT.
@@ -111,6 +112,7 @@ _get_blkzone_report() {
# to simplify loop operation.
ZONE_STARTS=()
ZONE_LENGTHS=()
+ ZONE_CAPS=()
ZONE_WPTRS=()
ZONE_CONDS=()
ZONE_TYPES=()
@@ -123,6 +125,17 @@ _get_blkzone_report() {
return $?
fi

+ cap_idx=3
+ wptr_idx=5
+ conds_idx=11
+ type_idx=13
+ if grep -qe "cap 0x" "${TMP_REPORT_FILE}"; then
+ cap_idx=5
+ wptr_idx=7
+ conds_idx=13
+ type_idx=15
+ fi
+
local _IFS=$IFS
local -i loop=0
IFS=$' ,:'
@@ -130,9 +143,10 @@ _get_blkzone_report() {
do
ZONE_STARTS+=($((_tokens[1])))
ZONE_LENGTHS+=($((_tokens[3])))
- ZONE_WPTRS+=($((_tokens[5])))
- ZONE_CONDS+=($((${_tokens[11]%\(*})))
- ZONE_TYPES+=($((${_tokens[13]%\(*})))
+ ZONE_CAPS+=($((_tokens[cap_idx])))
+ ZONE_WPTRS+=($((_tokens[wptr_idx])))
+ ZONE_CONDS+=($((${_tokens[conds_idx]%\(*})))
+ ZONE_TYPES+=($((${_tokens[type_idx]%\(*})))
if [[ ${ZONE_TYPES[-1]} -eq ${ZONE_TYPE_CONVENTIONAL} ]]; then
(( NR_CONV_ZONES++ ))
fi
@@ -150,6 +164,7 @@ _get_blkzone_report() {
local -i max_idx=$((REPORTED_COUNT - 1))
ZONE_STARTS+=( $((ZONE_STARTS[max_idx] + ZONE_LENGTHS[max_idx])) )
ZONE_LENGTHS+=( "${ZONE_LENGTHS[max_idx]}" )
+ ZONE_CAPS+=( "${ZONE_CAPS[max_idx]}" )
ZONE_WPTRS+=( "${ZONE_WPTRS[max_idx]}" )
ZONE_CONDS+=( "${ZONE_CONDS[max_idx]}" )
ZONE_TYPES+=( "${ZONE_TYPES[max_idx]}" )
@@ -160,6 +175,7 @@ _get_blkzone_report() {
_put_blkzone_report() {
unset ZONE_STARTS
unset ZONE_LENGTHS
+ unset ZONE_CAPS
unset ZONE_WPTRS
unset ZONE_CONDS
unset ZONE_TYPES
--
2.26.2