summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2020-01-20 13:15:46 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2020-01-23 10:32:15 +0100
commitecb77e9db31c88ed1a53e3194366e642f9b04e5a (patch)
tree97e0438d255668af9c2826b340d00cc9ae9ce0c2
parentcf844941d4f0939a78a9e0d0e0ef932172e55bfb (diff)
downloadlvm2-ecb77e9db31c88ed1a53e3194366e642f9b04e5a.tar.gz
tests: writeerror_dev
Intruduce aux function for easy simulation of disk areas, that are 'normally' readable, but will fail on write.
-rw-r--r--test/lib/aux.sh27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index ea126de8a..a9d1fe49d 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -516,6 +516,8 @@ teardown() {
echo -n "## teardown..."
unset LVM_LOG_FILE_EPOCH
+ test ! -f ERR_DEV || should dmsetup remove $(cat ERR_DEV_NAME)
+
if test -f TESTNAME ; then
if test ! -f SKIP_THIS_TEST ; then
@@ -954,6 +956,8 @@ common_dev_() {
case "$tgtype" in
delay)
echo "$from $len delay $pvdev $(( pos + offset )) $read_ms $pvdev $(( pos + offset )) $write_ms" ;;
+ writeerror)
+ echo "$from $len delay $pvdev $(( pos + offset )) 0 $(cat ERR_DEV) 0 0" ;;
error|zero)
echo "$from $len $tgtype" ;;
esac
@@ -1082,6 +1086,29 @@ error_dev() {
}
#
+# Convert device to device with write errors but normal reads.
+# For this 'delay' dev is used and reroutes 'reads' back to original device
+# and for writes it will use extra new TEST-errordev (huge error target)
+# i.e. writeerror_dev "$dev1" 8:32
+writeerror_dev() {
+ local name=${PREFIX}-errordev
+
+ if test ! -e ERR_DEV; then
+ # delay target is used for error mapping
+ if test ! -f HAVE_DM_DELAY ; then
+ target_at_least dm-delay 1 1 0 || return 0
+ touch HAVE_DM_DELAY
+ fi
+ dmsetup create -u "TEST-$name" "$name" --table "0 4611686018427387904 error"
+ # Take major:minor of our error device
+ echo "$name" > ERR_DEV_NAME
+ dmsetup info -c --noheadings -o major,minor "$name" > ERR_DEV
+ fi
+
+ common_dev_ writeerror "$@"
+}
+
+#
# Convert existing device to a device with zero segments
# Takes the list of pairs of zero segment from:len
# Combination with error or delay is unsupported