]> sourceware.org Git - lvm2.git/commitdiff
When resizing LVs, always round in the safe direction, regardless of whether we
authorPetr Rockai <prokai@redhat.com>
Thu, 15 Sep 2011 18:51:11 +0000 (18:51 +0000)
committerPetr Rockai <prokai@redhat.com>
Thu, 15 Sep 2011 18:51:11 +0000 (18:51 +0000)
were called as lvresize or lvreduce.

test/t-lvresize-rounding.sh [new file with mode: 0755]
tools/lvresize.c

diff --git a/test/t-lvresize-rounding.sh b/test/t-lvresize-rounding.sh
new file mode 100755 (executable)
index 0000000..e5d6419
--- /dev/null
@@ -0,0 +1,25 @@
+# Copyright (C) 2007-2008 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
+
+. lib/test
+
+aux prepare_vg 2
+
+lvcreate -l 10 -n lv -i2 $vg
+
+lvextend -l +1 $vg/lv 2>&1 | tee log
+grep 'down to stripe' log
+lvresize -l +1 $vg/lv 2>&1 | tee log
+grep 'down to stripe' log
+
+lvreduce -f -l -1 $vg/lv 2>&1 | tee log
+grep 'up to stripe' log
+lvresize -f -l -1 $vg/lv 2>&1 | tee log
+grep 'up to stripe' log
index 4e4b1289b5aab3e09d9a16cf940d0b397b8ad50b..ccd6c6e20985d305288677b4a7d622f110b8f58f 100644 (file)
@@ -606,7 +606,8 @@ static int _lvresize(struct cmd_context *cmd, struct volume_group *vg,
                        stripesize_extents = 1;
 
                size_rest = seg_size % (lp->stripes * stripesize_extents);
-               if (size_rest && lp->resize == LV_REDUCE) {
+               /* Round toward the original size. */
+               if (size_rest && lp->extents < lv->le_count) {
                        log_print("Rounding size (%d extents) up to stripe "
                                  "boundary size for segment (%d extents)",
                                  lp->extents, lp->extents - size_rest +
This page took 0.0352 seconds and 5 git commands to generate.