1#!/bin/sh 2# Copyright (C) 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# 'Exercise some lvcreate diagnostics' 13 14. ./test-utils.sh 15 16aux prepare_pvs 4 17aux pvcreate --metadatacopies 0 $dev1 18vgcreate -cn $vg $devs 19 20# "lvcreate rejects repeated invocation (run 2 times) (bz178216)" 21lvcreate -n $lv -l 4 $vg 22not lvcreate -n $lv -l 4 $vg 23lvremove -ff $vg/$lv 24# try to remove it again - should fail (but not segfault) 25not lvremove -ff $vg/$lv 26 27# "lvcreate rejects a negative stripe_size" 28not lvcreate -L 64m -n $lv -i2 --stripesize -4 $vg 2>err; 29grep "^ Negative stripesize is invalid\$" err 30 31# 'lvcreate rejects a too-large stripesize' 32not lvcreate -L 64m -n $lv -i2 --stripesize 4294967291 $vg 2>err 33grep "^ Stripe size cannot be larger than" err 34 35# 'lvcreate w/single stripe succeeds with diagnostics to stdout' 36lvcreate -L 64m -n $lv -i1 --stripesize 4 $vg >out 2>err 37grep "^ Redundant stripes argument: default is 1\$" out 38grep "^ Ignoring stripesize argument with single stripe\$" out 39lvdisplay $vg 40lvremove -ff $vg 41 42# 'lvcreate w/default (64KB) stripe size succeeds with diagnostics to stdout' 43lvcreate -L 64m -n $lv -i2 $vg > out 44grep "^ Using default stripesize" out 45lvdisplay $vg 46check_lv_field_ $vg/$lv stripesize "64.00k" 47lvremove -ff $vg 48 49# 'lvcreate rejects an invalid number of stripes' 50not lvcreate -L 64m -n $lv -i129 $vg 2>err 51grep "^ Number of stripes (129) must be between 1 and 128\$" err 52 53# The case on lvdisplay output is to verify that the LV was not created. 54# 'lvcreate rejects an invalid stripe size' 55not lvcreate -L 64m -n $lv -i2 --stripesize 3 $vg 2>err 56grep "^ Invalid stripe size" err 57case $(lvdisplay $vg) in "") true ;; *) false ;; esac 58 59# Setting max_lv works. (bz490298) 60lvremove -ff $vg 61vgchange -l 3 $vg 62lvcreate -l1 -n $lv1 $vg 63lvcreate -l1 -s -n $lv2 $vg/$lv1 64lvcreate -l1 -n $lv3 $vg 65not lvcreate -l1 -n $lv4 $vg 66 67lvremove -ff $vg/$lv3 68lvcreate -l1 -s -n $lv3 $vg/$lv1 69not lvcreate -l1 -n $lv4 $vg 70not lvcreate -l1 -m1 -n $lv4 $vg 71 72lvremove -ff $vg/$lv3 73lvcreate -l1 -m1 -n $lv3 $vg 74lvs 75vgs -o +max_lv 76not lvcreate -l1 -n $lv4 $vg 77not lvcreate -l1 -m1 -n $lv4 $vg 78 79lvconvert -m0 $vg/$lv3 80lvconvert -m2 -i 1 $vg/$lv3 81lvconvert -m1 $vg/$lv3 82 83not vgchange -l 2 84vgchange -l 4 85vgs $vg 86 87lvremove -ff $vg 88vgchange -l 0 $vg 89 90# lvcreate rejects invalid chunksize, accepts between 4K and 512K 91# validate origin_size 92vgremove -ff $vg 93vgcreate -cn $vg $devs 94lvcreate -L 32m -n $lv1 $vg 95not lvcreate -L 8m -n $lv2 -s --chunksize 3k $vg/$lv1 96not lvcreate -L 8m -n $lv2 -s --chunksize 1024k $vg/$lv1 97lvcreate -L 8m -n $lv2 -s --chunksize 4k $vg/$lv1 98check_lv_field_ $vg/$lv2 chunk_size 4.00k 99check_lv_field_ $vg/$lv2 origin_size 32.00m 100lvcreate -L 8m -n $lv3 -s --chunksize 512k $vg/$lv1 101check_lv_field_ $vg/$lv3 chunk_size 512.00k 102check_lv_field_ $vg/$lv3 origin_size 32.00m 103lvremove -ff $vg 104vgchange -l 0 $vg 105 106# regionsize must be 107# - nonzero (bz186013) 108# - a power of 2 and a multiple of page size 109# - <= size of LV 110not lvcreate -L 32m -n $lv -R0 $vg 2>err 111grep "Non-zero region size must be supplied." err 112not lvcreate -L 32m -n $lv -R 11k $vg 113not lvcreate -L 32m -n $lv -R 1k $vg 114lvcreate -L 32m -n $lv --regionsize 128m -m 1 $vg 115check_lv_field_ $vg/$lv regionsize "32.00m" 116lvremove -ff $vg 117lvcreate -L 32m -n $lv --regionsize 4m -m 1 $vg 118check_lv_field_ $vg/$lv regionsize "4.00m" 119lvremove -ff $vg 120 121# snapshot with virtual origin works 122lvcreate -s --virtualoriginsize 64m -L 32m -n $lv1 $vg 123lvrename $vg/$lv1 $vg/$lv2 124lvcreate -s --virtualoriginsize 64m -L 32m -n $lv1 $vg 125lvchange -a n $vg/$lv1 126lvremove $vg/$lv1 127lvremove -ff $vg 128