From 204550a2ee6465ce5f9d4bd2a37c67acda341f98 Mon Sep 17 00:00:00 2001 From: David Teigland Date: Thu, 2 Jul 2015 11:40:28 -0500 Subject: Split part of process-each-pv into process-each-vgreduce check_lvmlockd_sanlock works with process-each-pv without the vgreduce parts. --- test/shell/process-each-pv.sh | 242 +------------------------- test/shell/process-each-vgreduce.sh | 327 ++++++++++++++++++++++++++++++++++++ 2 files changed, 336 insertions(+), 233 deletions(-) create mode 100644 test/shell/process-each-vgreduce.sh diff --git a/test/shell/process-each-pv.sh b/test/shell/process-each-pv.sh index f4b8fd1e0..426c3f1e9 100644 --- a/test/shell/process-each-pv.sh +++ b/test/shell/process-each-pv.sh @@ -13,8 +13,6 @@ test_description='Exercise toollib process_each_pv' . lib/inittest -test -e LOCAL_LVMPOLLD && skip - aux prepare_devs 14 # @@ -22,10 +20,9 @@ aux prepare_devs 14 # pvdisplay # pvresize # pvs -# vgreduce # -# process-each-pvresize.sh covers pvresize, -# the others are covered here. +# process-each-pvresize.sh covers pvresize. +# process-each-vgreduce.sh covers vgreduce. # @@ -36,9 +33,9 @@ aux prepare_devs 14 # dev1 matchines dev10,dev11,etc # -vgcreate $vg1 "$dev10" -vgcreate $vg2 "$dev2" "$dev3" "$dev4" "$dev5" -vgcreate $vg3 "$dev6" "$dev7" "$dev8" "$dev9" +vgcreate $SHARED $vg1 "$dev10" +vgcreate $SHARED $vg2 "$dev2" "$dev3" "$dev4" "$dev5" +vgcreate $SHARED $vg3 "$dev6" "$dev7" "$dev8" "$dev9" pvchange --addtag V2D3 "$dev3" pvchange --addtag V2D4 "$dev4" @@ -713,173 +710,6 @@ not grep "$dev13" err not grep "$dev14" err -# -# test vgreduce -# - -# fail without dev -not vgreduce $vg2 - - -# fail with dev and -a -not vgreduce $vg2 "$dev2" -a -check pv_field "$dev2" vg_name $vg2 -check pv_field "$dev3" vg_name $vg2 -check pv_field "$dev4" vg_name $vg2 -check pv_field "$dev5" vg_name $vg2 -check pv_field "$dev6" vg_name $vg3 -check pv_field "$dev7" vg_name $vg3 -check pv_field "$dev8" vg_name $vg3 -check pv_field "$dev9" vg_name $vg3 - - -# remove one pv -vgreduce $vg2 "$dev2" -not check pv_field "$dev2" vg_name $vg2 -check pv_field "$dev3" vg_name $vg2 -check pv_field "$dev4" vg_name $vg2 -check pv_field "$dev5" vg_name $vg2 -check pv_field "$dev6" vg_name $vg3 -check pv_field "$dev7" vg_name $vg3 -check pv_field "$dev8" vg_name $vg3 -check pv_field "$dev9" vg_name $vg3 -# reset -vgextend $vg2 "$dev2" - - -# remove two pvs -vgreduce $vg2 "$dev2" "$dev3" -not check pv_field "$dev2" vg_name $vg2 -not check pv_field "$dev3" vg_name $vg2 -check pv_field "$dev4" vg_name $vg2 -check pv_field "$dev5" vg_name $vg2 -check pv_field "$dev6" vg_name $vg3 -check pv_field "$dev7" vg_name $vg3 -check pv_field "$dev8" vg_name $vg3 -check pv_field "$dev9" vg_name $vg3 -# reset -vgextend $vg2 "$dev2" "$dev3" -pvchange --addtag V2D3 "$dev3" - - -# remove one pv with tag -vgreduce $vg2 @V2D3 -check pv_field "$dev2" vg_name $vg2 -not check pv_field "$dev3" vg_name $vg2 -check pv_field "$dev4" vg_name $vg2 -check pv_field "$dev5" vg_name $vg2 -check pv_field "$dev6" vg_name $vg3 -check pv_field "$dev7" vg_name $vg3 -check pv_field "$dev8" vg_name $vg3 -check pv_field "$dev9" vg_name $vg3 -# reset -vgextend $vg2 "$dev3" -pvchange --addtag V2D3 "$dev3" - - -# remove two pvs, each with different tag -vgreduce $vg2 @V2D3 @V2D4 -check pv_field "$dev2" vg_name $vg2 -not check pv_field "$dev3" vg_name $vg2 -not check pv_field "$dev4" vg_name $vg2 -check pv_field "$dev5" vg_name $vg2 -check pv_field "$dev6" vg_name $vg3 -check pv_field "$dev7" vg_name $vg3 -check pv_field "$dev8" vg_name $vg3 -check pv_field "$dev9" vg_name $vg3 -# reset -vgextend $vg2 "$dev3" "$dev4" -pvchange --addtag V2D3 "$dev3" -pvchange --addtag V2D4 "$dev4" -pvchange --addtag V2D45 "$dev4" - - -# remove two pvs, both with same tag -vgreduce $vg2 @V2D45 -check pv_field "$dev2" vg_name $vg2 -check pv_field "$dev3" vg_name $vg2 -not check pv_field "$dev4" vg_name $vg2 -not check pv_field "$dev5" vg_name $vg2 -check pv_field "$dev6" vg_name $vg3 -check pv_field "$dev7" vg_name $vg3 -check pv_field "$dev8" vg_name $vg3 -check pv_field "$dev9" vg_name $vg3 -# reset -vgextend $vg2 "$dev4" "$dev5" -pvchange --addtag V2D4 "$dev4" -pvchange --addtag V2D45 "$dev4" -pvchange --addtag V2D5 "$dev5" -pvchange --addtag V2D45 "$dev5" - - -# remove two pvs, one by name, one by tag -vgreduce $vg2 "$dev2" @V2D3 -not check pv_field "$dev2" vg_name $vg2 -not check pv_field "$dev3" vg_name $vg2 -check pv_field "$dev4" vg_name $vg2 -check pv_field "$dev5" vg_name $vg2 -check pv_field "$dev6" vg_name $vg3 -check pv_field "$dev7" vg_name $vg3 -check pv_field "$dev8" vg_name $vg3 -check pv_field "$dev9" vg_name $vg3 -# reset -vgextend $vg2 "$dev2" "$dev3" -pvchange --addtag V2D3 "$dev3" - - -# remove one pv by tag, where another vg has a pv with same tag -pvchange --addtag V2D5V3D9 "$dev5" -pvchange --addtag V2D5V3D9 "$dev9" -vgreduce $vg2 @V2D5V3D9 -check pv_field "$dev2" vg_name $vg2 -check pv_field "$dev3" vg_name $vg2 -check pv_field "$dev4" vg_name $vg2 -not check pv_field "$dev5" vg_name $vg2 -check pv_field "$dev6" vg_name $vg3 -check pv_field "$dev7" vg_name $vg3 -check pv_field "$dev8" vg_name $vg3 -check pv_field "$dev9" vg_name $vg3 -# reset -vgextend $vg2 "$dev5" -pvchange --addtag V2D5 "$dev5" -pvchange --addtag V2D45 "$dev5" - - -# fail to remove last pv (don't know which will be last) -not vgreduce -a $vg2 -# reset -vgremove $vg2 -vgcreate $vg2 "$dev2" "$dev3" "$dev4" "$dev5" -pvchange --addtag V2D3 "$dev3" -pvchange --addtag V2D4 "$dev4" -pvchange --addtag V2D45 "$dev4" -pvchange --addtag V2D5 "$dev5" -pvchange --addtag V2D45 "$dev5" - - -# lvcreate on one pv to make it used -# remove all unused pvs -lvcreate -n $lv1 -l 2 $vg2 "$dev2" -not vgreduce -a $vg2 -check pv_field "$dev2" vg_name $vg2 -not check pv_field "$dev3" vg_name $vg2 -not check pv_field "$dev4" vg_name $vg2 -not check pv_field "$dev5" vg_name $vg2 -check pv_field "$dev6" vg_name $vg3 -check pv_field "$dev7" vg_name $vg3 -check pv_field "$dev8" vg_name $vg3 -check pv_field "$dev9" vg_name $vg3 -# reset -vgextend $vg2 "$dev3" "$dev4" "$dev5" -pvchange --addtag V2D3 "$dev3" -pvchange --addtag V2D4 "$dev4" -pvchange --addtag V2D45 "$dev4" -pvchange --addtag V2D5 "$dev5" -pvchange --addtag V2D45 "$dev5" -lvchange -an $vg2/$lv1 -lvremove $vg2/$lv1 - - # # tests including pvs without mdas # @@ -917,9 +747,9 @@ pvcreate "$dev14" --metadatacopies 0 # dev12 # dev13 -vgcreate $vg1 "$dev10" -vgcreate $vg2 "$dev2" "$dev3" "$dev4" "$dev5" -vgcreate $vg3 "$dev6" "$dev7" "$dev8" "$dev9" +vgcreate $SHARED $vg1 "$dev10" +vgcreate $SHARED $vg2 "$dev2" "$dev3" "$dev4" "$dev5" +vgcreate $SHARED $vg3 "$dev6" "$dev7" "$dev8" "$dev9" pvchange --addtag V2D3 "$dev3" pvchange --addtag V2D4 "$dev4" @@ -1228,58 +1058,4 @@ grep "$dev12" err grep "$dev13" err grep "$dev14" err - -# -# vgreduce including pvs without mdas -# - -# remove pv without mda -vgreduce $vg2 "$dev2" -not check pv_field "$dev2" vg_name $vg2 -check pv_field "$dev3" vg_name $vg2 -check pv_field "$dev4" vg_name $vg2 -check pv_field "$dev5" vg_name $vg2 -check pv_field "$dev6" vg_name $vg3 -check pv_field "$dev7" vg_name $vg3 -check pv_field "$dev8" vg_name $vg3 -check pv_field "$dev9" vg_name $vg3 -# reset -vgextend $vg2 "$dev2" - -# remove pv with mda and pv without mda -vgreduce $vg2 "$dev2" "$dev3" -not check pv_field "$dev2" vg_name $vg2 -not check pv_field "$dev3" vg_name $vg2 -check pv_field "$dev4" vg_name $vg2 -check pv_field "$dev5" vg_name $vg2 -check pv_field "$dev6" vg_name $vg3 -check pv_field "$dev7" vg_name $vg3 -check pv_field "$dev8" vg_name $vg3 -check pv_field "$dev9" vg_name $vg3 -# reset -vgextend $vg2 "$dev2" -vgextend $vg2 "$dev3" - -# fail to remove only pv with mda -not vgreduce $vg3 "$dev9" -check pv_field "$dev6" vg_name $vg3 -check pv_field "$dev7" vg_name $vg3 -check pv_field "$dev8" vg_name $vg3 -check pv_field "$dev9" vg_name $vg3 -check pv_field "$dev2" vg_name $vg2 -check pv_field "$dev3" vg_name $vg2 -check pv_field "$dev4" vg_name $vg2 -check pv_field "$dev5" vg_name $vg2 - -# remove by tag a pv without mda -vgreduce $vg3 @V3D8 -check pv_field "$dev6" vg_name $vg3 -check pv_field "$dev7" vg_name $vg3 -not check pv_field "$dev8" vg_name $vg3 -check pv_field "$dev9" vg_name $vg3 -check pv_field "$dev2" vg_name $vg2 -check pv_field "$dev3" vg_name $vg2 -check pv_field "$dev4" vg_name $vg2 -check pv_field "$dev5" vg_name $vg2 -# reset -vgextend $vg3 "$dev8" +vgremove $vg1 $vg2 $vg3 diff --git a/test/shell/process-each-vgreduce.sh b/test/shell/process-each-vgreduce.sh new file mode 100644 index 000000000..9c8c6370a --- /dev/null +++ b/test/shell/process-each-vgreduce.sh @@ -0,0 +1,327 @@ +#!/bin/sh +# Copyright (C) 2014 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_description='Exercise toollib process_each_pv with vgreduce' + +. lib/inittest + +aux prepare_devs 14 + +# +# set up +# +# FIXME: some of the setup may not be used by the tests +# since this was split out from process-each-pv, where +# some of the setup was used by other tests that only +# remain in process-each-pv. +# +# use use dev10 instead of dev1 because simple grep for +# dev1 matchines dev10,dev11,etc +# + +vgcreate $vg1 "$dev10" +vgcreate $vg2 "$dev2" "$dev3" "$dev4" "$dev5" +vgcreate $vg3 "$dev6" "$dev7" "$dev8" "$dev9" + +pvchange --addtag V2D3 "$dev3" +pvchange --addtag V2D4 "$dev4" +pvchange --addtag V2D45 "$dev4" +pvchange --addtag V2D5 "$dev5" +pvchange --addtag V2D45 "$dev5" + +pvchange --addtag V3 "$dev6" "$dev7" "$dev8" "$dev9" +pvchange --addtag V3D9 "$dev9" + +# orphan +pvcreate "$dev11" + +# dev (a non-pv device) +pvcreate "$dev12" +pvremove "$dev12" + +# dev13 is intentionally untouched so we can +# test that it is handled appropriately as a non-pv + +# orphan +pvcreate "$dev14" + + +# fail without dev +not vgreduce $vg2 + + +# fail with dev and -a +not vgreduce $vg2 "$dev2" -a +check pv_field "$dev2" vg_name $vg2 +check pv_field "$dev3" vg_name $vg2 +check pv_field "$dev4" vg_name $vg2 +check pv_field "$dev5" vg_name $vg2 +check pv_field "$dev6" vg_name $vg3 +check pv_field "$dev7" vg_name $vg3 +check pv_field "$dev8" vg_name $vg3 +check pv_field "$dev9" vg_name $vg3 + + +# remove one pv +vgreduce $vg2 "$dev2" +not check pv_field "$dev2" vg_name $vg2 +check pv_field "$dev3" vg_name $vg2 +check pv_field "$dev4" vg_name $vg2 +check pv_field "$dev5" vg_name $vg2 +check pv_field "$dev6" vg_name $vg3 +check pv_field "$dev7" vg_name $vg3 +check pv_field "$dev8" vg_name $vg3 +check pv_field "$dev9" vg_name $vg3 +# reset +vgextend $vg2 "$dev2" + + +# remove two pvs +vgreduce $vg2 "$dev2" "$dev3" +not check pv_field "$dev2" vg_name $vg2 +not check pv_field "$dev3" vg_name $vg2 +check pv_field "$dev4" vg_name $vg2 +check pv_field "$dev5" vg_name $vg2 +check pv_field "$dev6" vg_name $vg3 +check pv_field "$dev7" vg_name $vg3 +check pv_field "$dev8" vg_name $vg3 +check pv_field "$dev9" vg_name $vg3 +# reset +vgextend $vg2 "$dev2" "$dev3" +pvchange --addtag V2D3 "$dev3" + + +# remove one pv with tag +vgreduce $vg2 @V2D3 +check pv_field "$dev2" vg_name $vg2 +not check pv_field "$dev3" vg_name $vg2 +check pv_field "$dev4" vg_name $vg2 +check pv_field "$dev5" vg_name $vg2 +check pv_field "$dev6" vg_name $vg3 +check pv_field "$dev7" vg_name $vg3 +check pv_field "$dev8" vg_name $vg3 +check pv_field "$dev9" vg_name $vg3 +# reset +vgextend $vg2 "$dev3" +pvchange --addtag V2D3 "$dev3" + + +# remove two pvs, each with different tag +vgreduce $vg2 @V2D3 @V2D4 +check pv_field "$dev2" vg_name $vg2 +not check pv_field "$dev3" vg_name $vg2 +not check pv_field "$dev4" vg_name $vg2 +check pv_field "$dev5" vg_name $vg2 +check pv_field "$dev6" vg_name $vg3 +check pv_field "$dev7" vg_name $vg3 +check pv_field "$dev8" vg_name $vg3 +check pv_field "$dev9" vg_name $vg3 +# reset +vgextend $vg2 "$dev3" "$dev4" +pvchange --addtag V2D3 "$dev3" +pvchange --addtag V2D4 "$dev4" +pvchange --addtag V2D45 "$dev4" + + +# remove two pvs, both with same tag +vgreduce $vg2 @V2D45 +check pv_field "$dev2" vg_name $vg2 +check pv_field "$dev3" vg_name $vg2 +not check pv_field "$dev4" vg_name $vg2 +not check pv_field "$dev5" vg_name $vg2 +check pv_field "$dev6" vg_name $vg3 +check pv_field "$dev7" vg_name $vg3 +check pv_field "$dev8" vg_name $vg3 +check pv_field "$dev9" vg_name $vg3 +# reset +vgextend $vg2 "$dev4" "$dev5" +pvchange --addtag V2D4 "$dev4" +pvchange --addtag V2D45 "$dev4" +pvchange --addtag V2D5 "$dev5" +pvchange --addtag V2D45 "$dev5" + + +# remove two pvs, one by name, one by tag +vgreduce $vg2 "$dev2" @V2D3 +not check pv_field "$dev2" vg_name $vg2 +not check pv_field "$dev3" vg_name $vg2 +check pv_field "$dev4" vg_name $vg2 +check pv_field "$dev5" vg_name $vg2 +check pv_field "$dev6" vg_name $vg3 +check pv_field "$dev7" vg_name $vg3 +check pv_field "$dev8" vg_name $vg3 +check pv_field "$dev9" vg_name $vg3 +# reset +vgextend $vg2 "$dev2" "$dev3" +pvchange --addtag V2D3 "$dev3" + + +# remove one pv by tag, where another vg has a pv with same tag +pvchange --addtag V2D5V3D9 "$dev5" +pvchange --addtag V2D5V3D9 "$dev9" +vgreduce $vg2 @V2D5V3D9 +check pv_field "$dev2" vg_name $vg2 +check pv_field "$dev3" vg_name $vg2 +check pv_field "$dev4" vg_name $vg2 +not check pv_field "$dev5" vg_name $vg2 +check pv_field "$dev6" vg_name $vg3 +check pv_field "$dev7" vg_name $vg3 +check pv_field "$dev8" vg_name $vg3 +check pv_field "$dev9" vg_name $vg3 +# reset +vgextend $vg2 "$dev5" +pvchange --addtag V2D5 "$dev5" +pvchange --addtag V2D45 "$dev5" + + +# fail to remove last pv (don't know which will be last) +not vgreduce -a $vg2 +# reset +vgremove $vg2 +vgcreate $vg2 "$dev2" "$dev3" "$dev4" "$dev5" +pvchange --addtag V2D3 "$dev3" +pvchange --addtag V2D4 "$dev4" +pvchange --addtag V2D45 "$dev4" +pvchange --addtag V2D5 "$dev5" +pvchange --addtag V2D45 "$dev5" + + +# lvcreate on one pv to make it used +# remove all unused pvs +lvcreate -n $lv1 -l 2 $vg2 "$dev2" +not vgreduce -a $vg2 +check pv_field "$dev2" vg_name $vg2 +not check pv_field "$dev3" vg_name $vg2 +not check pv_field "$dev4" vg_name $vg2 +not check pv_field "$dev5" vg_name $vg2 +check pv_field "$dev6" vg_name $vg3 +check pv_field "$dev7" vg_name $vg3 +check pv_field "$dev8" vg_name $vg3 +check pv_field "$dev9" vg_name $vg3 +# reset +vgextend $vg2 "$dev3" "$dev4" "$dev5" +pvchange --addtag V2D3 "$dev3" +pvchange --addtag V2D4 "$dev4" +pvchange --addtag V2D45 "$dev4" +pvchange --addtag V2D5 "$dev5" +pvchange --addtag V2D45 "$dev5" +lvchange -an $vg2/$lv1 +lvremove $vg2/$lv1 + + +# +# tests including pvs without mdas +# + +# remove old config +vgremove $vg1 +vgremove $vg2 +vgremove $vg3 +pvremove "$dev11" +pvremove "$dev14" + +# new config with some pvs that have zero mdas + +# for vg1 +pvcreate "$dev10" + +# for vg2 +pvcreate "$dev2" --metadatacopies 0 +pvcreate "$dev3" +pvcreate "$dev4" +pvcreate "$dev5" + +# for vg3 +pvcreate "$dev6" --metadatacopies 0 +pvcreate "$dev7" --metadatacopies 0 +pvcreate "$dev8" --metadatacopies 0 +pvcreate "$dev9" + +# orphan with mda +pvcreate "$dev11" +# orphan without mda +pvcreate "$dev14" --metadatacopies 0 + +# non-pv devs +# dev12 +# dev13 + +vgcreate $vg1 "$dev10" +vgcreate $vg2 "$dev2" "$dev3" "$dev4" "$dev5" +vgcreate $vg3 "$dev6" "$dev7" "$dev8" "$dev9" + +pvchange --addtag V2D3 "$dev3" +pvchange --addtag V2D4 "$dev4" +pvchange --addtag V2D45 "$dev4" +pvchange --addtag V2D5 "$dev5" +pvchange --addtag V2D45 "$dev5" + +pvchange --addtag V3 "$dev6" "$dev7" "$dev8" "$dev9" +pvchange --addtag V3D8 "$dev8" +pvchange --addtag V3D9 "$dev9" + + +# +# vgreduce including pvs without mdas +# + +# remove pv without mda +vgreduce $vg2 "$dev2" +not check pv_field "$dev2" vg_name $vg2 +check pv_field "$dev3" vg_name $vg2 +check pv_field "$dev4" vg_name $vg2 +check pv_field "$dev5" vg_name $vg2 +check pv_field "$dev6" vg_name $vg3 +check pv_field "$dev7" vg_name $vg3 +check pv_field "$dev8" vg_name $vg3 +check pv_field "$dev9" vg_name $vg3 +# reset +vgextend $vg2 "$dev2" + +# remove pv with mda and pv without mda +vgreduce $vg2 "$dev2" "$dev3" +not check pv_field "$dev2" vg_name $vg2 +not check pv_field "$dev3" vg_name $vg2 +check pv_field "$dev4" vg_name $vg2 +check pv_field "$dev5" vg_name $vg2 +check pv_field "$dev6" vg_name $vg3 +check pv_field "$dev7" vg_name $vg3 +check pv_field "$dev8" vg_name $vg3 +check pv_field "$dev9" vg_name $vg3 +# reset +vgextend $vg2 "$dev2" +vgextend $vg2 "$dev3" + +# fail to remove only pv with mda +not vgreduce $vg3 "$dev9" +check pv_field "$dev6" vg_name $vg3 +check pv_field "$dev7" vg_name $vg3 +check pv_field "$dev8" vg_name $vg3 +check pv_field "$dev9" vg_name $vg3 +check pv_field "$dev2" vg_name $vg2 +check pv_field "$dev3" vg_name $vg2 +check pv_field "$dev4" vg_name $vg2 +check pv_field "$dev5" vg_name $vg2 + +# remove by tag a pv without mda +vgreduce $vg3 @V3D8 +check pv_field "$dev6" vg_name $vg3 +check pv_field "$dev7" vg_name $vg3 +not check pv_field "$dev8" vg_name $vg3 +check pv_field "$dev9" vg_name $vg3 +check pv_field "$dev2" vg_name $vg2 +check pv_field "$dev3" vg_name $vg2 +check pv_field "$dev4" vg_name $vg2 +check pv_field "$dev5" vg_name $vg2 +# reset +vgextend $vg3 "$dev8" + +vgremove $vg1 $vg2 $vg3 -- cgit v1.2.1