1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-03-22 06:50:52 +03:00

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

This commit is contained in:
Petr Rockai 2009-12-17 15:38:29 +00:00
parent 3a9ab631e5
commit a47e422715
2 changed files with 31 additions and 3 deletions

View File

@ -533,6 +533,7 @@ static int _remove_mirror_images(struct logical_volume *lv,
_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 @@ static int get_mirror_fault_policy(struct cmd_context *cmd __attribute((unused))
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;

View File

@ -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