summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRyan Moeller <[email protected]>2020-07-16 00:26:39 -0400
committerGitHub <[email protected]>2020-07-15 21:26:39 -0700
commit103bc5b957b0456814665947a5db7348dcd9d78a (patch)
tree23928efefce6b3ba15eaba52c5256f38131d290e
parent01a4852ecbe3fddd6e7dbab5b740a7871dcd7e8b (diff)
ZTS: Fix nonportable use of stat in list_file_blocks
FreeBSD stat uses -f to specify the format string rather than -c. list_file_blocks in blkdev.shlib uses stat -c %i to get a file's object ID for zdb. We already have a library function to do this portably. Use get_objnum to get the file's object ID. Take log_must off of the call to list_free_blocks in corrupt_blocks_at_level, which had masked the error. It was not good to pipe the output of log_must into the while-loop, anyway. Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: Alek Pinchuk <[email protected]> Reviewed-by: John Kennedy <[email protected]> Signed-off-by: Ryan Moeller <[email protected]> Closes #10572
-rw-r--r--tests/zfs-tests/include/blkdev.shlib10
1 files changed, 5 insertions, 5 deletions
diff --git a/tests/zfs-tests/include/blkdev.shlib b/tests/zfs-tests/include/blkdev.shlib
index 5fda6a1bd..28f439fca 100644
--- a/tests/zfs-tests/include/blkdev.shlib
+++ b/tests/zfs-tests/include/blkdev.shlib
@@ -542,7 +542,7 @@ function list_file_blocks # input_file
typeset ds="$(zfs list -H -o name $input_file)"
typeset pool="${ds%%/*}"
- typeset inum="$(stat -c '%i' $input_file)"
+ typeset objnum="$(get_objnum $input_file)"
#
# Establish a mapping between vdev ids as shown in a DVA and the
@@ -573,7 +573,7 @@ function list_file_blocks # input_file
#
log_must zpool sync -f
typeset level path offset length
- zdb -ddddd $ds $inum | awk -F: '
+ zdb -ddddd $ds $objnum | awk -F: '
BEGIN { looking = 0 }
/^Indirect blocks:/ { looking = 1}
/^\t\tsegment / { looking = 0}
@@ -602,13 +602,13 @@ function corrupt_blocks_at_level # input_file corrupt_level
sysctl kern.geom.debugflags=16
fi
- log_must list_file_blocks $input_file | \
- while read level path offset length; do
+ list_file_blocks $input_file | \
+ while read level path offset length; do
if [[ $level = $corrupt_level ]]; then
log_must dd if=/dev/urandom of=$path bs=512 \
count=$length seek=$offset conv=notrunc
fi
- done
+ done
if is_freebsd; then
sysctl kern.geom.debugflags=$debugflags