]>
Commit | Line | Data |
---|---|---|
1 | From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | |
2 | From: Paul Zuchowski <31706010+PaulZ-98@users.noreply.github.com> | |
3 | Date: Wed, 7 Mar 2018 20:03:33 -0500 | |
4 | Subject: [PATCH] zdb and inuse tests don't pass with real disks | |
5 | MIME-Version: 1.0 | |
6 | Content-Type: text/plain; charset=UTF-8 | |
7 | Content-Transfer-Encoding: 8bit | |
8 | ||
9 | Due to zpool create auto-partioning in Linux (i.e. sdb1), | |
10 | certain utilities need to use the parition (sdb1) while | |
11 | others use the whole disk name (sdb). | |
12 | ||
13 | Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> | |
14 | Signed-off-by: Paul Zuchowski <pzuchowski@datto.com> | |
15 | Closes #6939 | |
16 | Closes #7261 | |
17 | (cherry picked from commit 0a0af41bd926ca20a26d7476d792ce82bca9c077) | |
18 | Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com> | |
19 | --- | |
20 | tests/zfs-tests/include/libtest.shlib | 31 +++++++++++++++++++--- | |
21 | .../tests/functional/cli_root/zdb/zdb_003_pos.ksh | 5 ++++ | |
22 | .../tests/functional/cli_root/zdb/zdb_004_pos.ksh | 11 +++++--- | |
23 | .../tests/functional/cli_root/zdb/zdb_005_pos.ksh | 4 +++ | |
24 | .../tests/functional/inuse/inuse_005_pos.ksh | 8 +++--- | |
25 | .../tests/functional/inuse/inuse_008_pos.ksh | 5 ++-- | |
26 | .../tests/functional/inuse/inuse_009_pos.ksh | 10 +++++-- | |
27 | 7 files changed, 59 insertions(+), 15 deletions(-) | |
28 | ||
29 | diff --git a/tests/zfs-tests/include/libtest.shlib b/tests/zfs-tests/include/libtest.shlib | |
30 | index 48fb5e7c5..d51d73e61 100644 | |
31 | --- a/tests/zfs-tests/include/libtest.shlib | |
32 | +++ b/tests/zfs-tests/include/libtest.shlib | |
33 | @@ -767,7 +767,11 @@ function zero_partitions #<whole_disk_name> | |
34 | typeset i | |
35 | ||
36 | if is_linux; then | |
37 | - log_must parted $DEV_DSKDIR/$diskname -s -- mklabel gpt | |
38 | + DSK=$DEV_DSKDIR/$diskname | |
39 | + DSK=$(echo $DSK | sed -e "s|//|/|g") | |
40 | + log_must parted $DSK -s -- mklabel gpt | |
41 | + blockdev --rereadpt $DSK 2>/dev/null | |
42 | + block_device_wait | |
43 | else | |
44 | for i in 0 1 3 4 5 6 7 | |
45 | do | |
46 | @@ -795,10 +799,11 @@ function set_partition #<slice_num> <slice_start> <size_plus_units> <whole_disk | |
47 | typeset start=$2 | |
48 | typeset size=$3 | |
49 | typeset disk=$4 | |
50 | - [[ -z $slicenum || -z $size || -z $disk ]] && \ | |
51 | - log_fail "The slice, size or disk name is unspecified." | |
52 | ||
53 | if is_linux; then | |
54 | + if [[ -z $size || -z $disk ]]; then | |
55 | + log_fail "The size or disk name is unspecified." | |
56 | + fi | |
57 | typeset size_mb=${size%%[mMgG]} | |
58 | ||
59 | size_mb=${size_mb%%[mMgG][bB]} | |
60 | @@ -841,6 +846,10 @@ function set_partition #<slice_num> <slice_start> <size_plus_units> <whole_disk | |
61 | blockdev --rereadpt $DEV_DSKDIR/$disk 2>/dev/null | |
62 | block_device_wait | |
63 | else | |
64 | + if [[ -z $slicenum || -z $size || -z $disk ]]; then | |
65 | + log_fail "The slice, size or disk name is unspecified." | |
66 | + fi | |
67 | + | |
68 | typeset format_file=/var/tmp/format_in.$$ | |
69 | ||
70 | echo "partition" >$format_file | |
71 | @@ -3634,3 +3643,19 @@ function get_tunable_impl | |
72 | ||
73 | return 1 | |
74 | } | |
75 | + | |
76 | +# | |
77 | +# Get actual devices used by the pool (i.e. linux sdb1 not sdb). | |
78 | +# | |
79 | +function get_pool_devices #testpool #devdir | |
80 | +{ | |
81 | + typeset testpool=$1 | |
82 | + typeset devdir=$2 | |
83 | + typeset out="" | |
84 | + | |
85 | + if is_linux; then | |
86 | + out=$(zpool status -P $testpool |grep ${devdir} | awk '{print $1}') | |
87 | + out=$(echo $out | sed -e "s|${devdir}/||g" | tr '\n' ' ') | |
88 | + fi | |
89 | + echo $out | |
90 | +} | |
91 | diff --git a/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_003_pos.ksh b/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_003_pos.ksh | |
92 | index 4c57cb587..3c444ae98 100755 | |
93 | --- a/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_003_pos.ksh | |
94 | +++ b/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_003_pos.ksh | |
95 | @@ -43,6 +43,11 @@ config_count=(1 2) | |
96 | set -A DISK $DISKS | |
97 | ||
98 | default_mirror_setup_noexit $DISKS | |
99 | + | |
100 | +DEVS=$(get_pool_devices ${TESTPOOL} ${DEV_RDSKDIR}) | |
101 | +log_note "$DEVS" | |
102 | +[[ -n $DEVS ]] && set -A DISK $DEVS | |
103 | + | |
104 | log_must dd if=/dev/${DISK[0]} of=/dev/${DISK[1]} bs=1K count=256 conv=notrunc | |
105 | ||
106 | for x in 0 1 ; do | |
107 | diff --git a/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_004_pos.ksh b/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_004_pos.ksh | |
108 | index 2b4057aa7..91a5c9799 100755 | |
109 | --- a/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_004_pos.ksh | |
110 | +++ b/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_004_pos.ksh | |
111 | @@ -45,17 +45,22 @@ function cleanup | |
112 | verify_runnable "global" | |
113 | verify_disk_count "$DISKS" 2 | |
114 | set -A DISK $DISKS | |
115 | +WHOLE_DISK=${DISK[0]} | |
116 | ||
117 | default_mirror_setup_noexit $DISKS | |
118 | -log_must zpool offline $TESTPOOL ${DISK[0]} | |
119 | +DEVS=$(get_pool_devices ${TESTPOOL} ${DEV_RDSKDIR}) | |
120 | +[[ -n $DEVS ]] && set -A DISK $DEVS | |
121 | + | |
122 | +log_must zpool offline $TESTPOOL ${WHOLE_DISK} | |
123 | log_must dd if=/dev/urandom of=$TESTDIR/testfile bs=1K count=2 | |
124 | log_must zpool export $TESTPOOL | |
125 | + | |
126 | log_must dd if=$DEV_RDSKDIR/${DISK[0]} of=$DEV_RDSKDIR/${DISK[1]} bs=1K count=256 conv=notrunc | |
127 | ||
128 | -ubs=$(zdb -lu $DEV_RDSKDIR/${DISK[1]} | grep -e LABEL -e Uberblock -e 'labels = ') | |
129 | +ubs=$(zdb -lu ${DISK[1]} | grep -e LABEL -e Uberblock -e 'labels = ') | |
130 | log_note "vdev 1: ubs $ubs" | |
131 | ||
132 | -ub_dump_counts=$(zdb -lu $DEV_RDSKDIR/${DISK[1]} | \ | |
133 | +ub_dump_counts=$(zdb -lu ${DISK[1]} | \ | |
134 | awk ' /LABEL/ {label=$NF; blocks[label]=0}; | |
135 | /Uberblock/ {blocks[label]++}; | |
136 | END {print blocks[0],blocks[1],blocks[2],blocks[3]}') | |
137 | diff --git a/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_005_pos.ksh b/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_005_pos.ksh | |
138 | index 60bbb5615..f6730f611 100755 | |
139 | --- a/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_005_pos.ksh | |
140 | +++ b/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_005_pos.ksh | |
141 | @@ -44,6 +44,10 @@ verify_disk_count "$DISKS" 2 | |
142 | set -A DISK $DISKS | |
143 | ||
144 | default_mirror_setup_noexit $DISKS | |
145 | +DEVS=$(get_pool_devices ${TESTPOOL} ${DEV_RDSKDIR}) | |
146 | +log_note "$DEVS" | |
147 | +[[ -n $DEVS ]] && set -A DISK $DEVS | |
148 | + | |
149 | log_must dd if=/dev/zero of=$DEV_RDSKDIR/${DISK[1]} bs=1K count=256 conv=notrunc | |
150 | log_must truncate -s 0 $TEMPFILE | |
151 | ||
152 | diff --git a/tests/zfs-tests/tests/functional/inuse/inuse_005_pos.ksh b/tests/zfs-tests/tests/functional/inuse/inuse_005_pos.ksh | |
153 | index 9dd1e25bf..6b0abf429 100755 | |
154 | --- a/tests/zfs-tests/tests/functional/inuse/inuse_005_pos.ksh | |
155 | +++ b/tests/zfs-tests/tests/functional/inuse/inuse_005_pos.ksh | |
156 | @@ -82,19 +82,18 @@ typeset -i i=0 | |
157 | ||
158 | unset NOINUSE_CHECK | |
159 | while (( i < ${#vdevs[*]} )); do | |
160 | - | |
161 | for num in 0 1 2 3 ; do | |
162 | eval typeset disk=\${FS_DISK$num} | |
163 | zero_partitions $disk | |
164 | done | |
165 | - | |
166 | typeset cyl="" | |
167 | for num in 0 1 2 3 ; do | |
168 | eval typeset slice=\${FS_SIDE$num} | |
169 | disk=${slice%${SLICE_PREFIX}*} | |
170 | - slice=${slice##*${SLICE_PREFIX}} | |
171 | + [[ -z $SLICE_PREFIX ]] && eval typeset disk=\${FS_DISK$num} | |
172 | + slice=$(echo $slice | awk '{ print substr($1,length($1),1) }') | |
173 | log_must set_partition $slice "$cyl" $FS_SIZE $disk | |
174 | - cyl=$(get_endslice $disk $slice) | |
175 | + [[ $num < 3 ]] && cyl=$(get_endslice $disk $slice) | |
176 | done | |
177 | ||
178 | if [[ -n $SINGLE_DISK && -n ${vdevs[i]} ]]; then | |
179 | @@ -115,7 +114,6 @@ while (( i < ${#vdevs[*]} )); do | |
180 | (( i = i + 1 )) | |
181 | continue | |
182 | fi | |
183 | - | |
184 | create_pool $TESTPOOL1 ${vdevs[i]} $vdisks spare $sdisks | |
185 | verify_assertion "$rawtargets" | |
186 | destroy_pool $TESTPOOL1 | |
187 | diff --git a/tests/zfs-tests/tests/functional/inuse/inuse_008_pos.ksh b/tests/zfs-tests/tests/functional/inuse/inuse_008_pos.ksh | |
188 | index 95d39d958..ddc8fa7a4 100755 | |
189 | --- a/tests/zfs-tests/tests/functional/inuse/inuse_008_pos.ksh | |
190 | +++ b/tests/zfs-tests/tests/functional/inuse/inuse_008_pos.ksh | |
191 | @@ -92,9 +92,10 @@ done | |
192 | for num in 0 1 2 3 ; do | |
193 | eval typeset slice=\${FS_SIDE$num} | |
194 | disk=${slice%${SLICE_PREFIX}*} | |
195 | - slice=${slice##*${SLICE_PREFIX}} | |
196 | + [[ -z $SLICE_PREFIX ]] && eval typeset disk=\${FS_DISK$num} | |
197 | + slice=$(echo $slice | awk '{ print substr($1,length($1),1) }') | |
198 | log_must set_partition $slice "$cyl" $FS_SIZE $disk | |
199 | - cyl=$(get_endslice $disk $slice) | |
200 | + [[ $num < 3 ]] && cyl=$(get_endslice $disk $slice) | |
201 | done | |
202 | ||
203 | while (( i < ${#vdevs[*]} )); do | |
204 | diff --git a/tests/zfs-tests/tests/functional/inuse/inuse_009_pos.ksh b/tests/zfs-tests/tests/functional/inuse/inuse_009_pos.ksh | |
205 | index 6a9b9623c..a5e9fda59 100755 | |
206 | --- a/tests/zfs-tests/tests/functional/inuse/inuse_009_pos.ksh | |
207 | +++ b/tests/zfs-tests/tests/functional/inuse/inuse_009_pos.ksh | |
208 | @@ -82,13 +82,19 @@ typeset -i i=0 | |
209 | ||
210 | while (( i < ${#vdevs[*]} )); do | |
211 | ||
212 | + for num in 0 1 2 3 ; do | |
213 | + eval typeset disk=\${FS_DISK$num} | |
214 | + zero_partitions $disk | |
215 | + done | |
216 | + | |
217 | typeset cyl="" | |
218 | for num in 0 1 2 3 ; do | |
219 | eval typeset slice=\${FS_SIDE$num} | |
220 | disk=${slice%${SLICE_PREFIX}*} | |
221 | - slice=${slice##*${SLICE_PREFIX}} | |
222 | + [[ -z $SLICE_PREFIX ]] && eval typeset disk=\${FS_DISK$num} | |
223 | + slice=$(echo $slice | awk '{ print substr($1,length($1),1) }') | |
224 | log_must set_partition $slice "$cyl" $FS_SIZE $disk | |
225 | - cyl=$(get_endslice $disk $slice) | |
226 | + [[ $num < 3 ]] && cyl=$(get_endslice $disk $slice) | |
227 | done | |
228 | ||
229 | if [[ -n $SINGLE_DISK && -n ${vdevs[i]} ]]; then | |
230 | -- | |
231 | 2.14.2 | |
232 |