1#!/bin/sh 2# $FreeBSD$ 3 4dir=`dirname $0` 5. ${dir}/../../misc.sh 6 7echo "1..27" 8 9disks_create 4 10names_create 1 11 12expect_ok ${ZPOOL} create ${name0} raidz1 ${disk0} ${disk1} ${disk2} 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 " raidz1 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 "errors: No known data errors" 37)` 38expect "${exp}" ${ZPOOL} status ${name0} 39expect_ok ${ZPOOL} replace ${name0} ${disk0} ${disk3} 40wait_for_resilver ${name0} 41exp=`( 42 echo " pool: ${name0}" 43 echo " state: ONLINE" 44 echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*" 45 echo "config:" 46 echo " NAME STATE READ WRITE CKSUM" 47 echo " ${name0} ONLINE 0 0 0" 48 echo " raidz1 ONLINE 0 0 0" 49 echo " ${disk3} ONLINE 0 0 0( [0-9.]+[A-Z] resilvered)?" 50 echo " ${disk1} ONLINE 0 0 0( [0-9.]+[A-Z] resilvered)?" 51 echo " ${disk2} ONLINE 0 0 0( [0-9.]+[A-Z] resilvered)?" 52 echo "errors: No known data errors" 53)` 54expect "${exp}" ${ZPOOL} status ${name0} 55expect_ok ${ZPOOL} destroy ${name0} 56expect_fl ${ZPOOL} status -x ${name0} 57 58expect_ok ${ZPOOL} create ${name0} raidz1 ${disk0} ${disk1} ${disk2} 59expect_ok ${ZPOOL} replace ${name0} ${disk1} ${disk3} 60wait_for_resilver ${name0} 61exp=`( 62 echo " pool: ${name0}" 63 echo " state: ONLINE" 64 echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*" 65 echo "config:" 66 echo " NAME STATE READ WRITE CKSUM" 67 echo " ${name0} ONLINE 0 0 0" 68 echo " raidz1 ONLINE 0 0 0" 69 echo " ${disk0} ONLINE 0 0 0( [0-9.]+[A-Z] resilvered)?" 70 echo " ${disk3} ONLINE 0 0 0( [0-9.]+[A-Z] resilvered)?" 71 echo " ${disk2} ONLINE 0 0 0( [0-9.]+[A-Z] resilvered)?" 72 echo "errors: No known data errors" 73)` 74expect "${exp}" ${ZPOOL} status ${name0} 75expect_ok ${ZPOOL} destroy ${name0} 76expect_fl ${ZPOOL} status -x ${name0} 77 78expect_ok ${ZPOOL} create ${name0} raidz1 ${disk0} ${disk1} ${disk2} 79expect_ok ${ZPOOL} export ${name0} 80dname0=${disk0} 81fdname0=${fdisk0} 82guid0=`get_guid ${fdisk0}` 83disk_destroy 0 84expect_ok ${ZPOOL} import ${import_flags} ${name0} 85exp=`( 86 echo " pool: ${name0}" 87 echo " state: DEGRADED" 88 echo " scrub: none requested" 89 echo "config:" 90 echo " NAME STATE READ WRITE CKSUM" 91 echo " ${name0} DEGRADED 0 0 0" 92 echo " raidz1 DEGRADED 0 0 0" 93 echo " ${guid0} REMOVED 0 0 0 was ${fdname0}" 94 echo " ${disk1} ONLINE 0 0 0" 95 echo " ${disk2} ONLINE 0 0 0" 96 echo "errors: No known data errors" 97)` 98expect "${exp}" ${ZPOOL} status ${name0} 99expect_ok ${ZPOOL} replace ${name0} ${dname0} ${disk3} 100wait_for_resilver ${name0} 101exp=`( 102 echo " pool: ${name0}" 103 echo " state: ONLINE" 104 echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*" 105 echo "config:" 106 echo " NAME STATE READ WRITE CKSUM" 107 echo " ${name0} ONLINE 0 0 0" 108 echo " raidz1 ONLINE 0 0 0" 109 echo " ${disk3} ONLINE 0 0 0( [0-9.]+[A-Z] resilvered)?" 110 echo " ${disk1} ONLINE 0 0 0( [0-9.]+[A-Z] resilvered)?" 111 echo " ${disk2} ONLINE 0 0 0( [0-9.]+[A-Z] resilvered)?" 112 echo "errors: No known data errors" 113)` 114expect "${exp}" ${ZPOOL} status ${name0} 115expect_ok ${ZPOOL} destroy ${name0} 116expect_fl ${ZPOOL} status -x ${name0} 117disk_create 0 ${dname0} 118 119expect_ok ${ZPOOL} create ${name0} raidz1 ${disk0} ${disk1} ${disk2} 120expect_ok ${ZPOOL} offline ${name0} ${disk1} 121expect_ok ${ZPOOL} replace ${name0} ${disk1} ${disk3} 122wait_for_resilver ${name0} 123exp=`( 124 echo " pool: ${name0}" 125 echo " state: ONLINE" 126 echo " scrub: (scrub|resilver) completed after [0-9]+h[0-9]+m with 0 errors on .*" 127 echo "config:" 128 echo " NAME STATE READ WRITE CKSUM" 129 echo " ${name0} ONLINE 0 0 0" 130 echo " raidz1 ONLINE 0 0 0" 131 echo " ${disk0} ONLINE 0 0 0( [0-9.]+[A-Z] resilvered)?" 132 echo " ${disk3} ONLINE 0 0 0( [0-9.]+[A-Z] resilvered)?" 133 echo " ${disk2} ONLINE 0 0 0( [0-9.]+[A-Z] resilvered)?" 134 echo "errors: No known data errors" 135)` 136expect "${exp}" ${ZPOOL} status ${name0} 137expect_ok ${ZPOOL} destroy ${name0} 138expect_fl ${ZPOOL} status -x ${name0} 139 140disks_destroy 141