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
}
#