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