~ubuntu-branches/ubuntu/saucy/lvm2/saucy

« back to all changes in this revision

Viewing changes to test/shell/pvcreate-usage.sh

  • Committer: Package Import Robot
  • Author(s): Dmitrijs Ledkovs
  • Date: 2013-05-30 11:02:10 UTC
  • mfrom: (3.1.28 sid)
  • Revision ID: package-import@ubuntu.com-20130530110210-q8bou4f333ruwhn0
Tags: 2.02.98-1ubuntu1
* Merge from Debian unstable, remaining changes:
  - debian/patches/avoid-dev-block.patch: Prefer any other device name over
    names in /dev/block/ since lvm.conf won't handle this.
  - debian/rules:
    - copy .po file to .pot file for Rosetta (Ubuntu specific).
  - debian/{dmsetup,lvm2}-udeb.install:
    - install initramfs and udev hooks in udebs (Debian bug 504341).
  - auto-start VGs as their PVs are discovered (Ubuntu specific):
    - add debian/tree/lvm2/lib/udev/rules.d/85-lvm2.rules: use watershed plus
      the sledgehammer of vgscan/vgchange to turn on VGs as they come online.
    - debian/tree/lvm2/usr/share/initramfs-tools/scripts/hooks/lvm2:
      - add 85-lvm2.rules to the list of udev rules to copy.
      - depend on udev.
    - debian/control:
      - add versioned Depend on watershed in lvm2 for udev rules.
      - add Depends on watershed-udeb in lvm2-udeb for udev rules.
      - add versioned Depend/Breaks on udev in dmsetup for udev rules.
      - add Depend on initramfs-tools in dmsetup so system is not potentially
        rendered unbootable by out-of-order dpkg configuration.
      - In libdevmapper-event1.02.1 add Breaks: dmeventd
        (<< 2.02.95-4ubuntu1) due to debian symbol rename
    - debian/rules:
      - do not install local-top scripts since Ubuntu mounts root using udev.
      - do not install init scripts for lvm2, since udev starts LVM.
      - continue to build clvm support.
    - debian/lvm2.postinst: handle missing lvm2 init script.
    - debian/tree/dmsetup/lib/udev/rules.d/60-persistent-storage-dm.rules:
      watch dm devices for changes with inotify
  - add mountroot failure hooks to help fix bad boots (Debian bug 468115):
    - debian/tree/lvm2/usr/share/initramfs-tools/scripts/init-premount/lvm2
  - remaining changes to upstream event manager packages (Debian bug 514706):
    - debian/rules:
      - enable dmeventd during configure.
    - debian/dmeventd.{8,manpages}: install dmeventd files.
  - rename debian/clvm.defaults to debian/clvm.default so it is installed
    correctly.
  - debian/control: add dmsetup-udeb to libdevmapper1.02.1-udeb recommends.
  - debian/rules: make sure dmsetup and lvm2 initramfs-tools scripts are
    executable.  When the Ubuntu-specific ones are added with a patch,
    they may lose their executable bit.
  - Add and install clvmd resource agent
  - Add dependency on libudev-dev to libdevmapper-dev so that the .pc file
    works.
  - debian/{clvmd.ra,clvm.init}:
    - create /run/lvm if it doesn't exist.
  - debian/clvm.init:
    - exit 3 if not running on status action.
  - Call dh_installman so that our dmeventd manpage actually gets installed
  - Install the missing fsadm manpage.
  - Complete libdevmapper-dev multiarch:
    - move .so symlinks and pkgconfig files to multiarched locations.
    - mark libdevmapper-dev M-A: same

* Dropped changes, applied upstream:
  - Update Micron PCIe SSD and other device-types to latest available.
  - Cherry pick from upstream, remove unsupported udev_get_dev_path() call.
  - Move thin check to global section.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
aux prepare_devs 4
18
18
 
19
19
#COMM 'pvcreate rejects negative setphysicalvolumesize'
20
 
not pvcreate --setphysicalvolumesize -1024 $dev1
 
20
not pvcreate --setphysicalvolumesize -1024 "$dev1"
21
21
 
22
22
#COMM 'pvcreate rejects negative metadatasize'
23
 
not pvcreate --metadatasize -1024 $dev1
 
23
not pvcreate --metadatasize -1024 "$dev1"
24
24
 
25
25
# x. metadatasize 0, defaults to 255
26
26
# FIXME: unable to check default value, not in reporting cmds
27
27
# should default to 255 according to code
28
28
#   check pv_field pv_mda_size 255 
29
29
#COMM 'pvcreate accepts metadatasize 0'
30
 
