diff options
author | Ryan Moeller <[email protected]> | 2020-07-16 00:26:39 -0400 |
---|---|---|
committer | GitHub <[email protected]> | 2020-07-15 21:26:39 -0700 |
commit | 103bc5b957b0456814665947a5db7348dcd9d78a (patch) | |
tree | 23928efefce6b3ba15eaba52c5256f38131d290e | |
parent | 01a4852ecbe3fddd6e7dbab5b740a7871dcd7e8b (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.shlib | 10 |
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 |