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:
parent
3a9ab631e5
commit
a47e422715
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user