Print this page
7290 ZFS test suite needs to control what utilities it can run
Reviewed by: Dan Kimmel <dan.kimmel@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>

*** 23,33 **** # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # ! # Copyright (c) 2013, 2015 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/redundancy/redundancy.cfg --- 23,33 ---- # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # ! # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/redundancy/redundancy.cfg
*** 37,47 **** destroy_pool $TESTPOOL fi typeset dir for dir in $TESTDIR $BASEDIR; do if [[ -d $dir ]]; then ! log_must $RM -rf $dir fi done } # --- 37,47 ---- destroy_pool $TESTPOOL fi typeset dir for dir in $TESTDIR $BASEDIR; do if [[ -d $dir ]]; then ! log_must rm -rf $dir fi done } #
*** 61,71 **** if ((value >= min)); then break fi done ! $ECHO $value } # # Record the directories construction and checksum all the files which reside # within the specified pool --- 61,71 ---- if ((value >= min)); then break fi done ! echo $value } # # Record the directories construction and checksum all the files which reside # within the specified pool
*** 77,96 **** { typeset pool=$1 typeset recordfile=$2 [[ -z $pool ]] && log_fail "No specified pool." ! [[ -f $recordfile ]] && log_must $RM -f $recordfile typeset mntpnt mntpnt=$(get_prop mountpoint $pool) ! log_must eval "$DU -a $mntpnt > $recordfile 2>&1" # # When the data was damaged, checksum is failing and return 1 # So, will not use log_must # ! $FIND $mntpnt -type f -exec $CKSUM {} + >> $recordfile 2>&1 } # # Create test pool and fill with files and directories. # --- 77,96 ---- { typeset pool=$1 typeset recordfile=$2 [[ -z $pool ]] && log_fail "No specified pool." ! [[ -f $recordfile ]] && log_must rm -f $recordfile typeset mntpnt mntpnt=$(get_prop mountpoint $pool) ! log_must eval "du -a $mntpnt > $recordfile 2>&1" # # When the data was damaged, checksum is failing and return 1 # So, will not use log_must # ! find $mntpnt -type f -exec cksum {} + >> $recordfile 2>&1 } # # Create test pool and fill with files and directories. #
*** 110,142 **** vdevs="$vdevs $BASEDIR/vdev$i" ((i += 1)) done if [[ ! -d $BASEDIR ]]; then ! log_must $MKDIR $BASEDIR fi if poolexists $pool ; then destroy_pool $pool fi ! log_must $MKFILE $MINVDEVSIZE $vdevs ! log_must $ZPOOL create -m $TESTDIR $pool $keyword $vdevs log_note "Filling up the filesystem ..." typeset -i ret=0 typeset -i i=0 typeset file=$TESTDIR/file ! while $TRUE ; do ! $FILE_WRITE -o create -f $file.$i \ -b $BLOCKSZ -c $NUM_WRITES ret=$? (( $ret != 0 )) && break (( i = i + 1 )) done ! (($ret != 28 )) && log_note "$FILE_WRITE return value($ret) is unexpected." record_data $TESTPOOL $PRE_RECORD_FILE } # --- 110,142 ---- vdevs="$vdevs $BASEDIR/vdev$i" ((i += 1)) done if [[ ! -d $BASEDIR ]]; then ! log_must mkdir $BASEDIR fi if poolexists $pool ; then destroy_pool $pool fi ! log_must mkfile $MINVDEVSIZE $vdevs ! log_must zpool create -m $TESTDIR $pool $keyword $vdevs log_note "Filling up the filesystem ..." typeset -i ret=0 typeset -i i=0 typeset file=$TESTDIR/file ! while true ; do ! file_write -o create -f $file.$i \ -b $BLOCKSZ -c $NUM_WRITES ret=$? (( $ret != 0 )) && break (( i = i + 1 )) done ! (($ret != 28 )) && log_note "file_write return value($ret) is unexpected." record_data $TESTPOOL $PRE_RECORD_FILE } #
*** 147,171 **** function is_healthy { typeset pool=$1 typeset healthy_output="pool '$pool' is healthy" ! typeset real_output=$($ZPOOL status -x $pool) if [[ "$real_output" == "$healthy_output" ]]; then return 0 else typeset -i ret ! $ZPOOL status -x $pool | $GREP "state:" | \ ! $GREP "FAULTED" >/dev/null 2>&1 ret=$? (( $ret == 0 )) && return 1 typeset l_scan typeset errnum ! l_scan=$($ZPOOL status -x $pool | $GREP "scan:") l_scan=${l_scan##*"with"} ! errnum=$($ECHO $l_scan | $AWK '{print $1}') return $errnum fi } --- 147,171 ---- function is_healthy { typeset pool=$1 typeset healthy_output="pool '$pool' is healthy" ! typeset real_output=$(zpool status -x $pool) if [[ "$real_output" == "$healthy_output" ]]; then return 0 else typeset -i ret ! zpool status -x $pool | grep "state:" | \ ! grep "FAULTED" >/dev/null 2>&1 ret=$? (( $ret == 0 )) && return 1 typeset l_scan typeset errnum ! l_scan=$(zpool status -x $pool | grep "scan:") l_scan=${l_scan##*"with"} ! errnum=$(echo $l_scan | awk '{print $1}') return $errnum fi }
*** 177,187 **** function is_data_valid { typeset pool=$1 record_data $pool $PST_RECORD_FILE ! if ! $DIFF $PRE_RECORD_FILE $PST_RECORD_FILE > /dev/null 2>&1; then return 1 fi return 0 } --- 177,187 ---- function is_data_valid { typeset pool=$1 record_data $pool $PST_RECORD_FILE ! if ! diff $PRE_RECORD_FILE $PST_RECORD_FILE > /dev/null 2>&1; then return 1 fi return 0 }
*** 195,218 **** function get_vdevs #pool cnt { typeset pool=$1 typeset -i cnt=$2 ! typeset all_devs=$($ZPOOL iostat -v $pool | $AWK '{print $1}'| \ ! $EGREP -v "^pool$|^capacity$|^mirror$|^raidz1$|^raidz2$|---" | \ ! $EGREP -v "/old$|^$pool$") typeset -i i=0 typeset vdevs while ((i < cnt)); do ! typeset dev=$($ECHO $all_devs | $AWK '{print $1}') eval all_devs=\${all_devs##*$dev} vdevs="$dev $vdevs" ((i += 1)) done ! $ECHO "$vdevs" } # # Synchronize all the data in pool # --- 195,218 ---- function get_vdevs #pool cnt { typeset pool=$1 typeset -i cnt=$2 ! typeset all_devs=$(zpool iostat -v $pool | awk '{print $1}'| \ ! egrep -v "^pool$|^capacity$|^mirror$|^raidz1$|^raidz2$|---" | \ ! egrep -v "/old$|^$pool$") typeset -i i=0 typeset vdevs while ((i < cnt)); do ! typeset dev=$(echo $all_devs | awk '{print $1}') eval all_devs=\${all_devs##*$dev} vdevs="$dev $vdevs" ((i += 1)) done ! echo "$vdevs" } # # Synchronize all the data in pool #
*** 220,243 **** # function sync_pool #pool { typeset pool=$1 ! log_must $SYNC ! log_must $SLEEP 2 # Flush all the pool data. typeset -i ret ! $ZPOOL scrub $pool >/dev/null 2>&1 ret=$? (( $ret != 0 )) && \ ! log_fail "$ZPOOL scrub $pool failed." while ! is_pool_scrubbed $pool; do if is_pool_resilvered $pool ; then log_fail "$pool should not be resilver completed." fi ! log_must $SLEEP 2 done } # # Create and replace the same name virtual device files --- 220,243 ---- # function sync_pool #pool { typeset pool=$1 ! log_must sync ! log_must sleep 2 # Flush all the pool data. typeset -i ret ! zpool scrub $pool >/dev/null 2>&1 ret=$? (( $ret != 0 )) && \ ! log_fail "zpool scrub $pool failed." while ! is_pool_scrubbed $pool; do if is_pool_resilvered $pool ; then log_fail "$pool should not be resilver completed." fi ! log_must sleep 2 done } # # Create and replace the same name virtual device files
*** 250,264 **** typeset pool=$1 shift typeset vdev for vdev in $@; do ! log_must $MKFILE $MINVDEVSIZE $vdev ! log_must $ZPOOL replace -f $pool $vdev $vdev while true; do if ! is_pool_resilvered $pool ; then ! log_must $SLEEP 2 else break fi done done --- 250,264 ---- typeset pool=$1 shift typeset vdev for vdev in $@; do ! log_must mkfile $MINVDEVSIZE $vdev ! log_must zpool replace -f $pool $vdev $vdev while true; do if ! is_pool_resilvered $pool ; then ! log_must sleep 2 else break fi done done
*** 282,297 **** vdevs=$(get_vdevs $pool $cnt) typeset dev if [[ -n $label ]]; then for dev in $vdevs; do ! $DD if=/dev/zero of=$dev seek=512 bs=1024 \ count=$bs_count conv=notrunc >/dev/null 2>&1 done else for dev in $vdevs; do ! $DD if=/dev/zero of=$dev bs=1024 count=$bs_count \ conv=notrunc >/dev/null 2>&1 done fi sync_pool $pool --- 282,297 ---- vdevs=$(get_vdevs $pool $cnt) typeset dev if [[ -n $label ]]; then for dev in $vdevs; do ! dd if=/dev/zero of=$dev seek=512 bs=1024 \ count=$bs_count conv=notrunc >/dev/null 2>&1 done else for dev in $vdevs; do ! dd if=/dev/zero of=$dev bs=1024 count=$bs_count \ conv=notrunc >/dev/null 2>&1 done fi sync_pool $pool
*** 304,314 **** # function clear_errors { typeset pool=$1 ! log_must $ZPOOL clear $pool if ! is_healthy $pool ; then log_note "$pool should be healthy." return 1 fi --- 304,314 ---- # function clear_errors { typeset pool=$1 ! log_must zpool clear $pool if ! is_healthy $pool ; then log_note "$pool should be healthy." return 1 fi
*** 331,341 **** typeset pool=$1 typeset -i cnt=$2 typeset vdevs vdevs=$(get_vdevs $pool $cnt) ! log_must $RM -f $vdevs sync_pool $pool } # --- 331,341 ---- typeset pool=$1 typeset -i cnt=$2 typeset vdevs vdevs=$(get_vdevs $pool $cnt) ! log_must rm -f $vdevs sync_pool $pool } #