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