[lvm-devel] [PATCH 1 of 12] LVM: testsuite fixes

Jonathan Brassow jbrassow at redhat.com
Thu Mar 18 20:52:56 UTC 2010


Patch name: lvm-testsuite-fixes.patch

t-lvconvert-repair-policy.sh fails and readds devices as necesary
for its tests.  When the devices are re-added to the VG, their
ordering in the allocation list changes.  So, the ordering of
mirror devices and logs for successive iterations will change.
Thus, "$dev1" will not always be the first leg of a mirror.  This
property was; however, being assumed.  Tests were failing because
they were not testing what they though they were testing.

This patch makes it so that the creation of mirrors will always
lay them down in exactly the same way.

[I still have my concerns about the way only one of the two
 available policy specifications is stated when 'repair' is
 called.  This means we really don't know what the policy is
 for the one that isn't specified.]


Index: LVM2/test/t-lvconvert-repair-policy.sh
===================================================================
--- LVM2.orig/test/t-lvconvert-repair-policy.sh
+++ LVM2/test/t-lvconvert-repair-policy.sh
@@ -13,12 +13,15 @@
 
 prepare_vg 4
 
+# Clean-up and create a 2-way mirror, where the the
+# leg devices are always on $dev[12] and the log
+# is always on $dev3.  ($dev4 behaves as a spare)
 cleanup() {
 	vgreduce --removemissing $vg
 	for d in "$@"; do enable_dev $d; done
 	for d in "$@"; do vgextend $vg $d; done
 	lvremove -ff $vg/mirror
-	lvcreate -m 1 -L 1 -n mirror $vg
+	lvcreate -m 1 -L 1 -n mirror $vg $dev1 $dev2 $dev3:0
 }
 
 repair() {
@@ -28,34 +31,42 @@ repair() {
 lvcreate -m 1 -L 1 -n mirror $vg
 lvchange -a n $vg/mirror
 
+# Fail a leg of a mirror.
+# Expected result: linear
 disable_dev $dev1
 lvchange --partial -a y $vg/mirror
 repair 'activation { mirror_image_fault_policy = "remove" }'
 lvs | grep -- -wi-a- # non-mirror
 cleanup $dev1
 
+# Fail a leg of a mirror.
+# Expected result: Mirror (leg replaced)
 disable_dev $dev1
 repair 'activation { mirror_image_fault_policy = "replace" }'
 lvs | grep -- mwi-a- # mirror
 lvs | grep mirror_mlog
 cleanup $dev1
 
+# Fail a leg of a mirror (use old name for policy specification)
+# Expected result: Mirror (leg replaced)
 disable_dev $dev1
 repair 'activation { mirror_device_fault_policy = "replace" }'
 lvs | grep -- mwi-a- # mirror
 lvs | grep mirror_mlog
 cleanup $dev1
 
+# Fail a leg of a mirror w/ no available spare
+# Expected result: linear
 disable_dev $dev2 $dev4
-# no room for repair, downconversion should happen
 repair 'activation { mirror_image_fault_policy = "replace" }'
 lvs | grep -- -wi-a-
 cleanup $dev2 $dev4
 
-disable_dev $dev2 $dev4
-# no room for new log, corelog conversion should happen
+# Fail the log device of a mirror w/ no available spare
+# Expected result: mirror w/ corelog
+disable_dev $dev3 $dev4
 repair 'activation { mirror_image_fault_policy = "replace" }'
 lvs
 lvs | grep -- mwi-a-
 lvs | not grep mirror_mlog
-cleanup $dev2 $dev4
+cleanup $dev3 $dev4




More information about the lvm-devel mailing list