1#!/bin/sh 2# Copyright (C) 2007-2008 Red Hat, Inc. All rights reserved. 3# 4# This copyrighted material is made available to anyone wishing to use, 5# modify, copy, or redistribute it subject to the terms and conditions 6# of the GNU General Public License v.2. 7# 8# You should have received a copy of the GNU General Public License 9# along with this program; if not, write to the Free Software Foundation, 10# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 11 12# Test vgsplit command options for validity 13 14. ./test-utils.sh 15 16aux prepare_devs 5 17 18for mdatype in 1 2 19do 20 21pvcreate -M$mdatype $devs 22 23# ensure name order does not matter 24# NOTE: if we're using lvm1, we must use -M on vgsplit 25vgcreate -M$mdatype $vg1 $devs 26vgsplit -M$mdatype $vg1 $vg2 $dev1 27vgremove $vg1 28vgremove $vg2 29vgcreate -M$mdatype $vg2 $devs 30vgsplit -M$mdatype $vg2 $vg1 $dev1 31vgremove $vg1 32vgremove $vg2 33 34# vgsplit accepts new vg as destination of split 35# lvm1 -- bz244792 36vgcreate -M$mdatype $vg1 $devs 37vgsplit $vg1 $vg2 $dev1 1>err 38grep "New volume group \"$vg2\" successfully split from \"$vg1\"" err 39vgremove $vg1 40vgremove $vg2 41 42# vgsplit accepts existing vg as destination of split 43vgcreate -M$mdatype $vg1 $dev1 $dev2 44vgcreate -M$mdatype $vg2 $dev3 $dev4 45vgsplit $vg1 $vg2 $dev1 1>err 46grep "Existing volume group \"$vg2\" successfully split from \"$vg1\"" err 47vgremove $vg1 48vgremove $vg2 49 50# vgsplit accepts --maxphysicalvolumes 128 on new VG 51vgcreate -M$mdatype $vg1 $dev1 $dev2 52vgsplit --maxphysicalvolumes 128 $vg1 $vg2 $dev1 53check_vg_field_ $vg2 max_pv 128 54vgremove $vg1 55vgremove $vg2 56 57# vgsplit accepts --maxlogicalvolumes 128 on new VG 58vgcreate -M$mdatype $vg1 $dev1 $dev2 59vgsplit --maxlogicalvolumes 128 $vg1 $vg2 $dev1 60check_vg_field_ $vg2 max_lv 128 61vgremove $vg1 62vgremove $vg2 63 64# vgsplit rejects split because max_pv of destination would be exceeded 65vgcreate -M$mdatype --maxphysicalvolumes 2 $vg1 $dev1 $dev2 66vgcreate -M$mdatype --maxphysicalvolumes 2 $vg2 $dev3 $dev4 67not vgsplit $vg1 $vg2 $dev1 2>err; 68grep "^ Maximum number of physical volumes (2) exceeded" err 69vgremove $vg2 70vgremove $vg1 71 72# vgsplit rejects split because maxphysicalvolumes given with existing vg 73vgcreate -M$mdatype --maxphysicalvolumes 2 $vg1 $dev1 $dev2 74vgcreate -M$mdatype --maxphysicalvolumes 2 $vg2 $dev3 $dev4 75not vgsplit --maxphysicalvolumes 2 $vg1 $vg2 $dev1 2>err; 76grep "^ Volume group \"$vg2\" exists, but new VG option specified" err 77vgremove $vg2 78vgremove $vg1 79 80# vgsplit rejects split because maxlogicalvolumes given with existing vg 81vgcreate -M$mdatype --maxlogicalvolumes 2 $vg1 $dev1 $dev2 82vgcreate -M$mdatype --maxlogicalvolumes 2 $vg2 $dev3 $dev4 83not vgsplit --maxlogicalvolumes 2 $vg1 $vg2 $dev1 2>err 84grep "^ Volume group \"$vg2\" exists, but new VG option specified" err 85vgremove $vg2 86vgremove $vg1 87 88# vgsplit rejects split because alloc given with existing vg 89vgcreate -M$mdatype --alloc cling $vg1 $dev1 $dev2 90vgcreate -M$mdatype --alloc cling $vg2 $dev3 $dev4 91not vgsplit --alloc cling $vg1 $vg2 $dev1 2>err; 92grep "^ Volume group \"$vg2\" exists, but new VG option specified" err 93vgremove $vg2 94vgremove $vg1 95 96# vgsplit rejects split because clustered given with existing vg 97vgcreate -M$mdatype --clustered n $vg1 $dev1 $dev2 98vgcreate -M$mdatype --clustered n $vg2 $dev3 $dev4 99not vgsplit --clustered n $vg1 $vg2 $dev1 2>err 100grep "^ Volume group \"$vg2\" exists, but new VG option specified" err 101vgremove $vg2 102vgremove $vg1 103 104# vgsplit rejects vg with active lv 105pvcreate -M$mdatype -ff $dev3 $dev4 106vgcreate -M$mdatype $vg1 $dev1 $dev2 107vgcreate -M$mdatype $vg2 $dev3 $dev4 108lvcreate -l 4 -n $lv1 $vg1 109not vgsplit $vg1 $vg2 $dev1 2>err; 110grep "^ Logical volumes in \"$vg1\" must be inactive\$" err 111vgremove -f $vg2 112vgremove -f $vg1 113 114# vgsplit rejects split because max_lv is exceeded 115vgcreate -M$mdatype --maxlogicalvolumes 2 $vg1 $dev1 $dev2 116vgcreate -M$mdatype --maxlogicalvolumes 2 $vg2 $dev3 $dev4 117lvcreate -l 4 -n $lv1 $vg1 118lvcreate -l 4 -n $lv2 $vg1 119lvcreate -l 4 -n $lv3 $vg2 120vgchange -an $vg1 121vgchange -an $vg2 122not vgsplit $vg1 $vg2 $dev1 2>err; 123grep "^ Maximum number of logical volumes (2) exceeded" err 124vgremove -f $vg2 125vgremove -f $vg1 126 127# vgsplit verify default - max_lv attribute from new VG is same as source VG" \ 128vgcreate -M$mdatype $vg1 $dev1 $dev2 129lvcreate -l 4 -n $lv1 $vg1 130vgchange -an $vg1 131vgsplit $vg1 $vg2 $dev1 132compare_vg_field_ $vg1 $vg2 max_lv 133vgremove -f $vg2 134vgremove -f $vg1 135 136# vgsplit verify default - max_pv attribute from new VG is same as source VG" \ 137vgcreate -M$mdatype $vg1 $dev1 $dev2 138lvcreate -l 4 -n $lv1 $vg1 139vgchange -an $vg1 140vgsplit $vg1 $vg2 $dev1 141compare_vg_field_ $vg1 $vg2 max_pv 142vgremove -f $vg2 143vgremove -f $vg1 144 145# vgsplit verify default - vg_fmt attribute from new VG is same as source VG" \ 146vgcreate -M$mdatype $vg1 $dev1 $dev2 147lvcreate -l 4 -n $lv1 $vg1 148vgchange -an $vg1 149vgsplit $vg1 $vg2 $dev1 150compare_vg_field_ $vg1 $vg2 vg_fmt 151vgremove -f $vg2 152vgremove -f $vg1 153 154# vgsplit rejects split because PV not in VG 155vgcreate -M$mdatype $vg1 $dev1 $dev2 156vgcreate -M$mdatype $vg2 $dev3 $dev4 157lvcreate -l 4 -n $lv1 $vg1 158lvcreate -l 4 -n $lv2 $vg1 159vgchange -an $vg1 160not vgsplit $vg1 $vg2 $dev3 2>err; 161vgremove -f $vg2 162vgremove -f $vg1 163done 164 165# ONLY LVM2 metadata 166# setup PVs" ' 167pvcreate --metadatacopies 0 $dev5 168 169# vgsplit rejects to give away pv with the last mda copy 170vgcreate $vg1 $dev5 $dev2 171lvcreate -l 10 -n $lv1 $vg1 172lvchange -an $vg1/$lv1 173vg_validate_pvlv_counts_ $vg1 2 1 0 174not vgsplit $vg1 $vg2 $dev5; 175vg_validate_pvlv_counts_ $vg1 2 1 0 176vgremove -ff $vg1 177 178# vgsplit rejects split because metadata types differ 179pvcreate -ff -M1 $dev3 $dev4 180pvcreate -ff $dev1 $dev2 181vgcreate -M1 $vg1 $dev3 $dev4 182vgcreate $vg2 $dev1 $dev2 183not vgsplit $vg1 $vg2 $dev3 2>err; 184grep "^ Metadata types differ" err 185vgremove $vg2 186vgremove $vg1 187 188