diff options
Diffstat (limited to 'tools/test/stress2/misc/fdescfs2.sh')
-rwxr-xr-x | tools/test/stress2/misc/fdescfs2.sh | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tools/test/stress2/misc/fdescfs2.sh b/tools/test/stress2/misc/fdescfs2.sh new file mode 100755 index 000000000000..21b82dcddd5e --- /dev/null +++ b/tools/test/stress2/misc/fdescfs2.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +# +# Copyright (c) 2025 Peter Holm <pho@FreeBSD.org> +# +# SPDX-License-Identifier: BSD-2-Clause +# + +# Test scenario description by: Kyle Evans <kevans@FreeBSD.org> + +# "panic: mtx_lock() of destroyed mutex 0xffffffff83717540 @ /usr/src/sys/fs/fdescfs/fdesc_vnops.c:151" seen + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 +. ../default.cfg + +set -u + +kldstat | grep -q fdescfs.ko && { kldunload fdescfs.ko && wasloaded=1; } +while true; do + mount | grep -q "on $mntpoint " || + mount -t fdescfs dummy $mntpoint || continue + ls $mntpoint > /dev/null + if mount | grep -q "on $mntpoint "; then + if ! umount $mntpoint; then + umount -f $mntpoint || break + fi + fi +done > /dev/null 2>&1 & + +start=`date +%s` +while [ $((`date +%s` - start)) -lt 10 ]; do + kldstat | grep -q fdescfs.ko && + kldunload fdescfs.ko 2>/dev/null + sleep .1 + kldstat | grep -q fdescfs.ko || + kldload fdescfs.ko +done +kill %1 +wait +mount | grep -q "on $mntpoint " && umount $mntpoint +sleep .1 +set +u +[ $wasloaded ] || kldunload fdescfs.ko +exit 0 |