1185029Spjd#!/bin/sh
2185029Spjd# $FreeBSD$
3185029Spjd
4185029Spjddir=`dirname $0`
5185029Spjd. ${dir}/../../misc.sh
6185029Spjd
7185029Spjdecho "1..141"
8185029Spjd
9185029Spjddisks_create 11
10185029Spjdnames_create 2
11185029Spjd
12185029Spjdexpect_ok ${ZPOOL} create ${name0} ${disk0}
13185029Spjdexpect_ok ${ZPOOL} export ${name0}
14185029Spjdexpect_ok ${ZPOOL} create ${name1} ${disk1}
15185029Spjdexp=`(
16185029Spjd  echo "invalid vdev specification"
17185029Spjd  echo "use '-f' to override the following errors:"
18185029Spjd  echo "${fdisk0} is part of exported pool '${name0}'"
19185029Spjd)`
20185029Spjdexpect "${exp}" ${ZPOOL} attach ${name1} ${disk1} ${disk0}
21185029Spjdexp=`(
22185029Spjd  echo "  pool: ${name1}"
23185029Spjd  echo " state: ONLINE"
24185029Spjd  echo " scrub: none requested"
25185029Spjd  echo "config:"
26185029Spjd  echo "        NAME        STATE   READ WRITE CKSUM"
27185029Spjd  echo "        ${name1}    ONLINE     0     0     0"
28185029Spjd  echo "          ${disk1}  ONLINE     0     0     0"
29185029Spjd  echo "errors: No known data errors"
30185029Spjd)`
31185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
32185029Spjdexpect_ok ${ZPOOL} attach -f ${name1} ${disk1} ${disk0}
33185029Spjdwait_for_resilver ${name1}
34185029Spjdexp=`(
35185029Spjd  echo "  pool: ${name1}"
36185029Spjd  echo " state: ONLINE"
37185029Spjd  echo " scrub: resilver completed after [0-9]+h[0-9]+m with 0 errors on .*"
38185029Spjd  echo "config:"
39185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
40185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
41185029Spjd  echo "          mirror      ONLINE     0     0     0"
42185029Spjd  echo "            ${disk1}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
43185029Spjd  echo "            ${disk0}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
44185029Spjd  echo "errors: No known data errors"
45185029Spjd)`
46185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
47185029Spjdexpect_ok ${ZPOOL} destroy ${name1}
48185029Spjd
49185029Spjdexpect_ok ${ZPOOL} create ${name0} ${disk0}
50185029Spjdexpect_ok ${ZPOOL} export ${name0}
51185029Spjdexpect_ok ${ZPOOL} create ${name1} mirror ${disk1} ${disk2}
52185029Spjdexp=`(
53185029Spjd  echo "invalid vdev specification"
54185029Spjd  echo "use '-f' to override the following errors:"
55185029Spjd  echo "${fdisk0} is part of exported pool '${name0}'"
56185029Spjd)`
57185029Spjdexpect "${exp}" ${ZPOOL} attach ${name1} ${disk1} ${disk0}
58185029Spjdexp=`(
59185029Spjd  echo "  pool: ${name1}"
60185029Spjd  echo " state: ONLINE"
61185029Spjd  echo " scrub: none requested"
62185029Spjd  echo "config:"
63185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
64185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
65185029Spjd  echo "          mirror      ONLINE     0     0     0"
66185029Spjd  echo "            ${disk1}  ONLINE     0     0     0"
67185029Spjd  echo "            ${disk2}  ONLINE     0     0     0"
68185029Spjd  echo "errors: No known data errors"
69185029Spjd)`
70185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
71185029Spjdexpect_ok ${ZPOOL} attach -f ${name1} ${disk1} ${disk0}
72185029Spjdwait_for_resilver ${name1}
73185029Spjdexp=`(
74185029Spjd  echo "  pool: ${name1}"
75185029Spjd  echo " state: ONLINE"
76185029Spjd  echo " scrub: resilver completed after [0-9]+h[0-9]+m with 0 errors on .*"
77185029Spjd  echo "config:"
78185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
79185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
80185029Spjd  echo "          mirror      ONLINE     0     0     0"
81185029Spjd  echo "            ${disk1}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
82185029Spjd  echo "            ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
83185029Spjd  echo "            ${disk0}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
84185029Spjd  echo "errors: No known data errors"
85185029Spjd)`
86185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
87185029Spjdexpect_ok ${ZPOOL} destroy ${name1}
88185029Spjd
89185029Spjdexpect_ok ${ZPOOL} create ${name0} ${disk1} log mirror ${disk2} ${disk0}
90185029Spjdexpect_ok ${ZPOOL} export ${name0}
91185029Spjdexpect_ok ${ZPOOL} create ${name1} ${disk3} log ${disk4}
92185029Spjdexp=`(
93185029Spjd  echo "invalid vdev specification"
94185029Spjd  echo "use '-f' to override the following errors:"
95185029Spjd  echo "${fdisk0} is part of exported pool '${name0}'"
96185029Spjd)`
97185029Spjdexpect "${exp}" ${ZPOOL} attach ${name1} ${disk4} ${disk0}
98185029Spjdexp=`(
99185029Spjd  echo "  pool: ${name1}"
100185029Spjd  echo " state: ONLINE"
101185029Spjd  echo " scrub: none requested"
102185029Spjd  echo "config:"
103185029Spjd  echo "        NAME        STATE   READ WRITE CKSUM"
104185029Spjd  echo "        ${name1}    ONLINE     0     0     0"
105185029Spjd  echo "          ${disk3}  ONLINE     0     0     0"
106185029Spjd  echo "        logs        ONLINE     0     0     0"
107185029Spjd  echo "          ${disk4}  ONLINE     0     0     0"
108185029Spjd  echo "errors: No known data errors"
109185029Spjd)`
110185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
111185029Spjdexpect_ok ${ZPOOL} attach -f ${name1} ${disk4} ${disk0}
112185029Spjdwait_for_resilver ${name1}
113185029Spjdexp=`(
114185029Spjd  echo "  pool: ${name1}"
115185029Spjd  echo " state: ONLINE"
116185029Spjd  echo " scrub: resilver completed after [0-9]+h[0-9]+m with 0 errors on .*"
117185029Spjd  echo "config:"
118185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
119185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
120185029Spjd  echo "          ${disk3}    ONLINE     0     0     0"
121185029Spjd  echo "        logs          ONLINE     0     0     0"
122185029Spjd  echo "          mirror      ONLINE     0     0     0"
123185029Spjd  echo "            ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
124185029Spjd  echo "            ${disk0}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
125185029Spjd  echo "errors: No known data errors"
126185029Spjd)`
127185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
128185029Spjdexpect_ok ${ZPOOL} destroy ${name1}
129185029Spjdexpect_ok ${ZPOOL} import ${name0}
130185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
131185029Spjd
132185029Spjdexpect_ok ${ZPOOL} create ${name0} ${disk1} log mirror ${disk2} ${disk0}
133185029Spjdexpect_ok ${ZPOOL} export ${name0}
134185029Spjdexpect_ok ${ZPOOL} create ${name1} ${disk3} log mirror ${disk4} ${disk5}
135185029Spjdexp=`(
136185029Spjd  echo "invalid vdev specification"
137185029Spjd  echo "use '-f' to override the following errors:"
138185029Spjd  echo "${fdisk0} is part of exported pool '${name0}'"
139185029Spjd)`
140185029Spjdexpect "${exp}" ${ZPOOL} attach ${name1} ${disk2} ${disk0}
141185029Spjdexp=`(
142185029Spjd  echo "  pool: ${name1}"
143185029Spjd  echo " state: ONLINE"
144185029Spjd  echo " scrub: none requested"
145185029Spjd  echo "config:"
146185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
147185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
148185029Spjd  echo "          ${disk3}    ONLINE     0     0     0"
149185029Spjd  echo "        logs          ONLINE     0     0     0"
150185029Spjd  echo "          mirror      ONLINE     0     0     0"
151185029Spjd  echo "            ${disk4}  ONLINE     0     0     0"
152185029Spjd  echo "            ${disk5}  ONLINE     0     0     0"
153185029Spjd  echo "errors: No known data errors"
154185029Spjd)`
155185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
156185029Spjdexpect_ok ${ZPOOL} attach -f ${name1} ${disk4} ${disk0}
157185029Spjdwait_for_resilver ${name1}
158185029Spjdexp=`(
159185029Spjd  echo "  pool: ${name1}"
160185029Spjd  echo " state: ONLINE"
161185029Spjd  echo " scrub: resilver completed after [0-9]+h[0-9]+m with 0 errors on .*"
162185029Spjd  echo "config:"
163185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
164185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
165185029Spjd  echo "          ${disk3}    ONLINE     0     0     0"
166185029Spjd  echo "        logs          ONLINE     0     0     0"
167185029Spjd  echo "          mirror      ONLINE     0     0     0"
168185029Spjd  echo "            ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
169185029Spjd  echo "            ${disk5}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
170185029Spjd  echo "            ${disk0}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
171185029Spjd  echo "errors: No known data errors"
172185029Spjd)`
173185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
174185029Spjdexpect_ok ${ZPOOL} destroy ${name1}
175185029Spjdexpect_ok ${ZPOOL} import ${name0}
176185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
177185029Spjd
178185029Spjdexpect_ok ${ZPOOL} create ${name0} ${disk1} cache ${disk0}
179185029Spjdexpect_ok ${ZPOOL} export ${name0}
180185029Spjdexpect_ok ${ZPOOL} create ${name1} ${disk2}
181185029Spjdexp=`(
182185029Spjd  echo "invalid vdev specification"
183185029Spjd  echo "use '-f' to override the following errors:"
184185029Spjd  echo "${fdisk0} is part of exported pool '${name0}'"
185185029Spjd)`
186185029Spjdadd_msg="# TODO It shouldn't be possible to use offlined cache vdevs."
187185029Spjdexpect "${exp}" ${ZPOOL} attach ${name1} ${disk2} ${disk0}
188185029Spjdexp=`(
189185029Spjd  echo "  pool: ${name1}"
190185029Spjd  echo " state: ONLINE"
191185029Spjd  echo " scrub: none requested"
192185029Spjd  echo "config:"
193185029Spjd  echo "        NAME        STATE   READ WRITE CKSUM"
194185029Spjd  echo "        ${name1}    ONLINE     0     0     0"
195185029Spjd  echo "          ${disk2}  ONLINE     0     0     0"
196185029Spjd  echo "errors: No known data errors"
197185029Spjd)`
198185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
199185029Spjdexpect_ok ${ZPOOL} attach -f ${name1} ${disk2} ${disk0}
200185029Spjdadd_msg=""
201185029Spjdwait_for_resilver ${name1}
202185029Spjdexp=`(
203185029Spjd  echo "  pool: ${name1}"
204185029Spjd  echo " state: ONLINE"
205185029Spjd  echo " scrub: resilver completed after [0-9]+h[0-9]+m with 0 errors on .*"
206185029Spjd  echo "config:"
207185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
208185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
209185029Spjd  echo "          mirror      ONLINE     0     0     0"
210185029Spjd  echo "            ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
211185029Spjd  echo "            ${disk0}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
212185029Spjd  echo "errors: No known data errors"
213185029Spjd)`
214185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
215185029Spjdexpect_ok ${ZPOOL} destroy ${name1}
216185029Spjdexpect_ok ${ZPOOL} import ${name0}
217185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
218185029Spjd
219185029Spjdexpect_ok ${ZPOOL} create ${name0} mirror ${disk0} ${disk1}
220185029Spjdexpect_ok ${ZPOOL} offline ${name0} ${disk0}
221185029Spjdexpect_ok ${ZPOOL} export ${name0}
222185029Spjdexpect_ok ${ZPOOL} create ${name1} ${disk2}
223185029Spjdexp=`(
224185029Spjd  echo "invalid vdev specification"
225185029Spjd  echo "use '-f' to override the following errors:"
226185029Spjd  echo "${fdisk0} is part of potentially active pool '${name0}'"
227185029Spjd)`
228185029Spjdexpect "${exp}" ${ZPOOL} attach ${name1} ${disk2} ${disk0}
229185029Spjdexp=`(
230185029Spjd  echo "  pool: ${name1}"
231185029Spjd  echo " state: ONLINE"
232185029Spjd  echo " scrub: none requested"
233185029Spjd  echo "config:"
234185029Spjd  echo "        NAME        STATE   READ WRITE CKSUM"
235185029Spjd  echo "        ${name1}    ONLINE     0     0     0"
236185029Spjd  echo "          ${disk2}  ONLINE     0     0     0"
237185029Spjd  echo "errors: No known data errors"
238185029Spjd)`
239185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
240185029Spjdexpect_ok ${ZPOOL} attach -f ${name1} ${disk2} ${disk0}
241185029Spjdwait_for_resilver ${name1}
242185029Spjdexp=`(
243185029Spjd  echo "  pool: ${name1}"
244185029Spjd  echo " state: ONLINE"
245185029Spjd  echo " scrub: resilver completed after [0-9]+h[0-9]+m with 0 errors on .*"
246185029Spjd  echo "config:"
247185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
248185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
249185029Spjd  echo "          mirror      ONLINE     0     0     0"
250185029Spjd  echo "            ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
251185029Spjd  echo "            ${disk0}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
252185029Spjd  echo "errors: No known data errors"
253185029Spjd)`
254185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
255185029Spjdexpect_ok ${ZPOOL} destroy ${name1}
256185029Spjdexpect_ok ${ZPOOL} import ${name0}
257185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
258185029Spjd
259185029Spjdexpect_ok ${ZPOOL} create ${name0} mirror ${disk0} ${disk1}
260185029Spjdexpect_ok ${ZPOOL} offline ${name0} ${disk0}
261185029Spjdexpect_ok ${ZPOOL} export ${name0}
262185029Spjdexpect_ok ${ZPOOL} create ${name1} mirror ${disk2} ${disk3}
263185029Spjdexp=`(
264185029Spjd  echo "invalid vdev specification"
265185029Spjd  echo "use '-f' to override the following errors:"
266185029Spjd  echo "${fdisk0} is part of potentially active pool '${name0}'"
267185029Spjd)`
268185029Spjdexpect "${exp}" ${ZPOOL} attach ${name1} ${disk2} ${disk0}
269185029Spjdexp=`(
270185029Spjd  echo "  pool: ${name1}"
271185029Spjd  echo " state: ONLINE"
272185029Spjd  echo " scrub: none requested"
273185029Spjd  echo "config:"
274185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
275185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
276185029Spjd  echo "          mirror      ONLINE     0     0     0"
277185029Spjd  echo "            ${disk2}  ONLINE     0     0     0"
278185029Spjd  echo "            ${disk3}  ONLINE     0     0     0"
279185029Spjd  echo "errors: No known data errors"
280185029Spjd)`
281185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
282185029Spjdexpect_ok ${ZPOOL} attach -f ${name1} ${disk2} ${disk0}
283185029Spjdwait_for_resilver ${name1}
284185029Spjdexp=`(
285185029Spjd  echo "  pool: ${name1}"
286185029Spjd  echo " state: ONLINE"
287185029Spjd  echo " scrub: resilver completed after [0-9]+h[0-9]+m with 0 errors on .*"
288185029Spjd  echo "config:"
289185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
290185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
291185029Spjd  echo "          mirror      ONLINE     0     0     0"
292185029Spjd  echo "            ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
293185029Spjd  echo "            ${disk3}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
294185029Spjd  echo "            ${disk0}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
295185029Spjd  echo "errors: No known data errors"
296185029Spjd)`
297185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
298185029Spjdexpect_ok ${ZPOOL} destroy ${name1}
299185029Spjdexpect_ok ${ZPOOL} import ${name0}
300185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
301185029Spjd
302185029Spjdexpect_ok ${ZPOOL} create ${name0} ${disk1} log mirror ${disk2} ${disk0}
303185029Spjdexpect_ok ${ZPOOL} offline ${name0} ${disk0}
304185029Spjdexpect_ok ${ZPOOL} export ${name0}
305185029Spjdexpect_ok ${ZPOOL} create ${name1} ${disk3} log ${disk4}
306185029Spjdexp=`(
307185029Spjd  echo "invalid vdev specification"
308185029Spjd  echo "use '-f' to override the following errors:"
309185029Spjd  echo "${fdisk0} is part of potentially active pool '${name0}'"
310185029Spjd)`
311185029Spjdexpect "${exp}" ${ZPOOL} attach ${name1} ${disk4} ${disk0}
312185029Spjdexp=`(
313185029Spjd  echo "  pool: ${name1}"
314185029Spjd  echo " state: ONLINE"
315185029Spjd  echo " scrub: none requested"
316185029Spjd  echo "config:"
317185029Spjd  echo "        NAME        STATE   READ WRITE CKSUM"
318185029Spjd  echo "        ${name1}    ONLINE     0     0     0"
319185029Spjd  echo "          ${disk3}  ONLINE     0     0     0"
320185029Spjd  echo "        logs        ONLINE     0     0     0"
321185029Spjd  echo "          ${disk4}  ONLINE     0     0     0"
322185029Spjd  echo "errors: No known data errors"
323185029Spjd)`
324185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
325185029Spjdexpect_ok ${ZPOOL} attach -f ${name1} ${disk4} ${disk0}
326185029Spjdwait_for_resilver ${name1}
327185029Spjdexp=`(
328185029Spjd  echo "  pool: ${name1}"
329185029Spjd  echo " state: ONLINE"
330185029Spjd  echo " scrub: resilver completed after [0-9]+h[0-9]+m with 0 errors on .*"
331185029Spjd  echo "config:"
332185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
333185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
334185029Spjd  echo "          ${disk3}    ONLINE     0     0     0"
335185029Spjd  echo "        logs          ONLINE     0     0     0"
336185029Spjd  echo "          mirror      ONLINE     0     0     0"
337185029Spjd  echo "            ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
338185029Spjd  echo "            ${disk0}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
339185029Spjd  echo "errors: No known data errors"
340185029Spjd)`
341185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
342185029Spjdexpect_ok ${ZPOOL} destroy ${name1}
343185029Spjdexpect_ok ${ZPOOL} import ${name0}
344185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
345185029Spjd
346185029Spjdexpect_ok ${ZPOOL} create ${name0} ${disk1} log mirror ${disk2} ${disk0}
347185029Spjdexpect_ok ${ZPOOL} offline ${name0} ${disk0}
348185029Spjdexpect_ok ${ZPOOL} export ${name0}
349185029Spjdexpect_ok ${ZPOOL} create ${name1} ${disk3} log mirror ${disk4} ${disk5}
350185029Spjdexp=`(
351185029Spjd  echo "invalid vdev specification"
352185029Spjd  echo "use '-f' to override the following errors:"
353185029Spjd  echo "${fdisk0} is part of potentially active pool '${name0}'"
354185029Spjd)`
355185029Spjdexpect "${exp}" ${ZPOOL} attach ${name1} ${disk2} ${disk0}
356185029Spjdexp=`(
357185029Spjd  echo "  pool: ${name1}"
358185029Spjd  echo " state: ONLINE"
359185029Spjd  echo " scrub: none requested"
360185029Spjd  echo "config:"
361185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
362185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
363185029Spjd  echo "          ${disk3}    ONLINE     0     0     0"
364185029Spjd  echo "        logs          ONLINE     0     0     0"
365185029Spjd  echo "          mirror      ONLINE     0     0     0"
366185029Spjd  echo "            ${disk4}  ONLINE     0     0     0"
367185029Spjd  echo "            ${disk5}  ONLINE     0     0     0"
368185029Spjd  echo "errors: No known data errors"
369185029Spjd)`
370185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
371185029Spjdexpect_ok ${ZPOOL} attach -f ${name1} ${disk4} ${disk0}
372185029Spjdwait_for_resilver ${name1}
373185029Spjdexp=`(
374185029Spjd  echo "  pool: ${name1}"
375185029Spjd  echo " state: ONLINE"
376185029Spjd  echo " scrub: resilver completed after [0-9]+h[0-9]+m with 0 errors on .*"
377185029Spjd  echo "config:"
378185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
379185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
380185029Spjd  echo "          ${disk3}    ONLINE     0     0     0"
381185029Spjd  echo "        logs          ONLINE     0     0     0"
382185029Spjd  echo "          mirror      ONLINE     0     0     0"
383185029Spjd  echo "            ${disk4}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
384185029Spjd  echo "            ${disk5}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
385185029Spjd  echo "            ${disk0}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
386185029Spjd  echo "errors: No known data errors"
387185029Spjd)`
388185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
389185029Spjdexpect_ok ${ZPOOL} destroy ${name1}
390185029Spjdexpect_ok ${ZPOOL} import ${name0}
391185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
392185029Spjd
393185029Spjdexpect_ok ${ZPOOL} create ${name0} ${disk1} cache ${disk0}
394185029Spjdexpect_ok ${ZPOOL} offline ${name0} ${disk0}
395185029Spjdexpect_ok ${ZPOOL} export ${name0}
396185029Spjdexpect_ok ${ZPOOL} create ${name1} ${disk2}
397185029Spjdexp=`(
398185029Spjd  echo "invalid vdev specification"
399185029Spjd  echo "use '-f' to override the following errors:"
400185029Spjd  echo "${fdisk0} is part of potentially active pool '${name0}'"
401185029Spjd)`
402185029Spjdadd_msg="# TODO It shouldn't be possible to use offlined cache vdevs."
403185029Spjdexpect "${exp}" ${ZPOOL} attach ${name1} ${disk2} ${disk0}
404185029Spjdexp=`(
405185029Spjd  echo "  pool: ${name1}"
406185029Spjd  echo " state: ONLINE"
407185029Spjd  echo " scrub: none requested"
408185029Spjd  echo "config:"
409185029Spjd  echo "        NAME        STATE   READ WRITE CKSUM"
410185029Spjd  echo "        ${name1}    ONLINE     0     0     0"
411185029Spjd  echo "          ${disk2}  ONLINE     0     0     0"
412185029Spjd  echo "errors: No known data errors"
413185029Spjd)`
414185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
415185029Spjdexpect_ok ${ZPOOL} attach -f ${name1} ${disk2} ${disk0}
416185029Spjdadd_msg=""
417185029Spjdwait_for_resilver ${name1}
418185029Spjdexp=`(
419185029Spjd  echo "  pool: ${name1}"
420185029Spjd  echo " state: ONLINE"
421185029Spjd  echo " scrub: resilver completed after [0-9]+h[0-9]+m with 0 errors on .*"
422185029Spjd  echo "config:"
423185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
424185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
425185029Spjd  echo "          mirror      ONLINE     0     0     0"
426185029Spjd  echo "            ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
427185029Spjd  echo "            ${disk0}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
428185029Spjd  echo "errors: No known data errors"
429185029Spjd)`
430185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
431185029Spjdexpect_ok ${ZPOOL} destroy ${name1}
432185029Spjdexpect_ok ${ZPOOL} import ${name0}
433185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
434185029Spjd
435185029Spjd
436185029Spjd
437185029Spjd
438185029Spjd
439185029Spjd
440185029Spjd
441185029Spjd
442185029Spjd
443185029Spjd
444185029Spjd
445185029Spjd
446185029Spjd
447185029Spjd
448185029Spjd
449185029Spjd
450185029Spjd
451185029Spjd
452185029Spjd
453185029Spjd
454185029Spjd
455185029Spjdexpect_ok ${ZPOOL} create ${name0} ${disk0}
456185029Spjdexpect_ok ${ZPOOL} create ${name1} ${disk1}
457185029Spjdexp=`(
458185029Spjd  echo "invalid vdev specification"
459185029Spjd  echo "use '-f' to override the following errors:"
460185029Spjd  echo "${fdisk0} is part of active pool '${name0}'"
461185029Spjd)`
462185029Spjdexpect "${exp}" ${ZPOOL} attach ${name1} ${disk2} ${disk0}
463185029Spjdexp=`(
464185029Spjd  echo "  pool: ${name1}"
465185029Spjd  echo " state: ONLINE"
466185029Spjd  echo " scrub: none requested"
467185029Spjd  echo "config:"
468185029Spjd  echo "        NAME        STATE   READ WRITE CKSUM"
469185029Spjd  echo "        ${name1}    ONLINE     0     0     0"
470185029Spjd  echo "          ${disk1}  ONLINE     0     0     0"
471185029Spjd  echo "errors: No known data errors"
472185029Spjd)`
473185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
474185029Spjdexp=`(
475185029Spjd  echo "invalid vdev specification"
476185029Spjd  echo "the following errors must be manually repaired:"
477185029Spjd  echo "${fdisk0} is part of active pool '${name0}'"
478185029Spjd)`
479185029Spjdexpect "${exp}" ${ZPOOL} attach -f ${name1} ${disk2} ${disk0}
480185029Spjdexp=`(
481185029Spjd  echo "  pool: ${name1}"
482185029Spjd  echo " state: ONLINE"
483185029Spjd  echo " scrub: none requested"
484185029Spjd  echo "config:"
485185029Spjd  echo "        NAME        STATE   READ WRITE CKSUM"
486185029Spjd  echo "        ${name1}    ONLINE     0     0     0"
487185029Spjd  echo "          ${disk1}  ONLINE     0     0     0"
488185029Spjd  echo "errors: No known data errors"
489185029Spjd)`
490185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
491185029Spjdexpect_ok ${ZPOOL} destroy ${name1}
492185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
493185029Spjd
494185029Spjdexpect_ok ${ZPOOL} create ${name0} mirror ${disk0} ${disk1}
495185029Spjdexpect_ok ${ZPOOL} create ${name1} mirror ${disk2} ${disk3}
496185029Spjdexp=`(
497185029Spjd  echo "invalid vdev specification"
498185029Spjd  echo "use '-f' to override the following errors:"
499185029Spjd  echo "${fdisk0} is part of active pool '${name0}'"
500185029Spjd)`
501185029Spjdexpect "${exp}" ${ZPOOL} attach ${name1} ${disk2} ${disk0}
502185029Spjdexp=`(
503185029Spjd  echo "  pool: ${name1}"
504185029Spjd  echo " state: ONLINE"
505185029Spjd  echo " scrub: none requested"
506185029Spjd  echo "config:"
507185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
508185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
509185029Spjd  echo "          mirror      ONLINE     0     0     0"
510185029Spjd  echo "            ${disk2}  ONLINE     0     0     0"
511185029Spjd  echo "            ${disk3}  ONLINE     0     0     0"
512185029Spjd  echo "errors: No known data errors"
513185029Spjd)`
514185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
515185029Spjdexp=`(
516185029Spjd  echo "invalid vdev specification"
517185029Spjd  echo "the following errors must be manually repaired:"
518185029Spjd  echo "${fdisk0} is part of active pool '${name0}'"
519185029Spjd)`
520185029Spjdexpect "${exp}" ${ZPOOL} attach -f ${name1} ${disk2} ${disk0}
521185029Spjdexp=`(
522185029Spjd  echo "  pool: ${name1}"
523185029Spjd  echo " state: ONLINE"
524185029Spjd  echo " scrub: none requested"
525185029Spjd  echo "config:"
526185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
527185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
528185029Spjd  echo "          mirror      ONLINE     0     0     0"
529185029Spjd  echo "            ${disk2}  ONLINE     0     0     0"
530185029Spjd  echo "            ${disk3}  ONLINE     0     0     0"
531185029Spjd  echo "errors: No known data errors"
532185029Spjd)`
533185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
534185029Spjdexpect_ok ${ZPOOL} destroy ${name1}
535185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
536185029Spjd
537185029Spjdexpect_ok ${ZPOOL} create ${name0} ${disk1} log ${disk0}
538185029Spjdexpect_ok ${ZPOOL} create ${name1} ${disk2} log ${disk3}
539185029Spjdexp=`(
540185029Spjd  echo "invalid vdev specification"
541185029Spjd  echo "use '-f' to override the following errors:"
542185029Spjd  echo "${fdisk0} is part of active pool '${name0}'"
543185029Spjd)`
544185029Spjdexpect "${exp}" ${ZPOOL} attach ${name1} ${disk3} ${disk0}
545185029Spjdexp=`(
546185029Spjd  echo "  pool: ${name1}"
547185029Spjd  echo " state: ONLINE"
548185029Spjd  echo " scrub: none requested"
549185029Spjd  echo "config:"
550185029Spjd  echo "        NAME        STATE   READ WRITE CKSUM"
551185029Spjd  echo "        ${name1}    ONLINE     0     0     0"
552185029Spjd  echo "          ${disk2}  ONLINE     0     0     0"
553185029Spjd  echo "        logs        ONLINE     0     0     0"
554185029Spjd  echo "          ${disk3}  ONLINE     0     0     0"
555185029Spjd  echo "errors: No known data errors"
556185029Spjd)`
557185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
558185029Spjdexp=`(
559185029Spjd  echo "invalid vdev specification"
560185029Spjd  echo "the following errors must be manually repaired:"
561185029Spjd  echo "${fdisk0} is part of active pool '${name0}'"
562185029Spjd)`
563185029Spjdexpect "${exp}" ${ZPOOL} attach -f ${name1} ${disk3} ${disk0}
564185029Spjdexp=`(
565185029Spjd  echo "  pool: ${name1}"
566185029Spjd  echo " state: ONLINE"
567185029Spjd  echo " scrub: none requested"
568185029Spjd  echo "config:"
569185029Spjd  echo "        NAME        STATE   READ WRITE CKSUM"
570185029Spjd  echo "        ${name1}    ONLINE     0     0     0"
571185029Spjd  echo "          ${disk2}  ONLINE     0     0     0"
572185029Spjd  echo "        logs        ONLINE     0     0     0"
573185029Spjd  echo "          ${disk3}  ONLINE     0     0     0"
574185029Spjd  echo "errors: No known data errors"
575185029Spjd)`
576185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
577185029Spjdexpect_ok ${ZPOOL} destroy ${name1}
578185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
579185029Spjd
580185029Spjdexpect_ok ${ZPOOL} create ${name0} ${disk1} log mirror ${disk2} ${disk0}
581185029Spjdexpect_ok ${ZPOOL} create ${name1} ${disk3} log mirror ${disk4} ${disk5}
582185029Spjdexp=`(
583185029Spjd  echo "invalid vdev specification"
584185029Spjd  echo "use '-f' to override the following errors:"
585185029Spjd  echo "${fdisk0} is part of active pool '${name0}'"
586185029Spjd)`
587185029Spjdexpect "${exp}" ${ZPOOL} attach ${name1} ${disk2} ${disk0}
588185029Spjdexp=`(
589185029Spjd  echo "  pool: ${name1}"
590185029Spjd  echo " state: ONLINE"
591185029Spjd  echo " scrub: none requested"
592185029Spjd  echo "config:"
593185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
594185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
595185029Spjd  echo "          ${disk3}    ONLINE     0     0     0"
596185029Spjd  echo "        logs          ONLINE     0     0     0"
597185029Spjd  echo "          mirror      ONLINE     0     0     0"
598185029Spjd  echo "            ${disk4}  ONLINE     0     0     0"
599185029Spjd  echo "            ${disk5}  ONLINE     0     0     0"
600185029Spjd  echo "errors: No known data errors"
601185029Spjd)`
602185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
603185029Spjdexp=`(
604185029Spjd  echo "invalid vdev specification"
605185029Spjd  echo "the following errors must be manually repaired:"
606185029Spjd  echo "${fdisk0} is part of active pool '${name0}'"
607185029Spjd)`
608185029Spjdexpect "${exp}" ${ZPOOL} attach -f ${name1} ${disk4} ${disk0}
609185029Spjdexp=`(
610185029Spjd  echo "  pool: ${name1}"
611185029Spjd  echo " state: ONLINE"
612185029Spjd  echo " scrub: none requested"
613185029Spjd  echo "config:"
614185029Spjd  echo "        NAME          STATE   READ WRITE CKSUM"
615185029Spjd  echo "        ${name1}      ONLINE     0     0     0"
616185029Spjd  echo "          ${disk3}    ONLINE     0     0     0"
617185029Spjd  echo "        logs          ONLINE     0     0     0"
618185029Spjd  echo "          mirror      ONLINE     0     0     0"
619185029Spjd  echo "            ${disk4}  ONLINE     0     0     0"
620185029Spjd  echo "            ${disk5}  ONLINE     0     0     0"
621185029Spjd  echo "errors: No known data errors"
622185029Spjd)`
623185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
624185029Spjdexpect_ok ${ZPOOL} destroy ${name1}
625185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
626185029Spjd
627185029Spjdexpect_ok ${ZPOOL} create ${name0} ${disk1} cache ${disk0}
628185029Spjdexpect_ok ${ZPOOL} create ${name1} ${disk2}
629185029Spjdexp=`(
630185029Spjd  echo "invalid vdev specification"
631185029Spjd  echo "use '-f' to override the following errors:"
632185029Spjd  echo "${fdisk0} is part of active pool '${name0}'"
633185029Spjd)`
634185029Spjdadd_msg="# TODO It shouldn't be possible to use offlined cache vdevs."
635185029Spjdexpect "${exp}" ${ZPOOL} attach ${name1} ${disk2} ${disk0}
636185029Spjdadd_msg=""
637185029Spjdexp=`(
638185029Spjd  echo "  pool: ${name1}"
639185029Spjd  echo " state: ONLINE"
640185029Spjd  echo " scrub: none requested"
641185029Spjd  echo "config:"
642185029Spjd  echo "        NAME        STATE   READ WRITE CKSUM"
643185029Spjd  echo "        ${name1}    ONLINE     0     0     0"
644185029Spjd  echo "          ${disk2}  ONLINE     0     0     0"
645185029Spjd  echo "errors: No known data errors"
646185029Spjd)`
647185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
648185029Spjdadd_msg="# TODO It shouldn't be possible to use offlined cache vdevs."
649185029Spjdexp=`(
650185029Spjd  echo "invalid vdev specification"
651185029Spjd  echo "the following errors must be manually repaired:"
652185029Spjd  echo "${fdisk0} is part of active pool '${name0}'"
653185029Spjd)`
654185029Spjdexpect "${exp}" ${ZPOOL} attach -f ${name1} ${disk2} ${disk0}
655185029Spjdadd_msg=""
656185029Spjdexp=`(
657185029Spjd  echo "  pool: ${name1}"
658185029Spjd  echo " state: ONLINE"
659185029Spjd  echo " scrub: none requested"
660185029Spjd  echo "config:"
661185029Spjd  echo "        NAME        STATE   READ WRITE CKSUM"
662185029Spjd  echo "        ${name1}    ONLINE     0     0     0"
663185029Spjd  echo "          ${disk2}  ONLINE     0     0     0"
664185029Spjd  echo "errors: No known data errors"
665185029Spjd)`
666185029Spjdexpect "${exp}" ${ZPOOL} status ${name1}
667185029Spjdexpect_ok ${ZPOOL} destroy ${name1}
668185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
669185029Spjd
670185029Spjddisks_destroy
671