From 11562bcc6b9dc09eb0c5bccb69a7741dec9e626b Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Fri, 21 Apr 2023 01:35:31 +0200 Subject: aux: add clear_dev Function that will use 'blkdiscard -z' and fallbacks to 'dd' when such option is not available. --- test/lib/aux.sh | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'test') diff --git a/test/lib/aux.sh b/test/lib/aux.sh index 9412a20af..3ab599f60 100644 --- a/test/lib/aux.sh +++ b/test/lib/aux.sh @@ -916,6 +916,42 @@ cleanup_idm_context() { fi } + +# +# clear device either with blkdiscard -z or fallback to 'dd' +# $1 device_path +# TODO: add support for parametrized [OPTION] usage (Not usable ATM) +# TODO: -bs blocksize (defaults 512K) +# TODO: -count count/length (defaults to whole device, otherwise in BS units) +# TODO: -seek offset/oseek (defaults 0, begining of zeroing area in BS unit) +clear_devs() { + local bs= + local count= + local seek= + + while [ "$#" -ne 0 ] ; do + case "$1" in + "") ;; + "--bs") bs=$2; shift ;; + "--count") count=$2; shift ;; + "--seek") seek=$2; shift ;; + *TEST*) # Protection: only test devices with TEST in its path name can be zeroed + test -e NO_BLKDISCARD_Z || { + if blkdiscard -f -z "$1" ; then + shift + continue + fi + echo "Info: can't use 'blkdiscard -z' switch to 'dd'." + touch NO_BLKDISCARD_Z + } + + dd if=/dev/zero of="$1" bs=512K oflag=direct $seek $count || true + ;; + esac + shift + done +} + prepare_backing_dev() { local size=${1=32} shift -- cgit v1.2.1