1# vim: filetype=sh 2# Common routines for replacement tests. 3 4# $FreeBSD$ 5 6function check_vdev_action # <action> <expect> <opt> <disk1> [disk2] 7{ 8 typeset action=$1 9 typeset expect=$2 10 typeset opt=$3 11 typeset disk1="$4" 12 typeset disk2="$5" 13 14 busy_path $TESTDIR 15 $expect $ZPOOL $action $opt $TESTPOOL $disk1 $disk2 16 reap_children 17 log_must $ZPOOL export $TESTPOOL 18 log_must $ZPOOL import $TESTPOOL 19 log_must $ZFS umount $TESTPOOL/$TESTFS 20 log_must $ZDB -cdui $TESTPOOL/$TESTFS 21 log_must $ZFS mount $TESTPOOL/$TESTFS 22} 23 24function pool_action # <tvd_type> <action> <actionexpect> <existexpect> 25{ 26 typeset tvd_type=$1 27 typeset action=$2 28 typeset actionexpect=$3 29 typeset existexpect=$4 30 31 typeset disk=${disk_array[3]} 32 typeset short=${disk##/dev/} 33 34 for opt in "" "-f"; do 35 [ "$action" = "detach" -a "$opt" = "-f" ] && continue 36 create_pool $TESTPOOL $tvd_type ${disk_array[@]:0:3} 37 log_must $ZFS create $TESTPOOL/$TESTFS 38 log_must $ZFS set mountpoint=$TESTDIR $TESTPOOL/$TESTFS 39 check_vdev_action $action $actionexpect "$opt" \ 40 ${disk_array[0]} $disk 41 42 $existexpect eval "$ZPOOL iostat -v $TESTPOOL | $GREP -q $short" 43 destroy_pool $TESTPOOL 44 done 45} 46 47function replacement_cleanup 48{ 49 poolexists $TESTPOOL && log_must $ZPOOL status $TESTPOOL 50 reap_children 51} 52