]> www.infradead.org Git - users/hch/blktests.git/commitdiff
zbd/rc: Support zone capacity report by blkzone
authorShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Tue, 28 Jul 2020 10:14:48 +0000 (19:14 +0900)
committerOmar Sandoval <osandov@fb.com>
Tue, 4 Aug 2020 20:56:14 +0000 (13:56 -0700)
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.

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Klaus Jensen <k.jensen@samsung.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
tests/zbd/rc

index 312469375ba4586fe8c5b1d373623a865188dc0a..dafd13050af32b896fa13ee63c24a77378d6936b 100644 (file)
@@ -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