xref: /freebsd/tools/regression/zfs/zpool/create/option-f_inuse.t (revision 924226fba12cc9a228c73b956e1b7fa24c60b055)
1#!/bin/sh
2# $FreeBSD$
3
4dir=`dirname $0`
5. ${dir}/../../misc.sh
6
7echo "1..146"
8
9disks_create 7
10names_create 2
11
12expect_ok ${ZPOOL} create ${name0} ${disk0}
13expect_ok ${ZPOOL} export ${name0}
14exp=`(
15  echo "invalid vdev specification"
16  echo "use '-f' to override the following errors:"
17  echo "${fdisk0} is part of exported pool '${name0}'"
18)`
19expect "${exp}" ${ZPOOL} create ${name1} ${disk0}
20expect_fl ${ZPOOL} status -x ${name1}
21expect_ok ${ZPOOL} create -f ${name1} ${disk0}
22expect_ok ${ZPOOL} status -x ${name1}
23expect_ok ${ZPOOL} destroy ${name1}
24
25expect_ok ${ZPOOL} create ${name0} mirror ${disk0} ${disk1}
26expect_ok ${ZPOOL} export ${name0}
27exp=`(
28  echo "invalid vdev specification"
29  echo "use '-f' to override the following errors:"
30  echo "${fdisk0} is part of exported pool '${name0}'"
31)`
32expect "${exp}" ${ZPOOL} create ${name1} mirror ${disk0} ${disk1}
33expect_fl ${ZPOOL} status -x ${name1}
34expect_ok ${ZPOOL} create -f ${name1} mirror ${disk0} ${disk1}
35expect_ok ${ZPOOL} status -x ${name1}
36expect_ok ${ZPOOL} destroy ${name1}
37
38expect_ok ${ZPOOL} create ${name0} raidz1 ${disk0} ${disk1} ${disk2}
39expect_ok ${ZPOOL} export ${name0}
40exp=`(
41  echo "invalid vdev specification"
42  echo "use '-f' to override the following errors:"
43  echo "${fdisk0} is part of exported pool '${name0}'"
44)`
45expect "${exp}" ${ZPOOL} create ${name1} raidz1 ${disk0} ${disk1} ${disk2}
46expect_fl ${ZPOOL} status -x ${name1}
47expect_ok ${ZPOOL} create -f ${name1} raidz1 ${disk0} ${disk1} ${disk2}
48expect_ok ${ZPOOL} status -x ${name1}
49expect_ok ${ZPOOL} destroy ${name1}
50
51expect_ok ${ZPOOL} create ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
52expect_ok ${ZPOOL} export ${name0}
53exp=`(
54  echo "invalid vdev specification"
55  echo "use '-f' to override the following errors:"
56  echo "${fdisk0} is part of exported pool '${name0}'"
57)`
58expect "${exp}" ${ZPOOL} create ${name1} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
59expect_fl ${ZPOOL} status -x ${name1}
60expect_ok ${ZPOOL} create -f ${name1} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
61expect_ok ${ZPOOL} status -x ${name1}
62expect_ok ${ZPOOL} destroy ${name1}
63
64expect_ok ${ZPOOL} create ${name0} ${disk0} log ${disk1}
65expect_ok ${ZPOOL} export ${name0}
66exp=`(
67  echo "invalid vdev specification"
68  echo "use '-f' to override the following errors:"
69  echo "${fdisk0} is part of exported pool '${name0}'"
70)`
71expect "${exp}" ${ZPOOL} create ${name1} ${disk0} log ${disk1}
72expect_fl ${ZPOOL} status -x ${name1}
73expect_ok ${ZPOOL} create -f ${name1} ${disk0} log ${disk1}
74expect_ok ${ZPOOL} status -x ${name1}
75expect_ok ${ZPOOL} destroy ${name1}
76
77expect_ok ${ZPOOL} create ${name0} ${disk0} log mirror ${disk1} ${disk2}
78expect_ok ${ZPOOL} export ${name0}
79exp=`(
80  echo "invalid vdev specification"
81  echo "use '-f' to override the following errors:"
82  echo "${fdisk0} is part of exported pool '${name0}'"
83)`
84expect "${exp}" ${ZPOOL} create ${name1} ${disk0} log mirror ${disk1} ${disk2}
85expect_fl ${ZPOOL} status -x ${name1}
86expect_ok ${ZPOOL} create -f ${name1} ${disk0} log mirror ${disk1} ${disk2}
87expect_ok ${ZPOOL} status -x ${name1}
88expect_ok ${ZPOOL} destroy ${name1}
89
90expect_ok ${ZPOOL} create ${name0} ${disk0} cache ${disk1}
91expect_ok ${ZPOOL} export ${name0}
92exp=`(
93  echo "invalid vdev specification"
94  echo "use '-f' to override the following errors:"
95  echo "${fdisk0} is part of exported pool '${name0}'"
96)`
97expect "${exp}" ${ZPOOL} create ${name1} ${disk0} cache ${disk1}
98expect_fl ${ZPOOL} status -x ${name1}
99expect_ok ${ZPOOL} create -f ${name1} ${disk0} cache ${disk1}
100expect_ok ${ZPOOL} status -x ${name1}
101expect_ok ${ZPOOL} destroy ${name1}
102
103expect_ok ${ZPOOL} create ${name0} mirror ${disk0} ${disk1}
104expect_ok ${ZPOOL} offline ${name0} ${disk1}
105expect_ok ${ZPOOL} export ${name0}
106exp=`(
107  echo "invalid vdev specification"
108  echo "use '-f' to override the following errors:"
109  echo "${fdisk1} is part of potentially active pool '${name0}'"
110)`
111expect "${exp}" ${ZPOOL} create ${name1} mirror ${disk1} ${disk2}
112expect_fl ${ZPOOL} status -x ${name1}
113expect_ok ${ZPOOL} create -f ${name1} mirror ${disk1} ${disk2}
114expect_ok ${ZPOOL} status -x ${name1}
115expect_ok ${ZPOOL} destroy ${name1}
116expect_ok ${ZPOOL} import ${name0}
117expect_ok ${ZPOOL} destroy ${name0}
118
119expect_ok ${ZPOOL} create ${name0} raidz1 ${disk0} ${disk1} ${disk2}
120expect_ok ${ZPOOL} offline ${name0} ${disk2}
121expect_ok ${ZPOOL} export ${name0}
122exp=`(
123  echo "invalid vdev specification"
124  echo "use '-f' to override the following errors:"
125  echo "${fdisk2} is part of potentially active pool '${name0}'"
126)`
127expect "${exp}" ${ZPOOL} create ${name1} raidz1 ${disk2} ${disk3} ${disk4}
128expect_fl ${ZPOOL} status -x ${name1}
129expect_ok ${ZPOOL} create -f ${name1} raidz1 ${disk2} ${disk3} ${disk4}
130expect_ok ${ZPOOL} status -x ${name1}
131expect_ok ${ZPOOL} destroy ${name1}
132expect_ok ${ZPOOL} import ${name0}
133expect_ok ${ZPOOL} destroy ${name0}
134
135expect_ok ${ZPOOL} create ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
136expect_ok ${ZPOOL} offline ${name0} ${disk3}
137expect_ok ${ZPOOL} export ${name0}
138exp=`(
139  echo "invalid vdev specification"
140  echo "use '-f' to override the following errors:"
141  echo "${fdisk3} is part of potentially active pool '${name0}'"
142)`
143expect "${exp}" ${ZPOOL} create ${name1} raidz2 ${disk3} ${disk4} ${disk5} ${disk6}
144expect_fl ${ZPOOL} status -x ${name1}
145expect_ok ${ZPOOL} create -f ${name1} raidz2 ${disk3} ${disk4} ${disk5} ${disk6}
146expect_ok ${ZPOOL} status -x ${name1}
147expect_ok ${ZPOOL} destroy ${name1}
148expect_ok ${ZPOOL} import ${name0}
149expect_ok ${ZPOOL} destroy ${name0}
150
151expect_ok ${ZPOOL} create ${name0} ${disk0} log mirror ${disk1} ${disk2}
152expect_ok ${ZPOOL} offline ${name0} ${disk2}
153expect_ok ${ZPOOL} export ${name0}
154exp=`(
155  echo "invalid vdev specification"
156  echo "use '-f' to override the following errors:"
157  echo "${fdisk2} is part of potentially active pool '${name0}'"
158)`
159expect "${exp}" ${ZPOOL} create ${name1} ${disk3} log mirror ${disk2} ${disk4}
160expect_fl ${ZPOOL} status -x ${name1}
161expect_ok ${ZPOOL} create -f ${name1} ${disk3} log mirror ${disk2} ${disk4}
162expect_ok ${ZPOOL} status -x ${name1}
163expect_ok ${ZPOOL} destroy ${name1}
164expect_ok ${ZPOOL} import ${name0}
165expect_ok ${ZPOOL} destroy ${name0}
166
167expect_ok ${ZPOOL} create ${name0} ${disk0} cache ${disk1}
168expect_ok ${ZPOOL} offline ${name0} ${disk1}
169expect_ok ${ZPOOL} export ${name0}
170exp=`(
171  echo "invalid vdev specification"
172  echo "use '-f' to override the following errors:"
173  echo "${fdisk1} is part of potentially active pool '${name0}'"
174)`
175add_msg="# TODO It shouldn't be possible to use offlined cache vdev."
176expect "${exp}" ${ZPOOL} create ${name1} ${disk2} cache ${disk1}
177expect_fl ${ZPOOL} status -x ${name1}
178expect_ok ${ZPOOL} create -f ${name1} ${disk2} cache ${disk1}
179add_msg=""
180expect_ok ${ZPOOL} status -x ${name1}
181expect_ok ${ZPOOL} destroy ${name1}
182expect_ok ${ZPOOL} import ${name0}
183expect_ok ${ZPOOL} destroy ${name0}
184
185expect_ok ${ZPOOL} create ${name0} mirror ${disk0} ${disk1}
186expect_ok ${ZPOOL} offline ${name0} ${disk1}
187exp=`(
188  echo "invalid vdev specification"
189  echo "use '-f' to override the following errors:"
190  echo "${fdisk1} is part of active pool '${name0}'"
191)`
192expect "${exp}" ${ZPOOL} create ${name1} mirror ${disk1} ${disk2}
193expect_fl ${ZPOOL} status -x ${name1}
194exp=`(
195  echo "invalid vdev specification"
196  echo "the following errors must be manually repaired:"
197  echo "${fdisk1} is part of active pool '${name0}'"
198)`
199expect "${exp}" ${ZPOOL} create -f ${name1} mirror ${disk1} ${disk2}
200expect_fl ${ZPOOL} status -x ${name1}
201expect_ok ${ZPOOL} online ${name0} ${disk1}
202expect_ok ${ZPOOL} destroy ${name0}
203
204expect_ok ${ZPOOL} create ${name0} raidz1 ${disk0} ${disk1} ${disk2}
205expect_ok ${ZPOOL} offline ${name0} ${disk2}
206exp=`(
207  echo "invalid vdev specification"
208  echo "use '-f' to override the following errors:"
209  echo "${fdisk2} is part of active pool '${name0}'"
210)`
211expect "${exp}" ${ZPOOL} create ${name1} raidz1 ${disk2} ${disk3} ${disk4}
212expect_fl ${ZPOOL} status -x ${name1}
213exp=`(
214  echo "invalid vdev specification"
215  echo "the following errors must be manually repaired:"
216  echo "${fdisk2} is part of active pool '${name0}'"
217)`
218expect "${exp}" ${ZPOOL} create -f ${name1} raidz1 ${disk2} ${disk3} ${disk4}
219expect_fl ${ZPOOL} status -x ${name1}
220expect_ok ${ZPOOL} online ${name0} ${disk2}
221expect_ok ${ZPOOL} destroy ${name0}
222
223expect_ok ${ZPOOL} create ${name0} raidz2 ${disk0} ${disk1} ${disk2} ${disk3}
224expect_ok ${ZPOOL} offline ${name0} ${disk3}
225exp=`(
226  echo "invalid vdev specification"
227  echo "use '-f' to override the following errors:"
228  echo "${fdisk3} is part of active pool '${name0}'"
229)`
230expect "${exp}" ${ZPOOL} create ${name1} raidz2 ${disk3} ${disk4} ${disk5} ${disk6}
231expect_fl ${ZPOOL} status -x ${name1}
232exp=`(
233  echo "invalid vdev specification"
234  echo "the following errors must be manually repaired:"
235  echo "${fdisk3} is part of active pool '${name0}'"
236)`
237expect "${exp}" ${ZPOOL} create -f ${name1} raidz2 ${disk3} ${disk4} ${disk5} ${disk6}
238expect_fl ${ZPOOL} status -x ${name1}
239expect_ok ${ZPOOL} online ${name0} ${disk3}
240expect_ok ${ZPOOL} destroy ${name0}
241
242expect_ok ${ZPOOL} create ${name0} ${disk0} log mirror ${disk1} ${disk2}
243expect_ok ${ZPOOL} offline ${name0} ${disk2}
244exp=`(
245  echo "invalid vdev specification"
246  echo "use '-f' to override the following errors:"
247  echo "${fdisk2} is part of active pool '${name0}'"
248)`
249expect "${exp}" ${ZPOOL} create ${name1} ${disk3} log mirror ${disk2} ${disk4}
250expect_fl ${ZPOOL} status -x ${name1}
251exp=`(
252  echo "invalid vdev specification"
253  echo "the following errors must be manually repaired:"
254  echo "${fdisk2} is part of active pool '${name0}'"
255)`
256expect "${exp}" ${ZPOOL} create -f ${name1} ${disk3} log mirror ${disk2} ${disk4}
257expect_fl ${ZPOOL} status -x ${name1}
258expect_ok ${ZPOOL} online ${name0} ${disk2}
259expect_ok ${ZPOOL} destroy ${name0}
260
261expect_ok ${ZPOOL} create ${name0} ${disk0} cache ${disk1}
262expect_ok ${ZPOOL} offline ${name0} ${disk1}
263exp=`(
264  echo "invalid vdev specification"
265  echo "use '-f' to override the following errors:"
266  echo "${fdisk1} is part of active pool '${name0}'"
267)`
268add_msg="# TODO It reports that ${fdisk1} is part of unknown pool."
269expect "${exp}" ${ZPOOL} create ${name1} ${disk2} cache ${disk1}
270add_msg=""
271expect_fl ${ZPOOL} status -x ${name1}
272exp=`(
273  echo "invalid vdev specification"
274  echo "the following errors must be manually repaired:"
275  echo "${fdisk1} is part of active pool '${name0}'"
276)`
277add_msg="# TODO It reports that ${fdisk1} is used twice."
278expect "${exp}" ${ZPOOL} create -f ${name1} ${disk2} cache ${disk1}
279add_msg=""
280expect_fl ${ZPOOL} status -x ${name1}
281expect_ok ${ZPOOL} online ${name0} ${disk1}
282expect_ok ${ZPOOL} destroy ${name0}
283
284expect_ok ${ZPOOL} create ${name0} ${disk0}
285expect_ok ${ZPOOL} export ${name0}
286exp=`(
287  echo "invalid vdev specification"
288  echo "use '-f' to override the following errors:"
289  echo "${fdisk0} is part of exported pool '${name0}'"
290)`
291expect "${exp}" ${ZPOOL} create ${name0} ${disk0}
292expect_fl ${ZPOOL} status -x ${name0}
293expect_ok ${ZPOOL} create -f ${name0} ${disk0}
294expect_ok ${ZPOOL} status -x ${name0}
295expect_ok ${ZPOOL} destroy ${name0}
296
297disks_destroy
298