]> git.proxmox.com Git - zfsonlinux.git/blame - zfs-patches/0051-zdb-and-inuse-tests-don-t-pass-with-real-disks.patch
bump version to 0.7.7-pve1~bpo9
[zfsonlinux.git] / zfs-patches / 0051-zdb-and-inuse-tests-don-t-pass-with-real-disks.patch
CommitLineData
75b07eca
FG
1From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2From: Paul Zuchowski <31706010+PaulZ-98@users.noreply.github.com>
3Date: Wed, 7 Mar 2018 20:03:33 -0500
4Subject: [PATCH] zdb and inuse tests don't pass with real disks
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Due to zpool create auto-partioning in Linux (i.e. sdb1),
10certain utilities need to use the parition (sdb1) while
11others use the whole disk name (sdb).
12
13Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
14Signed-off-by: Paul Zuchowski <pzuchowski@datto.com>
15Closes #6939
16Closes #7261
17(cherry picked from commit 0a0af41bd926ca20a26d7476d792ce82bca9c077)
18Signed-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
29diff --git a/tests/zfs-tests/include/libtest.shlib b/tests/zfs-tests/include/libtest.shlib
30index 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+}
91diff --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
92index 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
107diff --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
108index 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]}')
137diff --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
138index 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
152diff --git a/tests/zfs-tests/tests/functional/inuse/inuse_005_pos.ksh b/tests/zfs-tests/tests/functional/inuse/inuse_005_pos.ksh
153index 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
187diff --git a/tests/zfs-tests/tests/functional/inuse/inuse_008_pos.ksh b/tests/zfs-tests/tests/functional/inuse/inuse_008_pos.ksh
188index 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
204diff --git a/tests/zfs-tests/tests/functional/inuse/inuse_009_pos.ksh b/tests/zfs-tests/tests/functional/inuse/inuse_009_pos.ksh
205index 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--
2312.14.2
232