mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-24 19:28:53 +03:00
OpenZFS 7290 - ZFS test suite needs to control what utilities it can run
Authored by: John Wren Kennedy <john.kennedy@delphix.com> Reviewed by: Dan Kimmel <dan.kimmel@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> Reviewed by: Dan McDonald <danmcd@omniti.com> Approved by: Gordon Ross <gordon.w.ross@gmail.com> Ported-by: Brian Behlendorf <behlendorf1@llnl.gov> Ported-by: George Melikov <mail@gmelikov.ru> Porting Notes: - Utilities which aren't available under Linux have been removed. - Because of sudo's default secure path behavior PATH must be explicitly reset at the top of libtest.shlib. This avoids the need for all users to customize secure path on their system. - Updated ZoL infrastructure to manage constrained path - Updated all test cases - Check permissions for usergroup tests - When testing in-tree create links under bin/ - Update fault cleanup such that missing files during cleanup aren't fatal. - Configure su environment with constrained path OpenZFS-issue: https://www.illumos.org/issues/7290 OpenZFS-commit: https://github.com/openzfs/openzfs/commit/1d32ba6 Closes #5903
This commit is contained in:
committed by
Brian Behlendorf
parent
7a4500a101
commit
c1d9abf905
@@ -26,7 +26,7 @@
|
||||
#
|
||||
|
||||
#
|
||||
# Copyright (c) 2013, 2015 by Delphix. All rights reserved.
|
||||
# Copyright (c) 2013, 2016 by Delphix. All rights reserved.
|
||||
#
|
||||
|
||||
. $STF_SUITE/include/libtest.shlib
|
||||
@@ -50,7 +50,7 @@ function cleanup
|
||||
if [[ -n "$child_pids" ]]; then
|
||||
for wait_pid in $child_pids
|
||||
do
|
||||
$KILL $wait_pid
|
||||
kill $wait_pid
|
||||
done
|
||||
fi
|
||||
|
||||
@@ -58,7 +58,7 @@ function cleanup
|
||||
destroy_pool $TESTPOOL1
|
||||
fi
|
||||
|
||||
[[ -e $TESTDIR ]] && log_must $RM -rf $TESTDIR/*
|
||||
[[ -e $TESTDIR ]] && log_must rm -rf $TESTDIR/*
|
||||
}
|
||||
|
||||
log_assert "Replacing a disk during I/O completes."
|
||||
@@ -94,38 +94,38 @@ function replace_test
|
||||
|
||||
typeset i=0
|
||||
while [[ $i -lt $iters ]]; do
|
||||
log_note "Invoking $FILE_TRUNC with: $options_display"
|
||||
$FILE_TRUNC $options $TESTDIR/$TESTFILE.$i &
|
||||
log_note "Invoking file_trunc with: $options_display"
|
||||
file_trunc $options $TESTDIR/$TESTFILE.$i &
|
||||
typeset pid=$!
|
||||
|
||||
$SLEEP 1
|
||||
sleep 1
|
||||
|
||||
child_pids="$child_pids $pid"
|
||||
((i = i + 1))
|
||||
done
|
||||
|
||||
log_must $ZPOOL replace $opt $TESTPOOL1 $disk1 $disk2
|
||||
log_must zpool replace $opt $TESTPOOL1 $disk1 $disk2
|
||||
|
||||
$SLEEP 10
|
||||
sleep 10
|
||||
|
||||
for wait_pid in $child_pids
|
||||
do
|
||||
$KILL $wait_pid
|
||||
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
|
||||
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
|
||||
mkfile $MINVDEVSIZE $TESTDIR/$TESTFILE1.$i
|
||||
specials_list="$specials_list $TESTDIR/$TESTFILE1.$i"
|
||||
|
||||
((i = i + 1))
|
||||
@@ -134,23 +134,23 @@ done
|
||||
#
|
||||
# Create a replacement disk special file.
|
||||
#
|
||||
$MKFILE $MINVDEVSIZE $TESTDIR/$REPLACEFILE
|
||||
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
|
||||
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"
|
||||
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
|
||||
log_must rm -rf /$TESTPOOL1
|
||||
done
|
||||
done
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
#
|
||||
|
||||
#
|
||||
# Copyright (c) 2013, 2015 by Delphix. All rights reserved.
|
||||
# Copyright (c) 2013, 2016 by Delphix. All rights reserved.
|
||||
#
|
||||
|
||||
. $STF_SUITE/include/libtest.shlib
|
||||
@@ -50,7 +50,7 @@ function cleanup
|
||||
if [[ -n "$child_pids" ]]; then
|
||||
for wait_pid in $child_pids
|
||||
do
|
||||
$KILL $wait_pid
|
||||
kill $wait_pid
|
||||
done
|
||||
fi
|
||||
|
||||
@@ -58,7 +58,7 @@ function cleanup
|
||||
destroy_pool $TESTPOOL1
|
||||
fi
|
||||
|
||||
[[ -e $TESTDIR ]] && log_must $RM -rf $TESTDIR/*
|
||||
[[ -e $TESTDIR ]] && log_must rm -rf $TESTDIR/*
|
||||
}
|
||||
|
||||
log_assert "Replacing a disk during I/O completes."
|
||||
@@ -94,38 +94,38 @@ function attach_test
|
||||
|
||||
typeset i=0
|
||||
while [[ $i -lt $iters ]]; do
|
||||
log_note "Invoking $FILE_TRUNC with: $options_display"
|
||||
$FILE_TRUNC $options $TESTDIR/$TESTFILE.$i &
|
||||
log_note "Invoking file_trunc with: $options_display"
|
||||
file_trunc $options $TESTDIR/$TESTFILE.$i &
|
||||
typeset pid=$!
|
||||
|
||||
$SLEEP 1
|
||||
sleep 1
|
||||
|
||||
child_pids="$child_pids $pid"
|
||||
((i = i + 1))
|
||||
done
|
||||
|
||||
log_must $ZPOOL attach $opt $TESTPOOL1 $disk1 $disk2
|
||||
log_must zpool attach $opt $TESTPOOL1 $disk1 $disk2
|
||||
|
||||
$SLEEP 10
|
||||
sleep 10
|
||||
|
||||
for wait_pid in $child_pids
|
||||
do
|
||||
$KILL $wait_pid
|
||||
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
|
||||
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
|
||||
mkfile $MINVDEVSIZE $TESTDIR/$TESTFILE1.$i
|
||||
specials_list="$specials_list $TESTDIR/$TESTFILE1.$i"
|
||||
|
||||
((i = i + 1))
|
||||
@@ -134,16 +134,16 @@ done
|
||||
#
|
||||
# Create a replacement disk special file.
|
||||
#
|
||||
$MKFILE $MINVDEVSIZE $TESTDIR/$REPLACEFILE
|
||||
mkfile $MINVDEVSIZE $TESTDIR/$REPLACEFILE
|
||||
|
||||
for op in "" "-f"; do
|
||||
create_pool $TESTPOOL1 mirror $specials_list
|
||||
log_must $ZFS create $TESTPOOL1/$TESTFS1
|
||||
log_must $ZFS set mountpoint=$TESTDIR1 $TESTPOOL1/$TESTFS1
|
||||
log_must zfs create $TESTPOOL1/$TESTFS1
|
||||
log_must zfs set mountpoint=$TESTDIR1 $TESTPOOL1/$TESTFS1
|
||||
|
||||
attach_test "$opt" $TESTDIR/$TESTFILE1.1 $TESTDIR/$REPLACEFILE
|
||||
|
||||
$ZPOOL iostat -v $TESTPOOL1 | grep "$TESTDIR/$REPLACEFILE"
|
||||
zpool iostat -v $TESTPOOL1 | grep "$TESTDIR/$REPLACEFILE"
|
||||
if [[ $? -ne 0 ]]; then
|
||||
log_fail "$REPLACEFILE is not present."
|
||||
fi
|
||||
@@ -156,13 +156,13 @@ log_note "Verify 'zpool attach' fails with non-mirrors."
|
||||
for type in "" "raidz" "raidz1"; 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
|
||||
log_must zfs create $TESTPOOL1/$TESTFS1
|
||||
log_must zfs set mountpoint=$TESTDIR1 $TESTPOOL1/$TESTFS1
|
||||
|
||||
log_mustnot $ZPOOL attach "$opt" $TESTDIR/$TESTFILE1.1 \
|
||||
log_mustnot zpool attach "$opt" $TESTDIR/$TESTFILE1.1 \
|
||||
$TESTDIR/$REPLACEFILE
|
||||
|
||||
$ZPOOL iostat -v $TESTPOOL1 | grep "$TESTDIR/$REPLACEFILE"
|
||||
zpool iostat -v $TESTPOOL1 | grep "$TESTDIR/$REPLACEFILE"
|
||||
if [[ $? -eq 0 ]]; then
|
||||
log_fail "$REPLACEFILE should not be present."
|
||||
fi
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
#
|
||||
|
||||
#
|
||||
# Copyright (c) 2013, 2015 by Delphix. All rights reserved.
|
||||
# Copyright (c) 2013, 2016 by Delphix. All rights reserved.
|
||||
#
|
||||
|
||||
. $STF_SUITE/include/libtest.shlib
|
||||
@@ -50,7 +50,7 @@ function cleanup
|
||||
if [[ -n "$child_pids" ]]; then
|
||||
for wait_pid in $child_pids
|
||||
do
|
||||
$KILL $wait_pid
|
||||
kill $wait_pid
|
||||
done
|
||||
fi
|
||||
|
||||
@@ -58,7 +58,7 @@ function cleanup
|
||||
destroy_pool $TESTPOOL1
|
||||
fi
|
||||
|
||||
[[ -e $TESTDIR ]] && log_must $RM -rf $TESTDIR/*
|
||||
[[ -e $TESTDIR ]] && log_must rm -rf $TESTDIR/*
|
||||
}
|
||||
|
||||
log_assert "Replacing a disk during I/O completes."
|
||||
@@ -92,49 +92,49 @@ function detach_test
|
||||
|
||||
typeset i=0
|
||||
while [[ $i -lt $iters ]]; do
|
||||
log_note "Invoking $FILE_TRUNC with: $options_display"
|
||||
$FILE_TRUNC $options $TESTDIR/$TESTFILE.$i &
|
||||
log_note "Invoking file_trunc with: $options_display"
|
||||
file_trunc $options $TESTDIR/$TESTFILE.$i &
|
||||
typeset pid=$!
|
||||
|
||||
$SLEEP 1
|
||||
sleep 1
|
||||
|
||||
child_pids="$child_pids $pid"
|
||||
((i = i + 1))
|
||||
done
|
||||
|
||||
log_must $ZPOOL detach $TESTPOOL1 $disk1
|
||||
log_must zpool detach $TESTPOOL1 $disk1
|
||||
|
||||
$SLEEP 10
|
||||
sleep 10
|
||||
|
||||
for wait_pid in $child_pids
|
||||
do
|
||||
$KILL $wait_pid
|
||||
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
|
||||
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
|
||||
mkfile $MINVDEVSIZE $TESTDIR/$TESTFILE1.$i
|
||||
specials_list="$specials_list $TESTDIR/$TESTFILE1.$i"
|
||||
|
||||
((i = i + 1))
|
||||
done
|
||||
|
||||
create_pool $TESTPOOL1 mirror $specials_list
|
||||
log_must $ZFS create $TESTPOOL1/$TESTFS1
|
||||
log_must $ZFS set mountpoint=$TESTDIR1 $TESTPOOL1/$TESTFS1
|
||||
log_must zfs create $TESTPOOL1/$TESTFS1
|
||||
log_must zfs set mountpoint=$TESTDIR1 $TESTPOOL1/$TESTFS1
|
||||
|
||||
detach_test $TESTDIR/$TESTFILE1.1
|
||||
|
||||
$ZPOOL iostat -v $TESTPOOL1 | grep "$TESTDIR/$TESTFILE1.1"
|
||||
zpool iostat -v $TESTPOOL1 | grep "$TESTDIR/$TESTFILE1.1"
|
||||
if [[ $? -eq 0 ]]; then
|
||||
log_fail "$TESTFILE1.1 should no longer be present."
|
||||
fi
|
||||
@@ -145,12 +145,12 @@ log_note "Verify 'zpool detach' fails with non-mirrors."
|
||||
|
||||
for type in "" "raidz" "raidz1" ; do
|
||||
create_pool $TESTPOOL1 $type $specials_list
|
||||
log_must $ZFS create $TESTPOOL1/$TESTFS1
|
||||
log_must $ZFS set mountpoint=$TESTDIR1 $TESTPOOL1/$TESTFS1
|
||||
log_must zfs create $TESTPOOL1/$TESTFS1
|
||||
log_must zfs set mountpoint=$TESTDIR1 $TESTPOOL1/$TESTFS1
|
||||
|
||||
log_mustnot $ZPOOL detach $TESTDIR/$TESTFILE1.1
|
||||
log_mustnot zpool detach $TESTDIR/$TESTFILE1.1
|
||||
|
||||
$ZPOOL iostat -v $TESTPOOL1 | grep "$TESTDIR/$TESTFILE1.1"
|
||||
zpool iostat -v $TESTPOOL1 | grep "$TESTDIR/$TESTFILE1.1"
|
||||
if [[ $? -ne 0 ]]; then
|
||||
log_fail "$TESTFILE1.1 is not present."
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user