Test export-lookup-evict-race in a loop with tracing.

This test hits the unmount hang consistently in our CI the most,
so run it in a tight loop and enable tracing. Discard traces when
the run succeeded.

This will blow up if a hung task timeout occurs, so we should
crash on panic and then extract traces from the crash. Make sure
we don't wait for an hour before doing so, then, too.

Signed-off-by: Auke Kok <auke.kok@versity.com>
This commit is contained in:
Auke Kok
2025-12-10 14:12:31 -08:00
parent 1768f69c3c
commit 523bbfd0b2
2 changed files with 14 additions and 60 deletions

View File

@@ -92,10 +92,14 @@ done
T_TRACE_DUMP="0"
T_TRACE_PRINTK="0"
T_PORT_START="19700"
T_LOOP_ITER="1"
T_LOOP_ITER="100"
# array declarations to be able to use array ops
declare -a T_TRACE_GLOB
T_TRACE_GLOB=( "scoutfs*" )
# CI sets this to 3600, but, for this case we want it very short
echo 30 > /proc/sys/kernel/hung_task_timeout_secs
while true; do
case $1 in
@@ -493,6 +497,11 @@ crash_monitor()
bad=1
fi
if dmesg | grep -q "blocked for more than"; then
echo "run-tests monitor saw blocked task message"
bad=1
fi
if dmesg | grep -q "error indicated by fence action" ; then
echo "run-tests monitor saw fence agent error message"
bad=1
@@ -504,6 +513,8 @@ crash_monitor()
fi
if [ "$bad" != 0 ]; then
sync & # maybe this gets logs synced...
sleep .1
echo "run-tests monitor triggering crash"
echo c > /proc/sysrq-trigger
exit 1
@@ -706,6 +717,8 @@ for t in $tests; do
# stop looping if we didn't pass
if [ "$sts" != "$T_PASS_STATUS" ]; then
break;
else
echo > /sys/kernel/debug/tracing/trace
fi
done

View File

@@ -1,60 +1 @@
export-get-name-parent.sh
basic-block-counts.sh
basic-bad-mounts.sh
basic-posix-acl.sh
inode-items-updated.sh
simple-inode-index.sh
simple-staging.sh
simple-release-extents.sh
simple-readdir.sh
get-referring-entries.sh
fallocate.sh
basic-truncate.sh
data-prealloc.sh
setattr_more.sh
offline-extent-waiting.sh
move-blocks.sh
projects.sh
large-fragmented-free.sh
format-version-forward-back.sh
enospc.sh
mmap.sh
srch-safe-merge-pos.sh
srch-basic-functionality.sh
simple-xattr-unit.sh
retention-basic.sh
totl-xattr-tag.sh
quota.sh
lock-refleak.sh
lock-shrink-consistency.sh
lock-shrink-read-race.sh
lock-pr-cw-conflict.sh
lock-revoke-getcwd.sh
lock-recover-invalidate.sh
export-lookup-evict-race.sh
createmany-parallel.sh
createmany-large-names.sh
createmany-rename-large-dir.sh
stage-release-race-alloc.sh
stage-multi-part.sh
o_tmpfile.sh
basic-posix-consistency.sh
dirent-consistency.sh
mkdir-rename-rmdir.sh
lock-ex-race-processes.sh
cross-mount-data-free.sh
persistent-item-vers.sh
setup-error-teardown.sh
resize-devices.sh
change-devices.sh
fence-and-reclaim.sh
quorum-heartbeat-timeout.sh
orphan-inodes.sh
mount-unmount-race.sh
client-unmount-recovery.sh
createmany-parallel-mounts.sh
archive-light-cycle.sh
block-stale-reads.sh
inode-deletion.sh
renameat2-noreplace.sh
xfstests.sh