]> sourceware.org Git - lvm2.git/commitdiff
Fix reversal of LV list before performing a split mirror.
authorJonathan Earl Brassow <jbrassow@redhat.com>
Tue, 13 Jul 2010 22:04:36 +0000 (22:04 +0000)
committerJonathan Earl Brassow <jbrassow@redhat.com>
Tue, 13 Jul 2010 22:04:36 +0000 (22:04 +0000)
When splitting off mirror images from a mirror, we always take
LVs from the end of a list.  For example, if the mirror sub-devices
are lv_mimage_[012], we should select lv_mimage_2 if splitting off
one image.  However, lv_mimage_0 was being selected instead.

The problem came from calling '_move_removable_mimages_to_end'
when it was unnecessary to do so.  When the user /does/ specify
specific devices to be removed, this function properly moved the
appropriate LVs to the end of the list for extraction.  However,
if the user /doesn't/ give any specific PVs, the function should
do nothing.  '_move_removable_mimages_to_end' was keying off of
whether 'removable_pvs' was NULL or not and this value was
improperly being populated with the set of all available PVs.
This was causing '_move_removable_mimages_to_end' to completely
reverse the list, which in turn caused us to extract the
hithertofore front-of-the-list LVs.

tools/lvconvert.c

index 77ddce80948ef7069d048fe59decbb1dad8d89d6..03ecb01df87391fe5d6d452f255c09eac7575fb0 100644 (file)
@@ -1002,7 +1002,7 @@ static int _lvconvert_mirrors_aux(struct cmd_context *cmd,
                                                  lv->le_count,
                                                  lp->region_size);
 
-       if (!operable_pvs)
+       if (!operable_pvs && !lp->keep_mimages)
                operable_pvs = lp->pvh;
 
        seg = first_seg(lv);
This page took 0.044334 seconds and 5 git commands to generate.