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