1185029Spjd#!/bin/sh
2185029Spjd# $FreeBSD$
3185029Spjd
4185029Spjddir=`dirname $0`
5185029Spjd. ${dir}/../../misc.sh
6185029Spjd
7185029Spjdecho "1..27"
8185029Spjd
9185029Spjddisks_create 3
10185029Spjdnames_create 1
11185029Spjd
12185029Spjdexpect_ok ${ZPOOL} create ${name0} mirror ${disk0} ${disk1}
13185029Spjdexpect_ok ${ZPOOL} export ${name0}
14185029Spjddname0=${disk0}
15185029Spjdfdname0=${fdisk0}
16185029Spjdguid0=`get_guid ${fdisk0}`
17185029Spjddisk_destroy 0
18185029Spjddisk_create 0 ${dname0}
19185029Spjdexpect_ok ${ZPOOL} import ${import_flags} ${name0}
20185029Spjdexp=`(
21185029Spjd  echo "  pool: ${name0}"
22185029Spjd  echo " state: DEGRADED"
23185029Spjd  echo "status: One or more devices could not be used because the label is missing or"
24185029Spjd  echo "      invalid.  Sufficient replicas exist for the pool to continue"
25185029Spjd  echo "      functioning in a degraded state."
26185029Spjd  echo "action: Replace the device using 'zpool replace'."
27185029Spjd  echo "   see: http://www.sun.com/msg/ZFS-8000-4J"
28185029Spjd  echo " scrub: none requested"
29185029Spjd  echo "config:"
30185029Spjd  echo "	NAME          STATE     READ WRITE CKSUM"
31185029Spjd  echo "	${name0}      DEGRADED     0     0     0"
32185029Spjd  echo "	  mirror      DEGRADED     0     0     0"
33185029Spjd  echo "	    ${guid0}  UNAVAIL      0     0     0 was ${fdname0}"
34185029Spjd  echo "	    ${disk1}  ONLINE       0     0     0"
35185029Spjd  echo "errors: No known data errors"
36185029Spjd)`
37185029Spjdexpect "${exp}" ${ZPOOL} status ${name0}
38185029Spjdexpect_ok ${ZPOOL} replace ${name0} ${disk0} ${disk2}
39185029Spjdwait_for_resilver ${name0}
40185029Spjdexp=`(
41185029Spjd  echo "  pool: ${name0}"
42185029Spjd  echo " state: ONLINE"
43185029Spjd  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
44185029Spjd  echo "config:"
45185029Spjd  echo "	NAME          STATE   READ WRITE CKSUM"
46185029Spjd  echo "	${name0}      ONLINE     0     0     0"
47185029Spjd  echo "	  mirror      ONLINE     0     0     0"
48185029Spjd  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
49185029Spjd  echo "	    ${disk1}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
50185029Spjd  echo "errors: No known data errors"
51185029Spjd)`
52185029Spjdexpect "${exp}" ${ZPOOL} status ${name0}
53185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
54185029Spjdexpect_fl ${ZPOOL} status -x ${name0}
55185029Spjd
56185029Spjdexpect_ok ${ZPOOL} create ${name0} mirror ${disk0} ${disk1}
57185029Spjdexpect_ok ${ZPOOL} replace ${name0} ${disk1} ${disk2}
58185029Spjdwait_for_resilver ${name0}
59185029Spjdexp=`(
60185029Spjd  echo "  pool: ${name0}"
61185029Spjd  echo " state: ONLINE"
62185029Spjd  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
63185029Spjd  echo "config:"
64185029Spjd  echo "	NAME          STATE   READ WRITE CKSUM"
65185029Spjd  echo "	${name0}      ONLINE     0     0     0"
66185029Spjd  echo "	  mirror      ONLINE     0     0     0"
67185029Spjd  echo "	    ${disk0}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
68185029Spjd  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
69185029Spjd  echo "errors: No known data errors"
70185029Spjd)`
71185029Spjdexpect "${exp}" ${ZPOOL} status ${name0}
72185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
73185029Spjdexpect_fl ${ZPOOL} status -x ${name0}
74185029Spjd
75185029Spjdexpect_ok ${ZPOOL} create ${name0} mirror ${disk0} ${disk1}
76185029Spjdexpect_ok ${ZPOOL} export ${name0}
77185029Spjddname0=${disk0}
78185029Spjdfdname0=${fdisk0}
79185029Spjdguid0=`get_guid ${fdisk0}`
80185029Spjddisk_destroy 0
81185029Spjdexpect_ok ${ZPOOL} import ${import_flags} ${name0}
82185029Spjdexp=`(
83185029Spjd  echo "  pool: ${name0}"
84185029Spjd  echo " state: DEGRADED"
85185029Spjd  echo " scrub: none requested"
86185029Spjd  echo "config:"
87185029Spjd  echo "	NAME           STATE     READ WRITE CKSUM"
88185029Spjd  echo "	${name0}       DEGRADED     0     0     0"
89185029Spjd  echo "	  mirror       DEGRADED     0     0     0"
90185029Spjd  echo "	    ${guid0}   REMOVED      0     0     0  was ${fdname0}"
91185029Spjd  echo "	    ${disk1}   ONLINE       0     0     0"
92185029Spjd  echo "errors: No known data errors"
93185029Spjd)`
94185029Spjdexpect "${exp}" ${ZPOOL} status ${name0}
95185029Spjdexpect_ok ${ZPOOL} replace ${name0} ${dname0} ${disk2}
96185029Spjdwait_for_resilver ${name0}
97185029Spjdexp=`(
98185029Spjd  echo "  pool: ${name0}"
99185029Spjd  echo " state: ONLINE"
100185029Spjd  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
101185029Spjd  echo "config:"
102185029Spjd  echo "	NAME          STATE   READ WRITE CKSUM"
103185029Spjd  echo "	${name0}      ONLINE     0     0     0"
104185029Spjd  echo "	  mirror      ONLINE     0     0     0"
105185029Spjd  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
106185029Spjd  echo "	    ${disk1}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
107185029Spjd  echo "errors: No known data errors"
108185029Spjd)`
109185029Spjdexpect "${exp}" ${ZPOOL} status ${name0}
110185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
111185029Spjdexpect_fl ${ZPOOL} status -x ${name0}
112185029Spjddisk_create 0 ${dname0}
113185029Spjd
114185029Spjdexpect_ok ${ZPOOL} create ${name0} mirror ${disk0} ${disk1}
115185029Spjdexpect_ok ${ZPOOL} offline ${name0} ${disk1}
116185029Spjdexpect_ok ${ZPOOL} replace ${name0} ${disk1} ${disk2}
117185029Spjdwait_for_resilver ${name0}
118185029Spjdexp=`(
119185029Spjd  echo "  pool: ${name0}"
120185029Spjd  echo " state: ONLINE"
121185029Spjd  echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*"
122185029Spjd  echo "config:"
123185029Spjd  echo "	NAME          STATE   READ WRITE CKSUM"
124185029Spjd  echo "	${name0}      ONLINE     0     0     0"
125185029Spjd  echo "	  mirror      ONLINE     0     0     0"
126185029Spjd  echo "	    ${disk0}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
127185029Spjd  echo "	    ${disk2}  ONLINE     0     0     0(  [0-9.]+[A-Z] resilvered)?"
128185029Spjd  echo "errors: No known data errors"
129185029Spjd)`
130185029Spjdexpect "${exp}" ${ZPOOL} status ${name0}
131185029Spjdexpect_ok ${ZPOOL} destroy ${name0}
132185029Spjdexpect_fl ${ZPOOL} status -x ${name0}
133185029Spjd
134185029Spjddisks_destroy
135