]> sourceware.org Git - lvm2.git/commitdiff
tests: early detect leaking error dev
authorZdenek Kabelac <zkabelac@redhat.com>
Mon, 20 Mar 2017 13:18:50 +0000 (14:18 +0100)
committerZdenek Kabelac <zkabelac@redhat.com>
Mon, 20 Mar 2017 13:18:50 +0000 (14:18 +0100)
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).

test/shell/lvconvert-raid-takeover.sh

index 0e8e880eba9f50217569d38d37d6f77851bfb1ea..e1b1d98b428b5b13efc255c73a4a711ffb1f7c38 100644 (file)
@@ -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"
This page took 0.034843 seconds and 5 git commands to generate.