xref: /freebsd/tools/regression/zfs/zpool/replace/raidz2.t (revision b1f9167f94059fd55c630891d359bcff987bd7eb)
1#!/bin/sh
2# $FreeBSD$
3
4dir=`dirname $0`
5. ${dir}/../../misc.sh
6
7echo "1..115"
8
9disks_create 6
10names_create 1
11
12expect_ok ${ZPOOL} create ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
13expect_ok ${ZPOOL} export ${name0}
14dname0=${disk0}
15fdname0=${fdisk0}
16guid0=`get_guid ${fdisk0}`
17disk_destroy 0
18disk_create 0 ${dname0}
19expect_ok ${ZPOOL} import ${import_flags} ${name0}
20exp=`(
21  echo "  pool: ${name0}"
22  echo " state: DEGRADED"
23  echo "status: One or more devices could not be used because the label is missing or"
24  echo "      invalid.  Sufficient replicas exist for the pool to continue"
25  echo "      functioning in a degraded state."
26  echo "action: Replace the device using 'zpool replace'."
27  echo "   see: http://www.sun.com/msg/ZFS-8000-4J"
28  echo " scrub: none requested"
29  echo "config:"
30  echo "	NAME          STATE     READ WRITE CKSUM"
31  echo "	${name0}      DEGRADED     0     0     0"
32  echo "	  raidz2      DEGRADED     0     0     0"
33  echo "	    ${guid0}  UNAVAIL      0     0     0  was ${fdname0}"
34  echo "	    ${disk1}  ONLINE       0     0     0"
35  echo "	    ${disk2}  ONLINE       0     0     0"
36  echo "	    ${disk3}  ONLINE       0     0     0"
37  echo "errors: No known data errors"
38)`
39expect "${exp}" ${ZPOOL} status ${name0}
40expect_ok ${ZPOOL} replace ${name0} ${disk0} ${disk4}
41wait_for_resilver ${name0}
42exp=`(
43  echo "  pool: ${name0}"
44  echo " state: ONLINE"
45  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
46  echo "config:"
47  echo "	NAME          STATE   READ WRITE CKSUM"
48  echo "	${name0}      ONLINE     0     0     0"
49  echo "	  raidz2      ONLINE     0     0     0"
50  echo "	    ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
51  echo "	    ${disk1}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
52  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
53  echo "	    ${disk3}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
54  echo "errors: No known data errors"
55)`
56expect "${exp}" ${ZPOOL} status ${name0}
57expect_ok ${ZPOOL} destroy ${name0}
58expect_fl ${ZPOOL} status -x ${name0}
59
60expect_ok ${ZPOOL} create ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
61expect_ok ${ZPOOL} replace ${name0} ${disk1} ${disk4}
62wait_for_resilver ${name0}
63exp=`(
64  echo "  pool: ${name0}"
65  echo " state: ONLINE"
66  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
67  echo "config:"
68  echo "	NAME          STATE   READ WRITE CKSUM"
69  echo "	${name0}      ONLINE     0     0     0"
70  echo "	  raidz2      ONLINE     0     0     0"
71  echo "	    ${disk0}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
72  echo "	    ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
73  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
74  echo "	    ${disk3}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
75  echo "errors: No known data errors"
76)`
77expect "${exp}" ${ZPOOL} status ${name0}
78expect_ok ${ZPOOL} destroy ${name0}
79expect_fl ${ZPOOL} status -x ${name0}
80
81expect_ok ${ZPOOL} create ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
82expect_ok ${ZPOOL} export ${name0}
83dname0=${disk0}
84fdname0=${fdisk0}
85guid0=`get_guid ${fdisk0}`
86disk_destroy 0
87expect_ok ${ZPOOL} import ${import_flags} ${name0}
88exp=`(
89  echo "  pool: ${name0}"
90  echo " state: DEGRADED"
91  echo " scrub: none requested"
92  echo "config:"
93  echo "	NAME           STATE     READ WRITE CKSUM"
94  echo "	${name0}       DEGRADED     0     0     0"
95  echo "	  raidz2       DEGRADED     0     0     0"
96  echo "	    ${guid0}   REMOVED      0     0     0  was ${fdname0}"
97  echo "	    ${disk1}   ONLINE       0     0     0"
98  echo "	    ${disk2}   ONLINE       0     0     0"
99  echo "	    ${disk3}   ONLINE       0     0     0"
100  echo "errors: No known data errors"
101)`
102expect "${exp}" ${ZPOOL} status ${name0}
103expect_ok ${ZPOOL} replace ${name0} ${dname0} ${disk4}
104wait_for_resilver ${name0}
105exp=`(
106  echo "  pool: ${name0}"
107  echo " state: ONLINE"
108  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
109  echo "config:"
110  echo "	NAME          STATE   READ WRITE CKSUM"
111  echo "	${name0}      ONLINE     0     0     0"
112  echo "	  raidz2      ONLINE     0     0     0"
113  echo "	    ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
114  echo "	    ${disk1}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
115  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
116  echo "	    ${disk3}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
117  echo "errors: No known data errors"
118)`
119expect "${exp}" ${ZPOOL} status ${name0}
120expect_ok ${ZPOOL} destroy ${name0}
121expect_fl ${ZPOOL} status -x ${name0}
122disk_create 0 ${dname0}
123
124expect_ok ${ZPOOL} create ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
125expect_ok ${ZPOOL} offline ${name0} ${disk1}
126expect_ok ${ZPOOL} replace ${name0} ${disk1} ${disk4}
127wait_for_resilver ${name0}
128exp=`(
129  echo "  pool: ${name0}"
130  echo " state: ONLINE"
131  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
132  echo "config:"
133  echo "	NAME          STATE   READ WRITE CKSUM"
134  echo "	${name0}      ONLINE     0     0     0"
135  echo "	  raidz2      ONLINE     0     0     0"
136  echo "	    ${disk0}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
137  echo "	    ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
138  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
139  echo "	    ${disk3}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
140  echo "errors: No known data errors"
141)`
142expect "${exp}" ${ZPOOL} status ${name0}
143expect_ok ${ZPOOL} destroy ${name0}
144expect_fl ${ZPOOL} status -x ${name0}
145
146expect_ok ${ZPOOL} create ${zpool_f_flag} ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
147expect_ok ${ZPOOL} export ${name0}
148dname0=${disk0}
149fdname0=${fdisk0}
150guid0=`get_guid ${fdisk0}`
151disk_destroy 0
152disk_create 0 ${dname0}
153dname1=${disk1}
154fdname1=${fdisk1}
155guid1=`get_guid ${fdisk1}`
156disk_destroy 1
157disk_create 1 ${dname1}
158expect_ok ${ZPOOL} import ${import_flags} ${name0}
159exp=`(
160  echo "  pool: ${name0}"
161  echo " state: DEGRADED"
162  echo "status: One or more devices could not be used because the label is missing or"
163  echo "      invalid.  Sufficient replicas exist for the pool to continue"
164  echo "      functioning in a degraded state."
165  echo "action: Replace the device using 'zpool replace'."
166  echo "   see: http://www.sun.com/msg/ZFS-8000-4J"
167  echo " scrub: none requested"
168  echo "config:"
169  echo "	NAME          STATE     READ WRITE CKSUM"
170  echo "	${name0}      DEGRADED     0     0     0"
171  echo "	  raidz2      DEGRADED     0     0     0"
172  echo "	    ${guid0}  UNAVAIL      0     0     0  was ${fdname0}"
173  echo "	    ${guid1}  UNAVAIL      0     0     0  was ${fdname1}"
174  echo "	    ${disk2}  ONLINE       0     0     0"
175  echo "	    ${disk3}  ONLINE       0     0     0"
176  echo "errors: No known data errors"
177)`
178expect "${exp}" ${ZPOOL} status ${name0}
179expect_ok ${ZPOOL} replace ${name0} ${disk0} ${disk4}
180expect_ok ${ZPOOL} replace ${name0} ${disk1} ${disk5}
181wait_for_resilver ${name0}
182exp=`(
183  echo "  pool: ${name0}"
184  echo " state: ONLINE"
185  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
186  echo "config:"
187  echo "	NAME          STATE   READ WRITE CKSUM"
188  echo "	${name0}      ONLINE     0     0     0"
189  echo "	  raidz2      ONLINE     0     0     0"
190  echo "	    ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
191  echo "	    ${disk5}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
192  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
193  echo "	    ${disk3}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
194  echo "errors: No known data errors"
195)`
196expect "${exp}" ${ZPOOL} status ${name0}
197expect_ok ${ZPOOL} destroy ${name0}
198expect_fl ${ZPOOL} status -x ${name0}
199
200expect_ok ${ZPOOL} create ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
201expect_ok ${ZPOOL} replace ${name0} ${disk1} ${disk4}
202expect_ok ${ZPOOL} replace ${name0} ${disk2} ${disk5}
203wait_for_resilver ${name0}
204exp=`(
205  echo "  pool: ${name0}"
206  echo " state: ONLINE"
207  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
208  echo "config:"
209  echo "	NAME          STATE   READ WRITE CKSUM"
210  echo "	${name0}      ONLINE     0     0     0"
211  echo "	  raidz2      ONLINE     0     0     0"
212  echo "	    ${disk0}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
213  echo "	    ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
214  echo "	    ${disk5}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
215  echo "	    ${disk3}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
216  echo "errors: No known data errors"
217)`
218expect "${exp}" ${ZPOOL} status ${name0}
219expect_ok ${ZPOOL} destroy ${name0}
220expect_fl ${ZPOOL} status -x ${name0}
221
222expect_ok ${ZPOOL} create ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
223expect_ok ${ZPOOL} export ${name0}
224dname0=${disk0}
225fdname0=${fdisk0}
226guid0=`get_guid ${fdisk0}`
227disk_destroy 0
228dname1=${disk1}
229fdname1=${fdisk1}
230guid1=`get_guid ${fdisk1}`
231disk_destroy 1
232expect_ok ${ZPOOL} import ${import_flags} ${name0}
233exp=`(
234  echo "  pool: ${name0}"
235  echo " state: DEGRADED"
236  echo " scrub: none requested"
237  echo "config:"
238  echo "	NAME           STATE     READ WRITE CKSUM"
239  echo "	${name0}       DEGRADED     0     0     0"
240  echo "	  raidz2       DEGRADED     0     0     0"
241  echo "	    ${guid0}   REMOVED      0     0     0  was ${fdname0}"
242  echo "	    ${guid1}   REMOVED      0     0     0  was ${fdname1}"
243  echo "	    ${disk2}   ONLINE       0     0     0"
244  echo "	    ${disk3}   ONLINE       0     0     0"
245  echo "errors: No known data errors"
246)`
247expect "${exp}" ${ZPOOL} status ${name0}
248expect_ok ${ZPOOL} replace ${name0} ${dname0} ${disk4}
249expect_ok ${ZPOOL} replace ${name0} ${dname1} ${disk5}
250wait_for_resilver ${name0}
251exp=`(
252  echo "  pool: ${name0}"
253  echo " state: ONLINE"
254  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
255  echo "config:"
256  echo "	NAME          STATE   READ WRITE CKSUM"
257  echo "	${name0}      ONLINE     0     0     0"
258  echo "	  raidz2      ONLINE     0     0     0"
259  echo "	    ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
260  echo "	    ${disk5}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
261  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
262  echo "	    ${disk3}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
263  echo "errors: No known data errors"
264)`
265expect "${exp}" ${ZPOOL} status ${name0}
266expect_ok ${ZPOOL} destroy ${name0}
267expect_fl ${ZPOOL} status -x ${name0}
268disk_create 0 ${dname0}
269disk_create 1 ${dname1}
270
271expect_ok ${ZPOOL} create ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
272expect_ok ${ZPOOL} offline ${name0} ${disk0}
273add_msg="# TODO Sun CR 6328632, Lustre bug 16878"
274expect_ok ${ZPOOL} offline ${name0} ${disk1}
275exp=`(
276  echo "  pool: ${name0}"
277  echo " state: DEGRADED"
278  echo "status: One or more devices has been taken offline by the administrator."
279  echo "      Sufficient replicas exist for the pool to continue functioning in a"
280  echo "      degraded state."
281  echo "action: Online the device using 'zpool online' or replace the device with"
282  echo "      'zpool replace'."
283  echo " scrub: none requested"
284  echo "config:"
285  echo "	NAME          STATE     READ WRITE CKSUM"
286  echo "	${name0}      DEGRADED     0     0     0"
287  echo "	  raidz2      DEGRADED     0     0     0"
288  echo "	    ${disk0}  OFFLINE      0     0     0"
289  echo "	    ${disk1}  OFFLINE      0     0     0"
290  echo "	    ${disk2}  ONLINE       0     0     0"
291  echo "	    ${disk3}  ONLINE       0     0     0"
292  echo "errors: No known data errors"
293)`
294expect "${exp}" ${ZPOOL} status ${name0}
295add_msg=""
296expect_ok ${ZPOOL} replace ${name0} ${disk0} ${disk4}
297expect_ok ${ZPOOL} replace ${name0} ${disk1} ${disk5}
298wait_for_resilver ${name0}
299exp=`(
300  echo "  pool: ${name0}"
301  echo " state: ONLINE"
302  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
303  echo "config:"
304  echo "	NAME          STATE   READ WRITE CKSUM"
305  echo "	${name0}      ONLINE     0     0     0"
306  echo "	  raidz2      ONLINE     0     0     0"
307  echo "	    ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
308  echo "	    ${disk5}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
309  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
310  echo "	    ${disk3}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
311  echo "errors: No known data errors"
312)`
313expect "${exp}" ${ZPOOL} status ${name0}
314expect_ok ${ZPOOL} destroy ${name0}
315expect_fl ${ZPOOL} status -x ${name0}
316
317expect_ok ${ZPOOL} create ${zpool_f_flag} ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
318expect_ok ${ZPOOL} export ${name0}
319dname0=${disk0}
320fdname0=${fdisk0}
321guid0=`get_guid ${fdisk0}`
322disk_destroy 0
323disk_create 0 ${dname0}
324expect_ok ${ZPOOL} import ${import_flags} ${name0}
325exp=`(
326  echo "  pool: ${name0}"
327  echo " state: DEGRADED"
328  echo "status: One or more devices could not be used because the label is missing or"
329  echo "      invalid.  Sufficient replicas exist for the pool to continue"
330  echo "      functioning in a degraded state."
331  echo "action: Replace the device using 'zpool replace'."
332  echo "   see: http://www.sun.com/msg/ZFS-8000-4J"
333  echo " scrub: none requested"
334  echo "config:"
335  echo "	NAME          STATE     READ WRITE CKSUM"
336  echo "	${name0}      DEGRADED     0     0     0"
337  echo "	  raidz2      DEGRADED     0     0     0"
338  echo "	    ${guid0}  UNAVAIL      0     0     0  was ${fdname0}"
339  echo "	    ${disk1}  ONLINE       0     0     0"
340  echo "	    ${disk2}  ONLINE       0     0     0"
341  echo "	    ${disk3}  ONLINE       0     0     0"
342  echo "errors: No known data errors"
343)`
344expect "${exp}" ${ZPOOL} status ${name0}
345expect_ok ${ZPOOL} replace ${name0} ${disk0} ${disk4}
346expect_ok ${ZPOOL} replace ${name0} ${disk1} ${disk5}
347wait_for_resilver ${name0}
348exp=`(
349  echo "  pool: ${name0}"
350  echo " state: ONLINE"
351  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
352  echo "config:"
353  echo "	NAME          STATE   READ WRITE CKSUM"
354  echo "	${name0}      ONLINE     0     0     0"
355  echo "	  raidz2      ONLINE     0     0     0"
356  echo "	    ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
357  echo "	    ${disk5}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
358  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
359  echo "	    ${disk3}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
360  echo "errors: No known data errors"
361)`
362expect "${exp}" ${ZPOOL} status ${name0}
363expect_ok ${ZPOOL} destroy ${name0}
364expect_fl ${ZPOOL} status -x ${name0}
365
366expect_ok ${ZPOOL} create ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
367expect_ok ${ZPOOL} export ${name0}
368dname0=${disk0}
369fdname0=${fdisk0}
370guid0=`get_guid ${fdisk0}`
371disk_destroy 0
372disk_create 0 ${dname0}
373dname1=${disk1}
374fdname1=${fdisk1}
375guid1=`get_guid ${fdisk1}`
376disk_destroy 1
377expect_ok ${ZPOOL} import ${import_flags} ${name0}
378exp=`(
379  echo "  pool: ${name0}"
380  echo " state: DEGRADED"
381  echo "status: One or more devices could not be used because the label is missing or"
382  echo "      invalid.  Sufficient replicas exist for the pool to continue"
383  echo "      functioning in a degraded state."
384  echo "action: Replace the device using 'zpool replace'."
385  echo "   see: http://www.sun.com/msg/ZFS-8000-4J"
386  echo " scrub: none requested"
387  echo "config:"
388  echo "	NAME           STATE     READ WRITE CKSUM"
389  echo "	${name0}       DEGRADED     0     0     0"
390  echo "	  raidz2       DEGRADED     0     0     0"
391  echo "	    ${guid0}   UNAVAIL      0     0     0  was ${fdname0}"
392  echo "	    ${guid1}   REMOVED      0     0     0  was ${fdname1}"
393  echo "	    ${disk2}   ONLINE       0     0     0"
394  echo "	    ${disk3}   ONLINE       0     0     0"
395  echo "errors: No known data errors"
396)`
397expect "${exp}" ${ZPOOL} status ${name0}
398expect_ok ${ZPOOL} replace ${name0} ${disk0} ${disk4}
399expect_ok ${ZPOOL} replace ${name0} ${dname1} ${disk5}
400wait_for_resilver ${name0}
401exp=`(
402  echo "  pool: ${name0}"
403  echo " state: ONLINE"
404  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
405  echo "config:"
406  echo "	NAME          STATE   READ WRITE CKSUM"
407  echo "	${name0}      ONLINE     0     0     0"
408  echo "	  raidz2      ONLINE     0     0     0"
409  echo "	    ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
410  echo "	    ${disk5}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
411  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
412  echo "	    ${disk3}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
413  echo "errors: No known data errors"
414)`
415expect "${exp}" ${ZPOOL} status ${name0}
416expect_ok ${ZPOOL} destroy ${name0}
417expect_fl ${ZPOOL} status -x ${name0}
418disk_create 1 ${dname1}
419
420expect_ok ${ZPOOL} create ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
421expect_ok ${ZPOOL} export ${name0}
422dname0=${disk0}
423fdname0=${fdisk0}
424guid0=`get_guid ${fdisk0}`
425disk_destroy 0
426expect_ok ${ZPOOL} import ${import_flags} ${name0}
427exp=`(
428  echo "  pool: ${name0}"
429  echo " state: DEGRADED"
430  echo " scrub: none requested"
431  echo "config:"
432  echo "	NAME           STATE     READ WRITE CKSUM"
433  echo "	${name0}       DEGRADED     0     0     0"
434  echo "	  raidz2       DEGRADED     0     0     0"
435  echo "	    ${guid0}   REMOVED      0     0     0  was ${fdname0}"
436  echo "	    ${disk1}   ONLINE       0     0     0"
437  echo "	    ${disk2}   ONLINE       0     0     0"
438  echo "	    ${disk3}   ONLINE       0     0     0"
439  echo "errors: No known data errors"
440)`
441expect "${exp}" ${ZPOOL} status ${name0}
442expect_ok ${ZPOOL} replace ${name0} ${dname0} ${disk4}
443expect_ok ${ZPOOL} replace ${name0} ${disk1} ${disk5}
444wait_for_resilver ${name0}
445exp=`(
446  echo "  pool: ${name0}"
447  echo " state: ONLINE"
448  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
449  echo "config:"
450  echo "	NAME          STATE   READ WRITE CKSUM"
451  echo "	${name0}      ONLINE     0     0     0"
452  echo "	  raidz2      ONLINE     0     0     0"
453  echo "	    ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
454  echo "	    ${disk5}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
455  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
456  echo "	    ${disk3}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
457  echo "errors: No known data errors"
458)`
459expect "${exp}" ${ZPOOL} status ${name0}
460expect_ok ${ZPOOL} destroy ${name0}
461expect_fl ${ZPOOL} status -x ${name0}
462disk_create 0 ${dname0}
463
464expect_ok ${ZPOOL} create ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
465expect_ok ${ZPOOL} offline ${name0} ${disk0}
466exp=`(
467  echo "  pool: ${name0}"
468  echo " state: DEGRADED"
469  echo "status: One or more devices has been taken offline by the administrator."
470  echo "      Sufficient replicas exist for the pool to continue functioning in a"
471  echo "      degraded state."
472  echo "action: Online the device using 'zpool online' or replace the device with"
473  echo "      'zpool replace'."
474  echo " scrub: none requested"
475  echo "config:"
476  echo "	NAME          STATE     READ WRITE CKSUM"
477  echo "	${name0}      DEGRADED     0     0     0"
478  echo "	  raidz2      DEGRADED     0     0     0"
479  echo "	    ${disk0}  OFFLINE      0     0     0"
480  echo "	    ${disk1}  ONLINE       0     0     0"
481  echo "	    ${disk2}  ONLINE       0     0     0"
482  echo "	    ${disk3}  ONLINE       0     0     0"
483  echo "errors: No known data errors"
484)`
485expect "${exp}" ${ZPOOL} status ${name0}
486expect_ok ${ZPOOL} replace ${name0} ${disk0} ${disk4}
487expect_ok ${ZPOOL} replace ${name0} ${disk1} ${disk5}
488wait_for_resilver ${name0}
489exp=`(
490  echo "  pool: ${name0}"
491  echo " state: ONLINE"
492  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
493  echo "config:"
494  echo "	NAME          STATE   READ WRITE CKSUM"
495  echo "	${name0}      ONLINE     0     0     0"
496  echo "	  raidz2      ONLINE     0     0     0"
497  echo "	    ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
498  echo "	    ${disk5}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
499  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
500  echo "	    ${disk3}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
501  echo "errors: No known data errors"
502)`
503expect "${exp}" ${ZPOOL} status ${name0}
504expect_ok ${ZPOOL} destroy ${name0}
505expect_fl ${ZPOOL} status -x ${name0}
506
507expect_ok ${ZPOOL} create ${zpool_f_flag} ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
508expect_ok ${ZPOOL} offline ${name0} ${disk0}
509expect_ok ${ZPOOL} export ${name0}
510dname1=${disk1}
511fdname1=${fdisk1}
512guid1=`get_guid ${fdisk1}`
513disk_destroy 1
514disk_create 1 ${dname1}
515expect_ok ${ZPOOL} import ${import_flags} ${name0}
516exp=`(
517  echo "  pool: ${name0}"
518  echo " state: DEGRADED"
519  echo "status: One or more devices could not be used because the label is missing or"
520  echo "      invalid.  Sufficient replicas exist for the pool to continue"
521  echo "      functioning in a degraded state."
522  echo "action: Replace the device using 'zpool replace'."
523  echo "   see: http://www.sun.com/msg/ZFS-8000-4J"
524  echo " scrub: none requested"
525  echo "config:"
526  echo "	NAME          STATE     READ WRITE CKSUM"
527  echo "	${name0}      DEGRADED     0     0     0"
528  echo "	  raidz2      DEGRADED     0     0     0"
529  echo "	    ${disk0}  OFFLINE      0     0     0"
530  echo "	    ${guid1}  UNAVAIL      0     0     0  was ${fdname1}"
531  echo "	    ${disk2}  ONLINE       0     0     0"
532  echo "	    ${disk3}  ONLINE       0     0     0"
533  echo "errors: No known data errors"
534)`
535expect "${exp}" ${ZPOOL} status ${name0}
536expect_ok ${ZPOOL} replace ${name0} ${disk0} ${disk4}
537expect_ok ${ZPOOL} replace ${name0} ${disk1} ${disk5}
538wait_for_resilver ${name0}
539exp=`(
540  echo "  pool: ${name0}"
541  echo " state: ONLINE"
542  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
543  echo "config:"
544  echo "	NAME          STATE   READ WRITE CKSUM"
545  echo "	${name0}      ONLINE     0     0     0"
546  echo "	  raidz2      ONLINE     0     0     0"
547  echo "	    ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
548  echo "	    ${disk5}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
549  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
550  echo "	    ${disk3}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
551  echo "errors: No known data errors"
552)`
553expect "${exp}" ${ZPOOL} status ${name0}
554expect_ok ${ZPOOL} destroy ${name0}
555expect_fl ${ZPOOL} status -x ${name0}
556
557expect_ok ${ZPOOL} create ${zpool_f_flag} ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
558expect_ok ${ZPOOL} offline ${name0} ${disk0}
559expect_ok ${ZPOOL} export ${name0}
560dname1=${disk1}
561fdname1=${fdisk1}
562guid1=`get_guid ${fdisk1}`
563disk_destroy 1
564expect_ok ${ZPOOL} import ${import_flags} ${name0}
565exp=`(
566  echo "  pool: ${name0}"
567  echo " state: DEGRADED"
568  echo "status: One or more devices has been taken offline by the administrator."
569  echo "      Sufficient replicas exist for the pool to continue functioning in a"
570  echo "      degraded state."
571  echo "action: Online the device using 'zpool online' or replace the device with"
572  echo "      'zpool replace'."
573  echo " scrub: none requested"
574  echo "config:"
575  echo "	NAME           STATE     READ WRITE CKSUM"
576  echo "	${name0}       DEGRADED     0     0     0"
577  echo "	  raidz2       DEGRADED     0     0     0"
578  echo "	    ${disk0}   OFFLINE      0     0     0"
579  echo "	    ${guid1}   REMOVED      0     0     0  was ${fdname1}"
580  echo "	    ${disk2}   ONLINE       0     0     0"
581  echo "	    ${disk3}   ONLINE       0     0     0"
582  echo "errors: No known data errors"
583)`
584expect "${exp}" ${ZPOOL} status ${name0}
585expect_ok ${ZPOOL} replace ${name0} ${disk0} ${disk4}
586expect_ok ${ZPOOL} replace ${name0} ${dname1} ${disk5}
587wait_for_resilver ${name0}
588exp=`(
589  echo "  pool: ${name0}"
590  echo " state: ONLINE"
591  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
592  echo "config:"
593  echo "	NAME          STATE   READ WRITE CKSUM"
594  echo "	${name0}      ONLINE     0     0     0"
595  echo "	  raidz2      ONLINE     0     0     0"
596  echo "	    ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
597  echo "	    ${disk5}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
598  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
599  echo "	    ${disk3}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
600  echo "errors: No known data errors"
601)`
602expect "${exp}" ${ZPOOL} status ${name0}
603expect_ok ${ZPOOL} destroy ${name0}
604expect_fl ${ZPOOL} status -x ${name0}
605disk_create 1 ${dname1}
606
607disks_destroy
608