pvcreate --metadatasize 0 $dev1
31
 
pvremove $dev1
 
30
pvcreate --metadatasize 0 "$dev1"
 
31
pvremove "$dev1"
32
32
 
33
33
#Verify vg_mda_size is smaller pv_mda_size
34
 
pvcreate --metadatasize 512k $dev1
35
 
pvcreate --metadatasize 96k $dev2
36
 
vgcreate $vg $dev1 $dev2
37
 
check compare_fields vgs $vg vg_mda_size pvs $dev2 pv_mda_size
38
 
vgremove -ff $vg
 
34
pvcreate --metadatasize 512k "$dev1"
 
35
pvcreate --metadatasize 96k "$dev2"
 
36
vgcreate $vg "$dev1" "$dev2"
 
37
check compare_fields vgs $vg vg_mda_size pvs "$dev2" pv_mda_size
 
38
vgremove $vg
39
39
 
40
40
# x. metadatasize too large
41
41
# For some reason we allow this, even though there's no room for data?
42
42
##COMM  'pvcreate rejects metadatasize too large' 
43
 
#not pvcreate --metadatasize 100000000000000 $dev1
 
43
#not pvcreate --metadatasize 100000000000000 "$dev1"
44
44
 
45
45
#COMM 'pvcreate rejects metadatacopies < 0'
46
 
not pvcreate --metadatacopies -1 $dev1
 
46
not pvcreate --metadatacopies -1 "$dev1"
47
47
 
48
48
#COMM 'pvcreate accepts metadatacopies = 0, 1, 2'
49
49
for j in metadatacopies pvmetadatacopies
50
50
do
51
 
pvcreate --$j 0 $dev1
52
 
pvcreate --$j 1 $dev2
53
 
pvcreate --$j 2 $dev3
54
 
check pv_field $dev1 pv_mda_count 0
55
 
check pv_field $dev2 pv_mda_count 1
56
 
check pv_field $dev3 pv_mda_count 2
57
 
pvremove $dev1 
58
 
pvremove $dev2 
59
 
pvremove $dev3
 
51
pvcreate --$j 0 "$dev1"
 
52
pvcreate --$j 1 "$dev2"
 
53
pvcreate --$j 2 "$dev3"
 
54
check pv_field "$dev1" pv_mda_count 0
 
55
check pv_field "$dev2" pv_mda_count 1
 
56
check pv_field "$dev3" pv_mda_count 2
 
57
pvremove "$dev1" "$dev2" "$dev3"
60
58
done
61
59
 
62
60
#COMM 'pvcreate rejects metadatacopies > 2'
63
 
not pvcreate --metadatacopies 3 $dev1
 
61
not pvcreate --metadatacopies 3 "$dev1"
64
62
 
65
63
#COMM 'pvcreate rejects invalid device'
66
 
not pvcreate $dev1bogus
 
64
not pvcreate "$dev1"bogus
67
65
 
68
66
#COMM 'pvcreate rejects labelsector < 0'
69
 
not pvcreate --labelsector -1 $dev1
 
67
not pvcreate --labelsector -1 "$dev1"
70
68
 
71
69
#COMM 'pvcreate rejects labelsector > 1000000000000'
72
 
not pvcreate --labelsector 1000000000000 $dev1
 
70
not pvcreate --labelsector 1000000000000 "$dev1"
73
71
 
74
72
# other possibilites based on code inspection (not sure how hard)
75
73
# x. device too small (min of 512 * 1024 KB)
82
80
# x. set size to value inconsistent with device / PE size
83
81
 
84
82
#COMM 'pvcreate basic dataalignment sanity checks'
85
 
not pvcreate --dataalignment -1 $dev1
86
 
not pvcreate -M 1 --dataalignment 1 $dev1
87
 
not pvcreate --dataalignment 1e $dev1
 
83
not pvcreate --dataalignment -1 "$dev1"
 
84
not pvcreate -M 1 --dataalignment 1 "$dev1"
 
85
not pvcreate --dataalignment 1e "$dev1"
88
86
 
89
87
#COMM 'pvcreate always rounded up to page size for start of device'
90
 
#pvcreate --metadatacopies 0 --dataalignment 1 $dev1
 
88
#pvcreate --metadatacopies 0 --dataalignment 1 "$dev1"
91
89
# amuse shell experts
92
 
#check pv_field $dev1 pe_start $(($(getconf PAGESIZE)/1024))".00k"
 
