mirror of
git://sourceware.org/git/lvm2.git
synced 2025-03-11 20:58:50 +03:00
Disallow certain lvconvert operations that need to both allocate and free
extents, while physical volumes are specified. Fixes BZ 640051.
This commit is contained in:
parent
0bc382eae4
commit
a680e90fb0
21
test/t-lvconvert-twostep.sh
Normal file
21
test/t-lvconvert-twostep.sh
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Copyright (C) 2010 Red Hat, Inc. All rights reserved.
|
||||||
|
#
|
||||||
|
# This copyrighted material is made available to anyone wishing to use,
|
||||||
|
# modify, copy, or redistribute it subject to the terms and conditions
|
||||||
|
# of the GNU General Public License v.2.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
. ./test-utils.sh
|
||||||
|
|
||||||
|
aux prepare_vg 4
|
||||||
|
lvcreate -m 1 --mirrorlog disk --ig -L 1 -n mirror $vg
|
||||||
|
not lvconvert -m 2 --mirrorlog core $vg/mirror $dev3 2>&1 | tee errs
|
||||||
|
grep "two steps" errs
|
||||||
|
lvconvert -m 2 $vg/mirror $dev3
|
||||||
|
lvconvert --mirrorlog core $vg/mirror
|
||||||
|
not lvconvert -m 1 --mirrorlog disk $vg/mirror $dev3 2>&1 | tee errs
|
||||||
|
grep "two steps" errs
|
@ -1345,6 +1345,15 @@ static int _lvconvert_mirrors(struct cmd_context *cmd,
|
|||||||
&new_mimage_count, &new_log_count))
|
&new_mimage_count, &new_log_count))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (((old_mimage_count < new_mimage_count && old_log_count > new_log_count) ||
|
||||||
|
(old_mimage_count > new_mimage_count && old_log_count < new_log_count)) &&
|
||||||
|
lp->pv_count) {
|
||||||
|
log_error("Cannot both allocate and free extents when specifying physical"
|
||||||
|
" volumes to use.");
|
||||||
|
log_error("Please specify the operation in two steps.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Nothing to do? (Probably finishing collapse.) */
|
/* Nothing to do? (Probably finishing collapse.) */
|
||||||
if ((old_mimage_count == new_mimage_count) &&
|
if ((old_mimage_count == new_mimage_count) &&
|
||||||
(old_log_count == new_log_count) && !repair)
|
(old_log_count == new_log_count) && !repair)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user