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