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