xref: /freebsd/tools/test/stress2/misc/newfs8.sh (revision ef777be98543f7daae90bd123d4fc1ec4a54efc2)
1#!/bin/sh
2
3#
4# Copyright (c) 2025 Peter Holm <pho@FreeBSD.org>
5#
6# SPDX-License-Identifier: BSD-2-Clause
7#
8
9# Variation of newfs.sh with VM pressure added
10
11[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
12
13. ../default.cfg
14
15set -u
16mount | grep "$mntpoint" | grep md$mdstart > /dev/null &&
17    umount $mntpoint
18mdconfig -l | grep md$mdstart > /dev/null &&  mdconfig -d -u $mdstart
19
20mdconfig -a -t swap -s 20g -u $mdstart
21
22log=/tmp/newfs.sh.log
23s=0
24export RUNDIR=$mntpoint/stressX
25export runRUNTIME=2m
26export RUNTIME=$runRUNTIME
27export CTRLDIR=$mntpoint/stressX.control
28start=`date '+%s'`
29for opt in -O2 -U -j; do
30	blocksize=4096
31	while [ $blocksize -le 65536 ]; do
32		for i in 8 4 2 1; do
33			fragsize=$((blocksize / i))
34			echo "`date +%T` newfs $opt -b $blocksize -f $fragsize"\
35			    "md$mdstart"
36			newfs $opt -b $blocksize -f $fragsize \
37			    md$mdstart > /dev/null || { s=1; continue; }
38			[ "$opt" = "-O2" ] && tunefs -n disable md$mdstart > /dev/null 2>&1
39			mount /dev/md$mdstart $mntpoint || { s=2; continue; }
40			chmod 777 $mntpoint
41			su $testuser -c \
42				"(cd ..; ./run.sh io.cfg > /dev/null 2>&1)" &
43			sleep 30
44			while pkill swap; do :; done
45			while pkill -U $testuser; do :; done
46			../tools/killall.sh || { echo "Failed at $opt -b $blocksize -f $fragsize$"; \
47				exit 3; }
48			wait
49			while mount | grep "$mntpoint" | \
50			    grep -q md$mdstart; do
51				umount $mntpoint > /dev/null 2>&1 || sleep 1
52			done
53			fsck -fy /dev/md$mdstart > $log 2>&1
54			grep -q "WAS MODIFIED" $log && {
55				s=4
56				cat $log
57			}
58		done
59		blocksize=$((blocksize * 2))
60	done
61	if [ $((`date '+%s'` - start)) -gt 3600 ]; then
62		echo "Timed out in $opt -b $blocksize -f $fragsize$"
63		s=5
64		break
65	fi
66done
67mdconfig -d -u $mdstart
68rm -f $log
69exit $s
70