# 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.
# to simplify loop operation.
ZONE_STARTS=()
ZONE_LENGTHS=()
+ ZONE_CAPS=()
ZONE_WPTRS=()
ZONE_CONDS=()
ZONE_TYPES=()
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=$' ,:'
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
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]}" )
_put_blkzone_report() {
unset ZONE_STARTS
unset ZONE_LENGTHS
+ unset ZONE_CAPS
unset ZONE_WPTRS
unset ZONE_CONDS
unset ZONE_TYPES