xref: /freebsd/tools/test/stress2/misc/fdescfs3.sh (revision da20d88599d52667c9cd422632302cf5e2e19938)
1*da20d885SPeter Holm#!/bin/sh
2*da20d885SPeter Holm
3*da20d885SPeter Holm#
4*da20d885SPeter Holm# Copyright (c) 2025 Peter Holm <pho@FreeBSD.org>
5*da20d885SPeter Holm#
6*da20d885SPeter Holm# SPDX-License-Identifier: BSD-2-Clause
7*da20d885SPeter Holm#
8*da20d885SPeter Holm
9*da20d885SPeter Holm[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
10*da20d885SPeter Holm
11*da20d885SPeter Holm. ../default.cfg
12*da20d885SPeter Holm
13*da20d885SPeter Holmmounts=15		# Number of parallel scripts
14*da20d885SPeter Holmmdstart=$mdstart	# Use md unit numbers from this point
15*da20d885SPeter Holm
16*da20d885SPeter Holmif [ $# -eq 0 ]; then
17*da20d885SPeter Holm	for i in `jot $mounts`; do
18*da20d885SPeter Holm		m=$(( i + mdstart - 1 ))
19*da20d885SPeter Holm		[ ! -d ${mntpoint}$m ] && mkdir ${mntpoint}$m
20*da20d885SPeter Holm		mount | grep "$mntpoint" | grep -q md$m && umount ${mntpoint}$m
21*da20d885SPeter Holm	done
22*da20d885SPeter Holm	../testcases/swap/swap -t 2m -i 20 &
23*da20d885SPeter Holm
24*da20d885SPeter Holm	# start the parallel tests
25*da20d885SPeter Holm	touch /tmp/$0
26*da20d885SPeter Holm	for i in `jot $mounts`; do
27*da20d885SPeter Holm		m=$(( i + mdstart - 1 ))
28*da20d885SPeter Holm		./$0 $m &
29*da20d885SPeter Holm		./$0 find $m > /dev/null 2>&1 &
30*da20d885SPeter Holm	done
31*da20d885SPeter Holm	wait
32*da20d885SPeter Holmelse
33*da20d885SPeter Holm	if [ $1 = find ]; then
34*da20d885SPeter Holm		while [ -r /tmp/$0 ]; do
35*da20d885SPeter Holm			ls -lR ${mntpoint}*
36*da20d885SPeter Holm		done
37*da20d885SPeter Holm	else
38*da20d885SPeter Holm
39*da20d885SPeter Holm		# The test: Parallel mount and unmounts
40*da20d885SPeter Holm		start=`date +%s`
41*da20d885SPeter Holm		while [ $((`date +%s` - start)) -lt 120 ]; do
42*da20d885SPeter Holm			m=$1
43*da20d885SPeter Holm			mount -t fdescfs null ${mntpoint}$m
44*da20d885SPeter Holm			while mount | grep -qw $mntpoint$m; do
45*da20d885SPeter Holm				opt=$([ $((`date '+%s'` % 2)) -eq 0 ] && echo "-f")
46*da20d885SPeter Holm				umount $opt ${mntpoint}$m > /dev/null 2>&1
47*da20d885SPeter Holm			done
48*da20d885SPeter Holm		done
49*da20d885SPeter Holm		rm -f /tmp/$0
50*da20d885SPeter Holm	fi
51*da20d885SPeter Holmfi
52