Skip to content

Commit c4f7df8

Browse files
amotintonyhutter
authored andcommitted
ZTS: Remove non-standard awk hex numbers usage
FreeBSD recently removed non-standard hex numbers support from awk. Neither it supports -n argument, enabling it in gawk. Instead of depending on those rewrite list_file_blocks() fuction to handle the hex math in shell instead of awk. Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: Tony Hutter <[email protected]> Reviewed-by: Tino Reichardt <[email protected]> Signed-off-by:Alexander Motin <[email protected]> Sponsored by: iXsystems, Inc. Closes openzfs#11141
1 parent 3b58dd5 commit c4f7df8

File tree

1 file changed

+4
-15
lines changed

1 file changed

+4
-15
lines changed

tests/zfs-tests/include/blkdev.shlib

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -556,27 +556,15 @@ function list_file_blocks # input_file
556556
# 512B blocks for ease of use with dd.
557557
#
558558
typeset level vdev path offset length
559-
if awk -n '' 2>/dev/null; then
560-
# gawk needs -n to decode hex
561-
AWK='awk -n'
562-
else
563-
AWK='awk'
564-
fi
565559
sync_all_pools true
566-
zdb -dddddd $ds $objnum | $AWK -v pad=$((4<<20)) -v bs=512 '
560+
zdb -dddddd $ds $objnum | awk '
567561
/^$/ { looking = 0 }
568562
looking {
569563
level = $2
570564
field = 3
571565
while (split($field, dva, ":") == 3) {
572-
# top level vdev id
573-
vdev = int(dva[1])
574-
# offset + 4M label/boot pad in 512B blocks
575-
offset = (int("0x"dva[2]) + pad) / bs
576-
# length in 512B blocks
577-
len = int("0x"dva[3]) / bs
578566

579-
print level, vdev, offset, len
567+
print level, int(dva[1]), "0x"dva[2], "0x"dva[3]
580568

581569
++field
582570
}
@@ -585,7 +573,8 @@ function list_file_blocks # input_file
585573
' | \
586574
while read level vdev offset length; do
587575
for path in ${VDEV_MAP[$vdev][@]}; do
588-
echo "$level $path $offset $length"
576+
echo "$level $path $(( ($offset + (4<<20)) / 512 ))" \
577+
"$(( $length / 512 ))"
589578
done
590579
done 2>/dev/null
591580
}

0 commit comments

Comments
 (0)