summaryrefslogtreecommitdiff
path: root/test/shell/lvconvert-raid-takeover.sh
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2017-03-20 14:18:50 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2017-03-20 14:18:50 +0100
commit17b56a4aed90806eac03c32f013f552440b2f596 (patch)
treed2a92b3087dc541071d209dfa17974d7506c03fe /test/shell/lvconvert-raid-takeover.sh
parent07040942ed02455cf168ba6cf40264a644627553 (diff)
downloadlvm2-17b56a4aed90806eac03c32f013f552440b2f596.tar.gz
tests: early detect leaking error dev
lvconvert should not leak 'error' device. (This patch is not fix the problem, just makes it more easily visible instead of more confusing 'clvmd' trace).
Diffstat (limited to 'test/shell/lvconvert-raid-takeover.sh')
-rw-r--r--test/shell/lvconvert-raid-takeover.sh28
1 files changed, 27 insertions, 1 deletions
diff --git a/test/shell/lvconvert-raid-takeover.sh b/test/shell/lvconvert-raid-takeover.sh
index 0e8e880eb..e1b1d98b4 100644
--- a/test/shell/lvconvert-raid-takeover.sh
+++ b/test/shell/lvconvert-raid-takeover.sh
@@ -22,6 +22,26 @@ aux have_raid 1 9 1 && correct_raid4_layout=1
aux prepare_vg 8
+# FIXME: lvconvert leaks 'error' devices
+detect_error_leak_()
+{
+ local err
+
+ dmsetup info -c -o name --noheadings | tee out
+ if grep $vg out ; then
+ for i in $(grep $vg out) ; do
+ if dmsetup table $i | grep "error "; then
+ err="$err $i"
+ fi
+ done
+ test -z "$err" || {
+ dmsetup table | grep $vg
+ dmsetup ls --tree
+ die "Device(s) $err should not be here."
+ }
+ fi
+}
+
function _lvcreate
{
local level=$1
@@ -56,7 +76,8 @@ function _lvconvert
[ "${level:0:5}" = "raid0" ] && wait_and_check=0
lvconvert -y --ty $req_level $R $vg/$lv
- [ $? -ne 0 ] && return $?
+ detect_error_leak_
+
check lv_field $vg/$lv segtype "$level"
check lv_field $vg/$lv data_stripes $data_stripes
check lv_field $vg/$lv stripes $stripes
@@ -112,6 +133,7 @@ fsck -fn "$DM_DEV_DIR/$vg/$lv1"
# Convert 3-way to 4-way mirror
lvconvert -m 3 $vg/$lv1
+detect_error_leak_
check lv_field $vg/$lv1 segtype "mirror"
check lv_field $vg/$lv1 stripes 4
fsck -fn "$DM_DEV_DIR/$vg/$lv1"
@@ -120,6 +142,7 @@ fsck -fn "$DM_DEV_DIR/$vg/$lv1"
# Takeover 4-way mirror to raid1
lvconvert --yes --type raid1 -R 64k $vg/$lv1
+detect_error_leak_
check lv_field $vg/$lv1 segtype "raid1"
check lv_field $vg/$lv1 stripes 4
check lv_field $vg/$lv1 regionsize "64.00k"
@@ -127,6 +150,7 @@ fsck -fn "$DM_DEV_DIR/$vg/$lv1"
## Convert 4-way raid1 to 5-way
lvconvert -m 4 -R 128K $vg/$lv1
+detect_error_leak_
check lv_field $vg/$lv1 segtype "raid1"
check lv_field $vg/$lv1 stripes 5
check lv_field $vg/$lv1 regionsize "128.00k"
@@ -142,6 +166,7 @@ fsck -fn "$DM_DEV_DIR/$vg/$lv1"
# Convert 5-way raid1 to 2-way
lvconvert --yes -m 1 $vg/$lv1
+detect_error_leak_
lvs $vg/$lv1
dmsetup status $vg-$lv1
dmsetup table $vg-$lv1
@@ -151,6 +176,7 @@ fsck -fn "$DM_DEV_DIR/$vg/$lv1"
# Convert 2-way raid1 to mirror
lvconvert --yes --type mirror -R 32K $vg/$lv1
+detect_error_leak_
check lv_field $vg/$lv1 segtype "mirror"
check lv_field $vg/$lv1 stripes 2
check lv_field $vg/$lv1 regionsize "32.00k"