[lvm-devel] LVM2 lib/metadata/mirror.c test/t-lvconvert-re ...

mornfall at sourceware.org mornfall at sourceware.org
Thu Dec 17 15:38:31 UTC 2009


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	mornfall at sourceware.org	2009-12-17 15:38:30

Modified files:
	lib/metadata   : mirror.c 
	test           : t-lvconvert-repair.sh 

Log message:
	Fix removal of multiple devices from a mirror (+ regression test).

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/mirror.c.diff?cvsroot=lvm2&r1=1.99&r2=1.100
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/test/t-lvconvert-repair.sh.diff?cvsroot=lvm2&r1=1.2&r2=1.3

--- LVM2/lib/metadata/mirror.c	2009/12/09 19:53:39	1.99
+++ LVM2/lib/metadata/mirror.c	2009/12/17 15:38:29	1.100
@@ -533,6 +533,7 @@
 			    _is_mirror_image_removable(sub_lv, removable_pvs)) {
 				if (!shift_mirror_images(mirrored_seg, s))
 					return_0;
+				s--; /* adjust counter after shifting */
 				new_area_count--;
 			}
 		}
@@ -783,7 +784,7 @@
 					 DEFAULT_MIRROR_LOG_FAULT_POLICY);
 	else
 		policy = find_config_str(NULL, "activation/mirror_device_fault_policy",
-					 DEFAULT_MIRROR_DEV_FAULT_POLICY);
+					 DEFAULT_MIRROR_IMAGE_FAULT_POLICY);
 
 	if (!strcmp(policy, "remove"))
 		return MIRROR_REMOVE;
--- LVM2/test/t-lvconvert-repair.sh	2009/06/04 12:01:16	1.2
+++ LVM2/test/t-lvconvert-repair.sh	2009/12/17 15:38:29	1.3
@@ -11,9 +11,36 @@
 
 . ./test-utils.sh
 
-prepare_vg 4
+prepare_vg 5
+
+# fail multiple devices
+
+lvcreate -m 3 -L 1 -n 3way $vg
+disable_dev $dev2 $dev4
+echo n | lvconvert -i 1 --repair $vg/3way
+lvs -a -o +devices > lvlist
+not grep unknown lvlist
+vgreduce --removemissing $vg
+enable_dev $dev2 $dev4
+lvchange -a n $vg/3way
+
+vgremove -ff $vg
+vgcreate $vg $dev1 $dev2 $dev3 $dev4
+
+lvcreate -m 2 -L 1 -n 4way $vg
+disable_dev $dev1 $dev2
+echo n | lvconvert -i 1 --repair $vg/4way
+lvs -a -o +devices > lvlist
+not grep unknown lvlist
+vgreduce --removemissing $vg
+enable_dev $dev1 $dev2
+lvchange -a n $vg/4way
+
+# fail single devices
+
+vgremove -ff $vg
+vgcreate $vg $dev1 $dev2 $dev3
 
-vgreduce $vg $dev4
 lvcreate -m 1 -L 1 -n mirror $vg
 
 lvchange -a n $vg/mirror




More information about the lvm-devel mailing list