diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2023-04-21 01:35:31 +0200 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2023-04-21 14:52:43 +0200 |
commit | 11562bcc6b9dc09eb0c5bccb69a7741dec9e626b (patch) | |
tree | 5860687c8ff9223c0e117b373b48c809aaac011e /test | |
parent | b030ef31de0897aac1964dce4368750bb1166d5c (diff) | |
download | lvm2-11562bcc6b9dc09eb0c5bccb69a7741dec9e626b.tar.gz |
aux: add clear_dev
Function that will use 'blkdiscard -z' and fallbacks
to 'dd' when such option is not available.
Diffstat (limited to 'test')
-rw-r--r-- | test/lib/aux.sh | 36 |
1 files changed, 36 insertions, 0 deletions
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 |