summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2023-04-21 01:35:31 +0200
committerZdenek Kabelac <zkabelac@redhat.com>2023-04-21 14:52:43 +0200
commit11562bcc6b9dc09eb0c5bccb69a7741dec9e626b (patch)
tree5860687c8ff9223c0e117b373b48c809aaac011e /test
parentb030ef31de0897aac1964dce4368750bb1166d5c (diff)
downloadlvm2-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.sh36
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