Prevent simultaneous mirror up-converts (bug 582251)
PATCH 1/1 Prevent simultaneous mirror up-converts (bug 582251)
This patch fixes bug 582251 by disallowing the addition of another image to a mirror when it is already in the process of adding an image.
The fix forces a user to wait for the first conversion to complete before starting another one.
Signed-off-by Jonathan Brassow <[email protected]>
tools/lvconvert.c +10 -0
@@ -996,6 +996,16 @@ static int _lvconvert_mirrors_aux(struct }/* +* Is there already a convert in progress? We do not +* currently allow more than one. +*/ +if (find_temporary_mirror (lv) || (lv->status &CONVERTING )) { +log_error ("%s is already being converted. Unable to start another conversion." , + lv->name); +return 0 ; + } + +/* * Log addition/removal should be done before the layer * insertion to make the end result consistent with * linear-to-mirror conversion.
test/t-mirror-lvconvert.sh +6 -2
@@ -155,11 +155,15 @@ check_and_cleanup_lvs_ # add 1 mirror prepare_lvs_ lvs -a -o+devices $vg -lvcreate -l2 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0 +lvcreate -l5 -m1 -n $lv1 $vg $dev1 $dev2 $dev3:0 lvs -a -o+devices $vg check_mirror_count_ $vg/$lv1 2 check_mirror_log_ $vg/$lv1 -lvconvert -m+1 -i1 $vg/$lv1 $dev4 +lvconvert -m+1 -b $vg/$lv1 $dev4 +# FIXME: Next test is a bit time dependent +# The test /could/ succeed if the previous conversion +# happens quickly enough. +not lvconvert -m+1 -b $vg/$lv1 $dev5 lvs -a -o+devices $vg check_no_tmplvs_ $vg/$lv1 check_mirror_count_ $vg/$lv1 3