ZTS: Fix zpool_create/create-o_ashift on FreeBSD

For some unknown reason, egrep was misbehaving with this pattern on
FreeBSD.  The command works fine run interactively from a shell, but
in the test the output of egrep is empty.

Work around the issue by using a filter in the awk script instead.

While here, add a bit of diagnostic output and other simplifications
to the awk script as well.

Reviewed-by: John Kennedy <john.kennedy@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
Closes #10023
This commit is contained in:
Ryan Moeller 2020-02-19 13:27:23 -05:00 committed by GitHub
parent 392556f0ef
commit 873cd182de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 5 deletions

View File

@ -73,15 +73,21 @@ function verify_device_uberblocks # <device> <count>
typeset device=$1
typeset ubcount=$2
zdb -quuul $device | egrep '^(\s+)?Uberblock' |
awk -v ubcount=$ubcount 'BEGIN { count=0 } { uberblocks[$0]++; }
zdb -quuul $device | awk -v ubcount=$ubcount '
/Uberblock/ && ! /invalid/ { uberblocks[$0]++ }
END {
count = 0
for (i in uberblocks) {
if (i ~ /invalid/) { continue; }
if (uberblocks[i] != 4) { exit 1; }
if (uberblocks[i] != 4) {
printf "%s count: %s != 4\n", i, uberblocks[i]
exit 1
}
count++;
}
if (count != ubcount) { exit 1; }
if (count != ubcount) {
printf "Total uberblock count: %s != %s\n", count, ubcount
exit 1
}
}'
return $?