90
#check pv_field "$dev1" pe_start $(($(getconf PAGESIZE)/1024))".00k"
93
91
 
94
92
#COMM 'pvcreate sets data offset directly'
95
 
pvcreate --dataalignment 512k $dev1
96
 
check pv_field $dev1 pe_start 512.00k
 
93
pvcreate --dataalignment 512k "$dev1"
 
94
check pv_field "$dev1" pe_start "512.00k"
97
95
 
98
96
#COMM 'vgcreate/vgremove do not modify data offset of existing PV'
99
 
vgcreate $vg $dev1  --config 'devices { data_alignment = 1024 }'
100
 
check pv_field $dev1 pe_start 512.00k
 
97
vgcreate $vg "$dev1"  --config 'devices { data_alignment = 1024 }'
 
98
check pv_field "$dev1" pe_start "512.00k"
101
99
vgremove $vg --config 'devices { data_alignment = 1024 }'
102
 
check pv_field $dev1 pe_start 512.00k
 
100
check pv_field "$dev1" pe_start "512.00k"
103
101
 
104
102
#COMM 'pvcreate sets data offset next to mda area'
105
 
pvcreate --metadatasize 100k --dataalignment 100k $dev1
106
 
check pv_field $dev1 pe_start 200.00k
 
103
pvcreate --metadatasize 100k --dataalignment 100k "$dev1"
 
104
check pv_field "$dev1" pe_start "200.00k"
107
105
 
108
106
# metadata area start is aligned according to pagesize
109
 
if [ $PAGESIZE -eq 65536 ] ; then
110
 
        pv_align="192.50k"
111
 
elif [ $PAGESIZE -eq 8192 ] ; then
112
 
        pv_align="136.50k"
113
 
else
114
 
        pv_align="133.00k"
115
 
fi
116
 
 
117
 
pvcreate --metadatasize 128k --dataalignment 3.5k $dev1
118
 
check pv_field $dev1 pe_start $pv_align
119
 
 
120
 
pvcreate --metadatasize 128k --metadatacopies 2 --dataalignment 3.5k $dev1
121
 
check pv_field $dev1 pe_start $pv_align
 
107
case "$PAGESIZE" in
 
108
 65536) pv_align="192.50k" ;;
 
109
 8192)  pv_align="136.50k" ;;
 
110
 *)     pv_align="133.00k" ;;
 
111
esac
 
112
 
 
113
pvcreate --metadatasize 128k --dataalignment 3.5k "$dev1"
 
114
check pv_field "$dev1" pe_start $pv_align
 
115
 
 
116
pvcreate --metadatasize 128k --metadatacopies 2 --dataalignment 3.5k "$dev1"
 
117
check pv_field "$dev1" pe_start $pv_align
122
118
 
123
119
# data area is aligned to 1M by default,
124
120
# data area start is shifted by the specified alignment_offset
125
 
pv_align="1052160B" # 1048576 + (7*512)
126
 
pvcreate --metadatasize 128k --dataalignmentoffset 7s $dev1
127
 
check pv_field $dev1 pe_start $pv_align "--units b"
 
121
pv_align=1052160B # 1048576 + (7*512)
 
122
pvcreate --metadatasize 128k --dataalignmentoffset 7s "$dev1"
 
123
check pv_field "$dev1" pe_start $pv_align --units b
128
124
 
129
125
# 2nd metadata area is created without problems when
130
126
# data area start is shifted by the specified alignment_offset
131
 
pvcreate --metadatasize 128k --metadatacopies 2 --dataalignmentoffset 7s $dev1
132
 
check pv_field $dev1 pv_mda_count 2
 
127
pvcreate --metadatasize 128k --metadatacopies 2 --dataalignmentoffset 7s "$dev1"
 
128
check pv_field "$dev1" pv_mda_count 2
133
129
# FIXME: compare start of 2nd mda with and without --dataalignmentoffset
134
130
 
135
131
#COMM 'pv with LVM1 compatible data alignment can be convereted'
136
132
#compatible == LVM1_PE_ALIGN == 64k
137
 
pvcreate --dataalignment 256k $dev1
138
 
vgcreate -s 1m $vg $dev1
 
133
pvcreate --dataalignment 256k "$dev1"
 
134
vgcreate -s 1m $vg "$dev1"
139
135
vgconvert -M1 $vg
140
136
vgconvert -M2 $vg
141
 
check pv_field $dev1 pe_start 256.00k
 
137
check pv_field "$dev1" pe_start 256.00k
142
138
vgremove $vg
143
139
 
