tests: zfs_share_concurrent_shares: don't use log_musts in subprocesses
This thoroughly destroys logapi and races to the log files horribly Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: John Kennedy <john.kennedy@delphix.com> Reviewed-by: Ryan Moeller <ryan@iXsystems.com> Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz> Closes #13259
This commit is contained in:
parent
4a0d86afc3
commit
e54eef24c6
|
@ -47,31 +47,20 @@ verify_runnable "global"
|
||||||
function cleanup
|
function cleanup
|
||||||
{
|
{
|
||||||
wait
|
wait
|
||||||
for fs in $(seq 0 50)
|
for fs in {0..50}
|
||||||
do
|
do
|
||||||
log_must zfs set sharenfs=off $TESTPOOL/$TESTFS1/$fs
|
for pfs in $TESTFS1 $TESTFS2 $TESTFS3
|
||||||
log_must zfs set sharenfs=off $TESTPOOL/$TESTFS2/$fs
|
do
|
||||||
log_must zfs set sharenfs=off $TESTPOOL/$TESTFS3/$fs
|
log_must zfs set sharenfs=off $TESTPOOL/$pfs/$fs
|
||||||
unshare_fs $TESTPOOL/$TESTFS1/$fs
|
unshare_fs $TESTPOOL/$pfs/$fs
|
||||||
unshare_fs $TESTPOOL/$TESTFS2/$fs
|
|
||||||
unshare_fs $TESTPOOL/$TESTFS3/$fs
|
|
||||||
|
|
||||||
if mounted $TESTPOOL/$TESTFS1/$fs; then
|
if mounted $TESTPOOL/$pfs/$fs; then
|
||||||
log_must zfs unmount $TESTPOOL/$TESTFS1/$fs
|
log_must zfs unmount $TESTPOOL/$pfs/$fs
|
||||||
fi
|
|
||||||
if mounted $TESTPOOL/$TESTFS2/$fs; then
|
|
||||||
log_must zfs unmount $TESTPOOL/$TESTFS2/$fs
|
|
||||||
fi
|
|
||||||
if mounted $TESTPOOL/$TESTFS3/$fs; then
|
|
||||||
log_must zfs unmount $TESTPOOL/$TESTFS3/$fs
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
datasetexists $TESTPOOL/$TESTFS1/$fs && \
|
datasetexists $TESTPOOL/$pfs/$fs && \
|
||||||
destroy_dataset $TESTPOOL/$TESTFS1/$fs -f
|
destroy_dataset $TESTPOOL/$pfs/$fs -f
|
||||||
datasetexists $TESTPOOL/$TESTFS2/$fs && \
|
done
|
||||||
destroy_dataset $TESTPOOL/$TESTFS2/$fs -f
|
|
||||||
datasetexists $TESTPOOL/$TESTFS3/$fs && \
|
|
||||||
destroy_dataset $TESTPOOL/$TESTFS3/$fs -f
|
|
||||||
done
|
done
|
||||||
|
|
||||||
log_must zfs share -a
|
log_must zfs share -a
|
||||||
|
@ -79,7 +68,7 @@ function cleanup
|
||||||
|
|
||||||
function create_filesystems
|
function create_filesystems
|
||||||
{
|
{
|
||||||
for fs in $(seq 0 50)
|
for fs in {0..50}
|
||||||
do
|
do
|
||||||
log_must zfs create -p $TESTPOOL/$TESTFS1/$fs
|
log_must zfs create -p $TESTPOOL/$TESTFS1/$fs
|
||||||
log_must zfs create -p $TESTPOOL/$TESTFS2/$fs
|
log_must zfs create -p $TESTPOOL/$TESTFS2/$fs
|
||||||
|
@ -87,6 +76,12 @@ function create_filesystems
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function sub_fail
|
||||||
|
{
|
||||||
|
log_note $$: "$@"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Main test routine.
|
# Main test routine.
|
||||||
#
|
#
|
||||||
|
@ -99,32 +94,45 @@ function test_share # filesystem
|
||||||
typeset mntp=$(get_prop mountpoint $filesystem)
|
typeset mntp=$(get_prop mountpoint $filesystem)
|
||||||
|
|
||||||
not_shared $mntp || \
|
not_shared $mntp || \
|
||||||
log_fail "File system $filesystem is already shared."
|
sub_fail "File system $filesystem is already shared."
|
||||||
|
|
||||||
zfs set sharenfs=on $filesystem || \
|
zfs set sharenfs=on $filesystem || \
|
||||||
log_fail "zfs set sharenfs=on $filesystem failed."
|
sub_fail "zfs set sharenfs=on $filesystem failed."
|
||||||
is_shared $mntp || \
|
is_shared $mntp || \
|
||||||
log_fail "File system $filesystem is not shared (set sharenfs)."
|
sub_fail "File system $filesystem is not shared (set sharenfs)."
|
||||||
|
|
||||||
#
|
#
|
||||||
# Verify 'zfs share' works as well.
|
# Verify 'zfs share' works as well.
|
||||||
#
|
#
|
||||||
zfs unshare $filesystem || \
|
zfs unshare $filesystem || \
|
||||||
log_fail "zfs unshare $filesystem failed."
|
sub_fail "zfs unshare $filesystem failed."
|
||||||
is_shared $mntp && \
|
is_shared $mntp && \
|
||||||
log_fail "File system $filesystem is still shared."
|
sub_fail "File system $filesystem is still shared."
|
||||||
|
|
||||||
|
|
||||||
zfs share $filesystem || \
|
zfs share $filesystem || \
|
||||||
log_fail "zfs share $filesystem failed."
|
sub_fail "zfs share $filesystem failed."
|
||||||
is_shared $mntp || \
|
is_shared $mntp || \
|
||||||
log_fail "file system $filesystem is not shared (zfs share)."
|
sub_fail "file system $filesystem is not shared (zfs share)."
|
||||||
|
|
||||||
|
|
||||||
#log_note "Sharing a shared file system fails."
|
#log_note "Sharing a shared file system fails."
|
||||||
zfs share $filesystem && \
|
zfs share $filesystem && \
|
||||||
log_fail "zfs share $filesystem did not fail"
|
sub_fail "zfs share $filesystem did not fail"
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function unshare_fs_nolog
|
||||||
|
{
|
||||||
|
typeset fs=$1
|
||||||
|
|
||||||
|
if is_shared $fs || is_shared_smb $fs; then
|
||||||
|
zfs unshare $fs ||
|
||||||
|
sub_fail "zfs unshare $fs: $?"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Set the main process id so that we know to capture
|
# Set the main process id so that we know to capture
|
||||||
# failures from child processes and allow the parent process
|
# failures from child processes and allow the parent process
|
||||||
|
@ -137,20 +145,16 @@ log_onexit cleanup
|
||||||
create_filesystems
|
create_filesystems
|
||||||
|
|
||||||
child_pids=()
|
child_pids=()
|
||||||
for fs in $(seq 0 50)
|
for fs in {0..50}
|
||||||
do
|
do
|
||||||
test_share $TESTPOOL/$TESTFS1/$fs &
|
for pfs in $TESTFS1 $TESTFS2 $TESTFS3
|
||||||
|
do
|
||||||
|
test_share $TESTPOOL/$pfs/$fs &
|
||||||
child_pids+=($!)
|
child_pids+=($!)
|
||||||
log_note "$TESTPOOL/$TESTFS1/$fs ==> $!"
|
log_note "$TESTPOOL/$pfs/$fs ==> $!"
|
||||||
test_share $TESTPOOL/$TESTFS2/$fs &
|
|
||||||
child_pids+=($!)
|
|
||||||
log_note "$TESTPOOL/$TESTFS2/$fs ==> $!"
|
|
||||||
test_share $TESTPOOL/$TESTFS3/$fs &
|
|
||||||
child_pids+=($!)
|
|
||||||
log_note "$TESTPOOL/$TESTFS3/$fs ==> $!"
|
|
||||||
done
|
done
|
||||||
wait_for_children "${child_pids[@]}" ||
|
done
|
||||||
log_fail "multithreaded share test failed"
|
log_must wait_for_children "${child_pids[@]}"
|
||||||
|
|
||||||
log_note "Verify 'zfs share -a' succeeds."
|
log_note "Verify 'zfs share -a' succeeds."
|
||||||
|
|
||||||
|
@ -158,17 +162,16 @@ log_note "Verify 'zfs share -a' succeeds."
|
||||||
# Unshare each of the file systems.
|
# Unshare each of the file systems.
|
||||||
#
|
#
|
||||||
child_pids=()
|
child_pids=()
|
||||||
for fs in $(seq 0 50)
|
for fs in {0..50}
|
||||||
do
|
do
|
||||||
unshare_fs $TESTPOOL/$TESTFS1/$fs &
|
for pfs in $TESTFS1 $TESTFS2 $TESTFS3
|
||||||
child_pids+=($!)
|
do
|
||||||
unshare_fs $TESTPOOL/$TESTFS2/$fs &
|
unshare_fs_nolog $TESTPOOL/$pfs/$fs &
|
||||||
child_pids+=($!)
|
|
||||||
unshare_fs $TESTPOOL/$TESTFS3/$fs &
|
|
||||||
child_pids+=($!)
|
child_pids+=($!)
|
||||||
|
log_note "$TESTPOOL/$pfs/$fs (unshare) ==> $!"
|
||||||
done
|
done
|
||||||
wait_for_children "${child_pids[@]}" ||
|
done
|
||||||
log_fail "multithreaded unshare failed"
|
log_must wait_for_children "${child_pids[@]}"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Try a zfs share -a and verify all file systems are shared.
|
# Try a zfs share -a and verify all file systems are shared.
|
||||||
|
@ -181,21 +184,13 @@ log_must zfs share -a
|
||||||
#
|
#
|
||||||
unset __ZFS_POOL_EXCLUDE
|
unset __ZFS_POOL_EXCLUDE
|
||||||
|
|
||||||
for fs in $(seq 0 50)
|
for fs in {0..50}
|
||||||
do
|
do
|
||||||
is_shared $TESTPOOL/$TESTFS1/$fs || \
|
for pfs in $TESTFS1 $TESTFS2 $TESTFS3
|
||||||
log_fail "File system $TESTPOOL/$TESTFS1/$fs is not shared"
|
do
|
||||||
is_shared $TESTPOOL/$TESTFS2/$fs || \
|
log_must is_shared $TESTPOOL/$pfs/$fs
|
||||||
log_fail "File system $TESTPOOL/$TESTFS2/$fs is not shared"
|
log_must is_exported $TESTPOOL/$pfs/$fs
|
||||||
is_shared $TESTPOOL/$TESTFS3/$fs || \
|
done
|
||||||
log_fail "File system $TESTPOOL/$TESTFS3/$fs is not shared"
|
|
||||||
|
|
||||||
is_exported $TESTPOOL/$TESTFS1/$fs || \
|
|
||||||
log_fail "File system $TESTPOOL/$TESTFS1/$fs is not exported"
|
|
||||||
is_exported $TESTPOOL/$TESTFS2/$fs || \
|
|
||||||
log_fail "File system $TESTPOOL/$TESTFS2/$fs is not exported"
|
|
||||||
is_exported $TESTPOOL/$TESTFS3/$fs || \
|
|
||||||
log_fail "File system $TESTPOOL/$TESTFS3/$fs is not exported"
|
|
||||||
done
|
done
|
||||||
|
|
||||||
log_pass "'zfs share [-a] <filesystem>' succeeds as root."
|
log_pass "'zfs share [-a] <filesystem>' succeeds as root."
|
||||||
|
|
Loading…
Reference in New Issue