ZTS: replace uses of TMPDIR with mktemp

Most of these are trying to use TMPDIR to put their work files somewhere
sensible. Now that we've set up correctly, they can all just use mktemp
to do the job.

In a couple of places cleaning up temp files wasn't being done
correctly, which has been fixed.

Sponsored-by: https://despairlabs.com/sponsor/
Signed-off-by: Rob Norris <robn@despairlabs.com>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de>
Reviewed-by: Igor Kozhukhov <igor@dilos.org>
This commit is contained in:
Rob Norris 2025-02-15 14:44:23 +11:00 committed by Tony Hutter
parent 72c0fde609
commit a44f423b00
15 changed files with 89 additions and 92 deletions

View File

@ -48,11 +48,13 @@ function get_same_blocks
if [ ${#KEY} -gt 0 ]; then if [ ${#KEY} -gt 0 ]; then
KEY="--key=$KEY" KEY="--key=$KEY"
fi fi
typeset zdbout=${TMPDIR:-$TEST_BASE_DIR}/zdbout.$$ typeset zdbout1=$(mktemp)
typeset zdbout2=$(mktemp)
zdb $KEY -vvvvv $1 -O $2 | \ zdb $KEY -vvvvv $1 -O $2 | \
awk '/ L0 / { print l++ " " $3 " " $7 }' > $zdbout.a awk '/ L0 / { print l++ " " $3 " " $7 }' > $zdbout1
zdb $KEY -vvvvv $3 -O $4 | \ zdb $KEY -vvvvv $3 -O $4 | \
awk '/ L0 / { print l++ " " $3 " " $7 }' > $zdbout.b awk '/ L0 / { print l++ " " $3 " " $7 }' > $zdbout2
echo $(sort -n $zdbout.a $zdbout.b | uniq -d | cut -f1 -d' ') echo $(sort -n $zdbout1 $zdbout2 | uniq -d | cut -f1 -d' ')
rm -f $zdbout1 $zdbout2
} }

View File

