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