160107Sobrien#!/bin/sh
216877Ssos# $FreeBSD: releng/11.0/tools/regression/zfs/zpool/replace/log.t 185029 2008-11-17 20:49:29Z pjd $
316877Ssos
416877Ssosdir=`dirname $0`
516877Ssos. ${dir}/../../misc.sh
616877Ssos
716877Ssosecho "1..27"
816877Ssos
916877Ssosdisks_create 4
1016877Ssosnames_create 1
1116877Ssos
1216877Ssosexpect_ok ${ZPOOL} create ${name0} ${disk0} log mirror ${disk1} ${disk2}
1316877Ssosexpect_ok ${ZPOOL} export ${name0}
1416877Ssosdname1=${disk1}
1516877Ssosfdname1=${fdisk1}
1616877Ssosguid1=`get_guid ${fdisk1}`
1716877Ssosdisk_destroy 1
1816877Ssosdisk_create 1 ${dname1}
19117271Sacheexpect_ok ${ZPOOL} import ${import_flags} ${name0}
2016877Ssosexp=`(
2116877Ssos  echo "  pool: ${name0}"
2216877Ssos  echo " state: DEGRADED"
2316877Ssos  echo "status: One or more devices could not be used because the label is missing or"
2416877Ssos  echo "      invalid.  Sufficient replicas exist for the pool to continue"
2516877Ssos  echo "      functioning in a degraded state."
2616877Ssos  echo "action: Replace the device using 'zpool replace'."
2716877Ssos  echo "   see: http://www.sun.com/msg/ZFS-8000-4J"
2816877Ssos  echo " scrub: none requested"
2916877Ssos  echo "config:"
3016877Ssos  echo "	NAME          STATE     READ WRITE CKSUM"
3116877Ssos  echo "	${name0}      DEGRADED     0     0     0"
3216877Ssos  echo "	  ${disk0}    ONLINE       0     0     0"
3316877Ssos  echo "	logs          DEGRADED     0     0     0"
3416877Ssos  echo "	  mirror      DEGRADED     0     0     0"
3516877Ssos  echo "	    ${guid1}  UNAVAIL      0     0     0 was ${fdname1}"
3616877Ssos  echo "	    ${disk2}  ONLINE       0     0     0"
3716877Ssos  echo "errors: No known data errors"
3816877Ssos)`
3916877Ssosadd_msg="# TODO Sun CR 6710376, Lustre bug 16912"
4016877Ssosexpect "${exp}" ${ZPOOL} status ${name0}
4116877Ssosadd_msg=""
4216877Ssosexpect_ok ${ZPOOL} replace ${name0} ${disk1} ${disk3}
4316877Ssoswait_for_resilver ${name0}
4416877Ssosexp=`(
4516877Ssos  echo "  pool: ${name0}"
4616877Ssos  echo " state: ONLINE"
4716877Ssos  echo " scrub: resilver completed after [0-9]+h[0-9]+m with 0 errors on .*"
4816877Ssos  echo "config:"
4916877Ssos  echo "	NAME          STATE   READ WRITE CKSUM"
5016877Ssos  echo "	${name0}      ONLINE     0     0     0"
5116877Ssos  echo "	  ${disk0}    ONLINE     0     0     0"
5216877Ssos  echo "	logs          ONLINE     0     0     0"
5316877Ssos  echo "	  mirror      ONLINE     0     0     0"
5416877Ssos  echo "	    ${disk3}  ONLINE     0     0     0"
5516877Ssos  echo "	    ${disk2}  ONLINE     0     0     0"
5616877Ssos  echo "errors: No known data errors"
5716877Ssos)`
5816877Ssosexpect "${exp}" ${ZPOOL} status ${name0}
5938140Syokotaexpect_ok ${ZPOOL} destroy ${name0}
6016877Ssosexpect_fl ${ZPOOL} status -x ${name0}
6116877Ssos
6216877Ssosexpect_ok ${ZPOOL} create ${name0} ${disk0} log mirror ${disk1} ${disk2}
6332822Syokotaexpect_ok ${ZPOOL} replace ${name0} ${disk2} ${disk3}
6416877Ssoswait_for_resilver ${name0}
6516877Ssosexp=`(
6616877Ssos  echo "  pool: ${name0}"
6716877Ssos  echo " state: ONLINE"
6816877Ssos  echo " scrub: resilver completed after [0-9]+h[0-9]+m with 0 errors on .*"
6916877Ssos  echo "config:"
7016877Ssos  echo "	NAME          STATE   READ WRITE CKSUM"
7116877Ssos  echo "	${name0}      ONLINE     0     0     0"
7216877Ssos  echo "	  ${disk0}    ONLINE     0     0     0"
7316877Ssos  echo "	logs          ONLINE     0     0     0"
7416877Ssos  echo "	  mirror      ONLINE     0     0     0"
7516877Ssos  echo "	    ${disk1}  ONLINE     0     0     0"
7616877Ssos  echo "	    ${disk3}  ONLINE     0     0     0"
7716877Ssos  echo "errors: No known data errors"
7816877Ssos)`
7916877Ssosexpect "${exp}" ${ZPOOL} status ${name0}
8016877Ssosexpect_ok ${ZPOOL} destroy ${name0}
8116877Ssosexpect_fl ${ZPOOL} status -x ${name0}
8216877Ssos
8316877Ssosexpect_ok ${ZPOOL} create ${name0} ${disk0} log mirror ${disk1} ${disk2}
8416877Ssosexpect_ok ${ZPOOL} export ${name0}
8516877Ssosdname1=${disk1}
8616877Ssosfdname1=${fdisk1}
8716877Ssosguid1=`get_guid ${fdisk1}`
8816877Ssosdisk_destroy 1
8916877Ssosexpect_ok ${ZPOOL} import ${import_flags} ${name0}
9016877Ssosexp=`(
9116877Ssos  echo "  pool: ${name0}"
9216877Ssos  echo " state: DEGRADED"
9316877Ssos  echo "status: One or more devices could not be opened.  Sufficient replicas exist for"
9416877Ssos  echo "      the pool to continue functioning in a degraded state."
9518194Ssos  echo "action: Attach the missing device and online it using 'zpool online'."
9616877Ssos  echo "   see: http://www.sun.com/msg/ZFS-8000-2Q"
9716877Ssos  echo " scrub: none requested"
9874119Sache  echo "config:"
9916877Ssos  echo "	NAME           STATE     READ WRITE CKSUM"
10016877Ssos  echo "	${name0}       DEGRADED     0     0     0"
10116877Ssos  echo "	  ${disk0}     ONLINE       0     0     0"
10216877Ssos  echo "	logs           DEGRADED     0     0     0"
10316877Ssos  echo "	  mirror       DEGRADED     0     0     0"
10416877Ssos  echo "	    ${guid1}   UNAVAIL      0     0     0  was ${fdname1}"
10516877Ssos  echo "	    ${disk2}   ONLINE       0     0     0"
10616877Ssos  echo "errors: No known data errors"
10716877Ssos)`
10874119Sacheexpect "${exp}" ${ZPOOL} status ${name0}
10916877Ssosexpect_ok ${ZPOOL} replace ${name0} ${dname1} ${disk3}
11043334Syokotawait_for_resilver ${name0}
11143334Syokotaexp=`(
11243334Syokota  echo "  pool: ${name0}"
11343334Syokota  echo " state: ONLINE"
11443334Syokota  echo " scrub: resilver completed after [0-9]+h[0-9]+m with 0 errors on .*"
115  echo "config:"
116  echo "	NAME          STATE   READ WRITE CKSUM"
117  echo "	${name0}      ONLINE     0     0     0"
118  echo "	  ${disk0}    ONLINE     0     0     0"
119  echo "	logs          ONLINE     0     0     0"
120  echo "	  mirror      ONLINE     0     0     0"
121  echo "	    ${disk3}  ONLINE     0     0     0"
122  echo "	    ${disk2}  ONLINE     0     0     0"
123  echo "errors: No known data errors"
124)`
125expect "${exp}" ${ZPOOL} status ${name0}
126expect_ok ${ZPOOL} destroy ${name0}
127expect_fl ${ZPOOL} status -x ${name0}
128disk_create 1 ${dname1}
129
130expect_ok ${ZPOOL} create ${name0} ${disk0} log mirror ${disk1} ${disk2}
131expect_ok ${ZPOOL} offline ${name0} ${disk1}
132expect_ok ${ZPOOL} replace ${name0} ${disk1} ${disk3}
133wait_for_resilver ${name0}
134exp=`(
135  echo "  pool: ${name0}"
136  echo " state: ONLINE"
137  echo " scrub: resilver completed after [0-9]+h[0-9]+m with 0 errors on .*"
138  echo "config:"
139  echo "	NAME          STATE   READ WRITE CKSUM"
140  echo "	${name0}      ONLINE     0     0     0"
141  echo "	  ${disk0}    ONLINE     0     0     0"
142  echo "	logs          ONLINE     0     0     0"
143  echo "	  mirror      ONLINE     0     0     0"
144  echo "	    ${disk3}  ONLINE     0     0     0"
145  echo "	    ${disk2}  ONLINE     0     0     0"
146  echo "errors: No known data errors"
147)`
148expect "${exp}" ${ZPOOL} status ${name0}
149expect_ok ${ZPOOL} destroy ${name0}
150expect_fl ${ZPOOL} status -x ${name0}
151
152disks_destroy
153