144
140
#COMM 'pv with LVM1 incompatible data alignment cannot be convereted'
145
 
pvcreate --dataalignment 10k $dev1
146
 
vgcreate -s 1m $vg $dev1
 
141
pvcreate --dataalignment 10k "$dev1"
 
142
vgcreate -s 1m $vg "$dev1"
147
143
not vgconvert -M1 $vg
148
144
vgremove $vg
149
145
 
150
146
#COMM 'vgcfgrestore allows pe_start=0'
151
147
#basically it produces nonsense, but it tests vgcfgrestore,
152
148
#not that final cfg is usable...
153
 
pvcreate --metadatacopies 0 $dev1
154
 
pvcreate $dev2
155
 
vgcreate $vg $dev1 $dev2
156
 
vgcfgbackup -f "$(pwd)/backup.$$" $vg
157
 
sed 's/pe_start = [0-9]*/pe_start = 0/' "$(pwd)/backup.$$" > "$(pwd)/backup.$$1"
158
 
vgcfgrestore -f "$(pwd)/backup.$$1" $vg
159
 
check pv_field $dev1 pe_start 0
160
 
check pv_field $dev2 pe_start 0
 
149
pvcreate --metadatacopies 0 "$dev1"
 
150
pvcreate "$dev2"
 
151
vgcreate $vg "$dev1" "$dev2"
 
152
vgcfgbackup -f backup.$$ $vg
 
153
sed 's/pe_start = [0-9]*/pe_start = 0/' backup.$$ > backup.$$1
 
154
vgcfgrestore -f backup.$$1 $vg
 
155
check pv_field "$dev1" pe_start "0"
 
156
check pv_field "$dev2" pe_start "0"
161
157
vgremove $vg
162
158
 
163
 
echo test pvcreate --metadataignore
 
159
echo "test pvcreate --metadataignore"
164
160
for pv_in_vg in 1 0; do
165
161
for mdacp in 1 2; do
166
162
for ignore in y n; do
167
 
        echo pvcreate --metadataignore has proper mda_count and mda_used_count
168
 
        pvcreate --metadatacopies $mdacp --metadataignore $ignore $dev1 $dev2
169
 
        check pv_field $dev1 pv_mda_count $mdacp
170
 
        check pv_field $dev2 pv_mda_count $mdacp
 
163
        echo "pvcreate --metadataignore has proper mda_count and mda_used_count"
 
164
        pvcreate --metadatacopies $mdacp --metadataignore $ignore "$dev1" "$dev2"
 
165
        check pv_field "$dev1" pv_mda_count "$mdacp"
 
166
        check pv_field "$dev2" pv_mda_count "$mdacp"
171
167
        if [ $ignore = y ]; then
172
 
                check pv_field $dev1 pv_mda_used_count 0
173
 
                check pv_field $dev2 pv_mda_used_count 0
 
168
                check pv_field "$dev1" pv_mda_used_count "0"
 
169
                check pv_field "$dev2" pv_mda_used_count "0"
174
170
        else
175
 
                check pv_field $dev1 pv_mda_used_count $mdacp
176
 
                check pv_field $dev2 pv_mda_used_count $mdacp
 
171
                check pv_field "$dev1" pv_mda_used_count "$mdacp"
 
172
                check pv_field "$dev2" pv_mda_used_count "$mdacp"
177
173
        fi
178
 
        echo vgcreate has proper vg_mda_count and vg_mda_used_count
 
174
        echo "vgcreate has proper vg_mda_count and vg_mda_used_count"
179
175
        if [ $pv_in_vg = 1 ]; then
180
 
                vgcreate -c n "$vg" $dev1 $dev2
181
 
                check vg_field $vg vg_mda_count $(($mdacp * 2))
 
176
                vgcreate -c n $vg "$dev1" "$dev2"
 
177
                check vg_field $vg vg_mda_count "$(($mdacp * 2))"
182
178
                if [ $ignore = y ]; then
183
 
                        check vg_field $vg vg_mda_used_count 1
 
179
                        check vg_field $vg vg_mda_used_count "1"
184
180
                else
185
 
                        check vg_field $vg vg_mda_used_count $(($mdacp * 2))
 
181
                        check vg_field $vg vg_mda_used_count "$(($mdacp * 2))"
186
182
                fi
187
 
                check vg_field $vg vg_mda_copies unmanaged
 
183
                check vg_field $vg vg_mda_copies "unmanaged"
188
184
                vgremove $vg
189
185
        fi
190
186
done