@ -38,10 +38,10 @@
verify_runnable "both" verify_runnable "both"
TMPDIR=${TMPDIR:-$TEST_BASE_DIR} DISKDIR=$(mktemp -d)
MNTPT=$TMPDIR/zfs_mount_test_race_mntpt MNTPT=$DISKDIR/zfs_mount_test_race_mntpt
DISK1="$TMPDIR/zfs_mount_test_race_disk1" DISK1="$DISKDIR/zfs_mount_test_race_disk1"
DISK2="$TMPDIR/zfs_mount_test_race_disk2" DISK2="$DISKDIR/zfs_mount_test_race_disk2"
TESTPOOL1=zfs_mount_test_race_tp1 TESTPOOL1=zfs_mount_test_race_tp1
TESTPOOL2=zfs_mount_test_race_tp2 TESTPOOL2=zfs_mount_test_race_tp2
@ -54,11 +54,9 @@ function cleanup
{ {
zpool destroy $TESTPOOL1 zpool destroy $TESTPOOL1
zpool destroy $TESTPOOL2 zpool destroy $TESTPOOL2
rm -rf $MNTPT rm -rf $DISKDIR
rm -rf /$TESTPOOL1 rm -rf /$TESTPOOL1
rm -rf /$TESTPOOL2 rm -rf /$TESTPOOL2
rm -f $DISK1
rm -f $DISK2
export __ZFS_POOL_RESTRICT="$TESTPOOL1 $TESTPOOL2" export __ZFS_POOL_RESTRICT="$TESTPOOL1 $TESTPOOL2"
log_must zfs $mountall log_must zfs $mountall
unset __ZFS_POOL_RESTRICT unset __ZFS_POOL_RESTRICT

View File

@ -26,14 +26,14 @@
. $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/libtest.shlib
DATAFILE="$TMPDIR/datafile" DATAFILE=$(mktemp)
function cleanup function cleanup
{ {
zpool clear $TESTPOOL zpool clear $TESTPOOL
destroy_pool $TESTPOOL destroy_pool $TESTPOOL
unload_scsi_debug unload_scsi_debug
rm -f $DATA_FILE rm -f $DATAFILE
} }
log_onexit cleanup log_onexit cleanup

View File

@ -21,24 +21,24 @@
. $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/libtest.shlib
. $STF_SUITE/tests/functional/removal/removal.kshlib . $STF_SUITE/tests/functional/removal/removal.kshlib
TMPDIR=${TMPDIR:-$TEST_BASE_DIR} DISKDIR=$(mktemp -d)
log_must mkfile $MINVDEVSIZE $TMPDIR/dsk1 log_must mkfile $MINVDEVSIZE $DISKDIR/dsk1
log_must mkfile $MINVDEVSIZE $TMPDIR/dsk2 log_must mkfile $MINVDEVSIZE $DISKDIR/dsk2
DISKS="$TMPDIR/dsk1 $TMPDIR/dsk2" DISKS="$DISKDIR/dsk1 $DISKDIR/dsk2"
REMOVEDISK=$TMPDIR/dsk1 REMOVEDISK=$DISKDIR/dsk1
log_must default_setup_noexit "$DISKS" log_must default_setup_noexit "$DISKS"
function cleanup function cleanup
{ {
default_cleanup_noexit default_cleanup_noexit
log_must rm -f $DISKS log_must rm -rf $DISKDIR
} }
log_onexit cleanup log_onexit cleanup
# Write a little more than half the pool. # Write a little more than half the pool.
log_must dd if=/dev/urandom of=/$TESTDIR/$TESTFILE0 bs=$((2**20)) \ log_must dd if=/dev/urandom of=/$TESTDIR/$TESTFILE0 bs=$((2**20)) \
count=$((MINVDEVSIZE / (1024 * 1024))) count=$((MINVDEVSIZE / (1024 * 1024)))
log_mustnot zpool remove $TESTPOOL $TMPDIR/dsk1 log_mustnot zpool remove $TESTPOOL $DISKDIR/dsk1
log_pass "Removal will not succeed if insufficient space." log_pass "Removal will not succeed if insufficient space."

View File

@ -44,18 +44,18 @@
# that the files contents remain the same across transfers. # that the files contents remain the same across transfers.
# #
TMPDIR=${TMPDIR:-$TEST_BASE_DIR} DISKDIR=$(mktemp -d)
log_must mkfile $(($MINVDEVSIZE * 2)) $TMPDIR/dsk1 log_must mkfile $(($MINVDEVSIZE * 2)) $DISKDIR/dsk1
log_must mkfile $(($MINVDEVSIZE * 2)) $TMPDIR/dsk2 log_must mkfile $(($MINVDEVSIZE * 2)) $DISKDIR/dsk2
DISKS="$TMPDIR/dsk1 $TMPDIR/dsk2" DISKS="$DISKDIR/dsk1 $DISKDIR/dsk2"
REMOVEDISK=$TMPDIR/dsk1 REMOVEDISK=$DISKDIR/dsk1
log_must default_setup_noexit "$DISKS" log_must default_setup_noexit "$DISKS"
function cleanup function cleanup
{ {
default_cleanup_noexit default_cleanup_noexit
log_must rm -f $DISKS log_must rm -rf $DISKDIR
# reset REMOVE_MAX_SEGMENT to 1M # reset REMOVE_MAX_SEGMENT to 1M
set_tunable32 REMOVE_MAX_SEGMENT 1048576 set_tunable32 REMOVE_MAX_SEGMENT 1048576
@ -71,19 +71,19 @@ FILE_CONTENTS=$(<$TESTDIR/$TESTFILE0)
log_must [ "x$(<$TESTDIR/$TESTFILE0)" = "x$FILE_CONTENTS" ] log_must [ "x$(<$TESTDIR/$TESTFILE0)" = "x$FILE_CONTENTS" ]
for i in {1..10}; do for i in {1..10}; do
log_must zpool remove $TESTPOOL $TMPDIR/dsk1 log_must zpool remove $TESTPOOL $DISKDIR/dsk1
log_must wait_for_removal $TESTPOOL log_must wait_for_removal $TESTPOOL
log_mustnot vdevs_in_pool $TESTPOOL $TMPDIR/dsk1 log_mustnot vdevs_in_pool $TESTPOOL $DISKDIR/dsk1
log_must zpool add $TESTPOOL $TMPDIR/dsk1 log_must zpool add $TESTPOOL $DISKDIR/dsk1
log_must zinject -a log_must zinject -a
log_must dd if=$TESTDIR/$TESTFILE0 of=/dev/null log_must dd if=$TESTDIR/$TESTFILE0 of=/dev/null
log_must [ "x$(<$TESTDIR/$TESTFILE0)" = "x$FILE_CONTENTS" ] log_must [ "x$(<$TESTDIR/$TESTFILE0)" = "x$FILE_CONTENTS" ]
log_must zpool remove $TESTPOOL $TMPDIR/dsk2 log_must zpool remove $TESTPOOL $DISKDIR/dsk2
log_must wait_for_removal $TESTPOOL log_must wait_for_removal $TESTPOOL
log_mustnot vdevs_in_pool $TESTPOOL $TMPDIR/dsk2 log_mustnot vdevs_in_pool $TESTPOOL $DISKDIR/dsk2
log_must zpool add $TESTPOOL $TMPDIR/dsk2 log_must zpool add $TESTPOOL $DISKDIR/dsk2
log_must zinject -a log_must zinject -a
log_must dd if=$TESTDIR/$TESTFILE0 of=/dev/null log_must dd if=$TESTDIR/$TESTFILE0 of=/dev/null

View File

@ -21,18 +21,18 @@
. $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/libtest.shlib
. $STF_SUITE/tests/functional/removal/removal.kshlib . $STF_SUITE/tests/functional/removal/removal.kshlib
TMPDIR=${TMPDIR:-$TEST_BASE_DIR} DISKDIR=$(mktemp -d)
log_must mkfile 1g $TMPDIR/dsk1 log_must mkfile 1g $DISKDIR/dsk1
log_must mkfile 1g $TMPDIR/dsk2 log_must mkfile 1g $DISKDIR/dsk2
DISKS="$TMPDIR/dsk1 $TMPDIR/dsk2" DISKS="$DISKDIR/dsk1 $DISKDIR/dsk2"
REMOVEDISK=$TMPDIR/dsk1 REMOVEDISK=$DISKDIR/dsk1
default_setup_noexit "$DISKS" default_setup_noexit "$DISKS"
function cleanup function cleanup
{ {
default_cleanup_noexit default_cleanup_noexit
log_must rm -f $DISKS log_must rm -rf $DISKDIR
} }
log_onexit cleanup log_onexit cleanup

View File

@ -21,14 +21,14 @@
. $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/libtest.shlib
. $STF_SUITE/tests/functional/removal/removal.kshlib . $STF_SUITE/tests/functional/removal/removal.kshlib
TMPDIR=${TMPDIR:-$TEST_BASE_DIR} DISKDIR=$(mktemp -d)
log_must mkfile 1g $TMPDIR/dsk1 log_must mkfile 1g $DISKDIR/dsk1
log_must mkfile 1g $TMPDIR/dsk2 log_must mkfile 1g $DISKDIR/dsk2
function cleanup function cleanup
{ {
default_cleanup_noexit default_cleanup_noexit
log_must rm -f $TMPDIR/dsk1 $TMPDIR/dsk2 log_must rm -rf $DISKDIR
} }
default_setup_noexit "$DISKS" default_setup_noexit "$DISKS"
@ -36,10 +36,10 @@ log_onexit cleanup
function callback function callback
{ {
log_mustnot zpool attach -f $TESTPOOL $TMPDIR/dsk1 $TMPDIR/dsk2 log_mustnot zpool attach -f $TESTPOOL $DISKDIR/dsk1 $DISKDIR/dsk2
log_mustnot zpool add -f $TESTPOOL \ log_mustnot zpool add -f $TESTPOOL \
raidz $TMPDIR/dsk1 $TMPDIR/dsk2 raidz $DISKDIR/dsk1 $DISKDIR/dsk2
log_must zpool add -f $TESTPOOL $TMPDIR/dsk1 log_must zpool add -f $TESTPOOL $DISKDIR/dsk1
return 0 return 0
} }

View File

@ -44,11 +44,11 @@
# 7. Lastly verify the pool data is still intact. # 7. Lastly verify the pool data is still intact.
# #
TMPDIR=${TMPDIR:-$TEST_BASE_DIR} DISKDIR=$(mktemp -d)
DISK0=$TMPDIR/dsk0 DISK0=$DISKDIR/dsk0
DISK1=$TMPDIR/dsk1 DISK1=$DISKDIR/dsk1
DISK2=$TMPDIR/dsk2 DISK2=$DISKDIR/dsk2
DISK3=$TMPDIR/dsk3 DISK3=$DISKDIR/dsk3
log_must truncate -s $MINVDEVSIZE $DISK0 $DISK1 log_must truncate -s $MINVDEVSIZE $DISK0 $DISK1
log_must truncate -s $((MINVDEVSIZE * 4)) $DISK2 $DISK3 log_must truncate -s $((MINVDEVSIZE * 4)) $DISK2 $DISK3
@ -57,7 +57,7 @@ function cleanup
{ {
log_must zinject -c all log_must zinject -c all
default_cleanup_noexit default_cleanup_noexit
log_must rm -f $DISK0 $DISK1 $DISK2 $DISK3 log_must rm -rf $DISKDIR
} }
function wait_for_removing_cancel function wait_for_removing_cancel
@ -88,7 +88,7 @@ log_must file_write -o create -f $TESTDIR/$TESTFILE1 -b $((2**20)) -c $((2**8))
# Flush the ARC to minimize cache effects. # Flush the ARC to minimize cache effects.
log_must zpool export $TESTPOOL log_must zpool export $TESTPOOL
log_must zpool import -d $TMPDIR $TESTPOOL log_must zpool import -d $DISKDIR $TESTPOOL
# Verify that unexpected read errors automatically cancel the removal. # Verify that unexpected read errors automatically cancel the removal.
log_must zinject -d $DISK0 -e io -T all -f 100 $TESTPOOL log_must zinject -d $DISK0 -e io -T all -f 100 $TESTPOOL
@ -99,7 +99,7 @@ log_must zinject -c all
# Flush the ARC to minimize cache effects. # Flush the ARC to minimize cache effects.
log_must zpool export $TESTPOOL log_must zpool export $TESTPOOL
log_must zpool import -d $TMPDIR $TESTPOOL log_must zpool import -d $DISKDIR $TESTPOOL
# Verify that unexpected write errors automatically cancel the removal. # Verify that unexpected write errors automatically cancel the removal.
log_must zinject -d $DISK3 -e io -T all -f 100 $TESTPOOL log_must zinject -d $DISK3 -e io -T all -f 100 $TESTPOOL

View File

@ -63,11 +63,11 @@
# data is still intact. # data is still intact.
# #
TMPDIR=${TMPDIR:-$TEST_BASE_DIR} DISKDIR=$(mktemp -d)
DISK0=$TMPDIR/dsk0 DISK0=$DISKDIR/dsk0
DISK1=$TMPDIR/dsk1 DISK1=$DISKDIR/dsk1
DISK2=$TMPDIR/dsk2 DISK2=$DISKDIR/dsk2
DISK3=$TMPDIR/dsk3 DISK3=$DISKDIR/dsk3
log_must truncate -s $MINVDEVSIZE $DISK0 $DISK1 log_must truncate -s $MINVDEVSIZE $DISK0 $DISK1
log_must truncate -s $((MINVDEVSIZE * 4)) $DISK2 $DISK3 log_must truncate -s $((MINVDEVSIZE * 4)) $DISK2 $DISK3
@ -75,7 +75,7 @@ log_must truncate -s $((MINVDEVSIZE * 4)) $DISK2 $DISK3
function cleanup function cleanup
{ {
default_cleanup_noexit default_cleanup_noexit
log_must rm -f $DISK0 $DISK1 $DISK2 $DISK3 log_must rm -rf $DISKDIR
} }
default_setup_noexit "mirror $DISK0 $DISK1 mirror $DISK2 $DISK3" default_setup_noexit "mirror $DISK0 $DISK1 mirror $DISK2 $DISK3"

View File

@ -21,12 +21,11 @@
. $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/libtest.shlib
. $STF_SUITE/tests/functional/removal/removal.kshlib . $STF_SUITE/tests/functional/removal/removal.kshlib
TMPDIR=${TMPDIR:-$TEST_BASE_DIR} DISKDIR=$(mktemp -d)
DISK1="$DISKDIR/dsk1"
DISK1="$TMPDIR/dsk1" DISK2="$DISKDIR/dsk2"
DISK2="$TMPDIR/dsk2" DISK3="$DISKDIR/dsk3"
DISK3="$TMPDIR/dsk3" DISK4="$DISKDIR/dsk4"
DISK4="$TMPDIR/dsk4"
DISKS="$DISK1 $DISK2 $DISK3 $DISK4" DISKS="$DISK1 $DISK2 $DISK3 $DISK4"
log_must mkfile $(($MINVDEVSIZE * 2)) $DISK1 log_must mkfile $(($MINVDEVSIZE * 2)) $DISK1
@ -37,7 +36,7 @@ log_must mkfile $(($MINVDEVSIZE * 2)) $DISK4
function cleanup function cleanup
{ {
default_cleanup_noexit default_cleanup_noexit
log_must rm -f $DISKS log_must rm -rf $DISKDIR
} }
# Build a zpool with 2 mirror vdevs # Build a zpool with 2 mirror vdevs

View File

@ -21,7 +21,7 @@
. $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/libtest.shlib
. $STF_SUITE/tests/functional/removal/removal.kshlib . $STF_SUITE/tests/functional/removal/removal.kshlib
zdbout=${TMPDIR:-$TEST_BASE_DIR}/zdbout.$$ zdbout=$(mktemp)
if is_linux; then if is_linux; then
log_unsupported "ZDB fails during concurrent pool activity." log_unsupported "ZDB fails during concurrent pool activity."

View File

@ -34,10 +34,9 @@
command -v fio > /dev/null || log_unsupported "fio missing" command -v fio > /dev/null || log_unsupported "fio missing"
TMPDIR=${TMPDIR:-$TEST_BASE_DIR} DISKDIR=$(mktemp -d)
DISK1="$DISKDIR/dsk1"
DISK1="$TMPDIR/dsk1" DISK2="$DISKDIR/dsk2"
DISK2="$TMPDIR/dsk2"
DISKS="$DISK1 $DISK2" DISKS="$DISK1 $DISK2"
# fio options # fio options
@ -58,7 +57,7 @@ log_must mkfile 4g $DISK2
function cleanup function cleanup
{ {
default_cleanup_noexit default_cleanup_noexit
log_must rm -f $DISKS log_must rm -rf $DISKDIR
} }
log_must zpool create -O recordsize=4k $TESTPOOL $DISK1 $DISK2 log_must zpool create -O recordsize=4k $TESTPOOL $DISK1 $DISK2

View File

@ -32,10 +32,10 @@
# #
TMPDIR=${TMPDIR:-$TEST_BASE_DIR} DISKDIR=$(mktemp -d)
DISK0=$TMPDIR/dsk0 DISK0=$DISKDIR/dsk0
DISK1=$TMPDIR/dsk1 DISK1=$DISKDIR/dsk1
DISK2=$TMPDIR/dsk2 DISK2=$DISKDIR/dsk2
log_must truncate -s $MINVDEVSIZE $DISK0 log_must truncate -s $MINVDEVSIZE $DISK0
log_must truncate -s $(($MINVDEVSIZE * 3)) $DISK1 log_must truncate -s $(($MINVDEVSIZE * 3)) $DISK1
@ -44,7 +44,7 @@ log_must truncate -s $MINVDEVSIZE $DISK2
function cleanup function cleanup
{ {
default_cleanup_noexit default_cleanup_noexit
log_must rm -f $DISK0 $DISK1 $DISK2 log_must rm -rf $DISKDIR
} }
# #

View File

@ -21,11 +21,10 @@
. $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/libtest.shlib
. $STF_SUITE/tests/functional/removal/removal.kshlib . $STF_SUITE/tests/functional/removal/removal.kshlib
TMPDIR=${TMPDIR:-$TEST_BASE_DIR} DISKDIR=$(mktemp -d)
DISK1="$DISKDIR/dsk1"
DISK1="$TMPDIR/dsk1" DISK2="$DISKDIR/dsk2"
DISK2="$TMPDIR/dsk2" DISK3="$DISKDIR/dsk3"
DISK3="$TMPDIR/dsk3"
DISKS="$DISK1 $DISK2 $DISK3" DISKS="$DISK1 $DISK2 $DISK3"
log_must mkfile $(($MINVDEVSIZE * 2)) $DISK1 log_must mkfile $(($MINVDEVSIZE * 2)) $DISK1
@ -35,7 +34,7 @@ log_must mkfile $(($MINVDEVSIZE * 2)) $DISK3
function cleanup function cleanup
{ {
default_cleanup_noexit default_cleanup_noexit
log_must rm -f $DISKS log_must rm -rf $DISKDIR
} }
log_must default_setup_noexit "$DISK1 mirror $DISK2 $DISK3" log_must default_setup_noexit "$DISK1 mirror $DISK2 $DISK3"

View File

@ -21,28 +21,28 @@
. $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/libtest.shlib
. $STF_SUITE/tests/functional/removal/removal.kshlib . $STF_SUITE/tests/functional/removal/removal.kshlib
TMPDIR=${TMPDIR:-$TEST_BASE_DIR} DISKDIR=$(mktemp -d)
log_must mkfile $MINVDEVSIZE $TMPDIR/dsk1 log_must mkfile $MINVDEVSIZE $DISKDIR/dsk1
log_must mkfile $MINVDEVSIZE $TMPDIR/dsk2 log_must mkfile $MINVDEVSIZE $DISKDIR/dsk2
log_must mkfile $MINVDEVSIZE $TMPDIR/dsk3 log_must mkfile $MINVDEVSIZE $DISKDIR/dsk3
DISKS1="$TMPDIR/dsk1" DISKS1="$DISKDIR/dsk1"
DISKS2="$TMPDIR/dsk2 $TMPDIR/dsk3" DISKS2="$DISKDIR/dsk2 $DISKDIR/dsk3"
DISKS="$DISKS1 $DISKS2" DISKS="$DISKS1 $DISKS2"
function cleanup function cleanup
{ {
default_cleanup_noexit default_cleanup_noexit
log_must rm -f $DISKS log_must rm -rf $DISKDIR
} }
log_must default_setup_noexit "$DISKS1 raidz $DISKS2" log_must default_setup_noexit "$DISKS1 raidz $DISKS2"
log_onexit cleanup log_onexit cleanup
# Attempt to remove the non raidz disk. # Attempt to remove the non raidz disk.
log_mustnot zpool remove $TESTPOOL $TMPDIR/dsk1 log_mustnot zpool remove $TESTPOOL $DISKDIR/dsk1
# Attempt to remove one of the raidz disks. # Attempt to remove one of the raidz disks.
log_mustnot zpool remove $TESTPOOL $TMPDIR/dsk2 log_mustnot zpool remove $TESTPOOL $DISKDIR/dsk2
# Attempt to remove the raidz. # Attempt to remove the raidz.
log_mustnot zpool remove $TESTPOOL raidz1-1 log_mustnot zpool remove $TESTPOOL raidz1-1