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>
*** 24,34 ****
# Copyright 2008 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/replacement/replacement.cfg
--- 24,34 ----
# Copyright 2008 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/replacement/replacement.cfg
*** 48,66 ****
function cleanup
{
if [[ -n "$child_pids" ]]; then
for wait_pid in $child_pids
do
! $KILL $wait_pid
done
fi
if poolexists $TESTPOOL1; then
destroy_pool $TESTPOOL1
fi
! [[ -e $TESTDIR ]] && log_must $RM -rf $TESTDIR/*
}
log_assert "Replacing a disk during I/O completes."
options=""
--- 48,66 ----
function cleanup
{
if [[ -n "$child_pids" ]]; then
for wait_pid in $child_pids
do
! kill $wait_pid
done
fi
if poolexists $TESTPOOL1; then
destroy_pool $TESTPOOL1
fi
! [[ -e $TESTDIR ]] && log_must rm -rf $TESTDIR/*
}
log_assert "Replacing a disk during I/O completes."
options=""
*** 92,160 ****
typeset disk1=$2
typeset disk2=$3
typeset i=0
while [[ $i -lt $iters ]]; do
! log_note "Invoking $FILE_TRUNC with: $options_display"
! $FILE_TRUNC $options $TESTDIR/$TESTFILE.$i &
typeset pid=$!
! $SLEEP 1
! if ! $PS -p $pid > /dev/null 2>&1; then
! log_fail "$FILE_TRUNC $options $TESTDIR/$TESTFILE.$i"
fi
child_pids="$child_pids $pid"
((i = i + 1))
done
! log_must $ZPOOL replace $opt $TESTPOOL1 $disk1 $disk2
! $SLEEP 10
for wait_pid in $child_pids
do
! $KILL $wait_pid
done
child_pids=""
! log_must $ZPOOL export $TESTPOOL1
! log_must $ZPOOL import -d $TESTDIR $TESTPOOL1
! log_must $ZFS umount $TESTPOOL1/$TESTFS1
! log_must $ZDB -cdui $TESTPOOL1/$TESTFS1
! log_must $ZFS mount $TESTPOOL1/$TESTFS1
}
specials_list=""
i=0
while [[ $i != 2 ]]; do
! $MKFILE $MINVDEVSIZE $TESTDIR/$TESTFILE1.$i
specials_list="$specials_list $TESTDIR/$TESTFILE1.$i"
((i = i + 1))
done
#
# Create a replacement disk special file.
#
! $MKFILE $MINVDEVSIZE $TESTDIR/$REPLACEFILE
for type in "" "raidz" "raidz1" "mirror"; do
for op in "" "-f"; do
create_pool $TESTPOOL1 $type $specials_list
! log_must $ZFS create $TESTPOOL1/$TESTFS1
! log_must $ZFS set mountpoint=$TESTDIR1 $TESTPOOL1/$TESTFS1
replace_test "$opt" $TESTDIR/$TESTFILE1.1 $TESTDIR/$REPLACEFILE
! $ZPOOL iostat -v $TESTPOOL1 | grep "$TESTDIR/$REPLACEFILE"
if [[ $? -ne 0 ]]; then
log_fail "$REPLACEFILE is not present."
fi
destroy_pool $TESTPOOL1
! log_must $RM -rf /$TESTPOOL1
done
done
log_pass
--- 92,160 ----
typeset disk1=$2
typeset disk2=$3
typeset i=0
while [[ $i -lt $iters ]]; do
! log_note "Invoking file_trunc with: $options_display"
! file_trunc $options $TESTDIR/$TESTFILE.$i &
typeset pid=$!
! sleep 1
! if ! ps -p $pid > /dev/null 2>&1; then
! log_fail "file_trunc $options $TESTDIR/$TESTFILE.$i"
fi
child_pids="$child_pids $pid"
((i = i + 1))
done
! log_must zpool replace $opt $TESTPOOL1 $disk1 $disk2
! sleep 10
for wait_pid in $child_pids
do
! kill $wait_pid
done
child_pids=""
! log_must zpool export $TESTPOOL1
! log_must zpool import -d $TESTDIR $TESTPOOL1
! log_must zfs umount $TESTPOOL1/$TESTFS1
! log_must zdb -cdui $TESTPOOL1/$TESTFS1
! log_must zfs mount $TESTPOOL1/$TESTFS1
}
specials_list=""
i=0
while [[ $i != 2 ]]; do
! mkfile $MINVDEVSIZE $TESTDIR/$TESTFILE1.$i
specials_list="$specials_list $TESTDIR/$TESTFILE1.$i"
((i = i + 1))
done
#
# Create a replacement disk special file.
#
! mkfile $MINVDEVSIZE $TESTDIR/$REPLACEFILE
for type in "" "raidz" "raidz1" "mirror"; do
for op in "" "-f"; do
create_pool $TESTPOOL1 $type $specials_list
! log_must zfs create $TESTPOOL1/$TESTFS1
! log_must zfs set mountpoint=$TESTDIR1 $TESTPOOL1/$TESTFS1
replace_test "$opt" $TESTDIR/$TESTFILE1.1 $TESTDIR/$REPLACEFILE
! zpool iostat -v $TESTPOOL1 | grep "$TESTDIR/$REPLACEFILE"
if [[ $? -ne 0 ]]; then
log_fail "$REPLACEFILE is not present."
fi
destroy_pool $TESTPOOL1
! log_must rm -rf /$TESTPOOL1
done
done
log_pass