18a272653SPeter Holm#!/bin/sh 28a272653SPeter Holm 38a272653SPeter Holm# 48a272653SPeter Holm# Copyright (c) 2008-2011 Peter Holm <pho@FreeBSD.org> 58a272653SPeter Holm# All rights reserved. 68a272653SPeter Holm# 78a272653SPeter Holm# Redistribution and use in source and binary forms, with or without 88a272653SPeter Holm# modification, are permitted provided that the following conditions 98a272653SPeter Holm# are met: 108a272653SPeter Holm# 1. Redistributions of source code must retain the above copyright 118a272653SPeter Holm# notice, this list of conditions and the following disclaimer. 128a272653SPeter Holm# 2. Redistributions in binary form must reproduce the above copyright 138a272653SPeter Holm# notice, this list of conditions and the following disclaimer in the 148a272653SPeter Holm# documentation and/or other materials provided with the distribution. 158a272653SPeter Holm# 168a272653SPeter Holm# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 178a272653SPeter Holm# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 188a272653SPeter Holm# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 198a272653SPeter Holm# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 208a272653SPeter Holm# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 218a272653SPeter Holm# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 228a272653SPeter Holm# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 238a272653SPeter Holm# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 248a272653SPeter Holm# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 258a272653SPeter Holm# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 268a272653SPeter Holm# SUCH DAMAGE. 278a272653SPeter Holm# 288a272653SPeter Holm 298a272653SPeter Holm# phk has seen freezes with this newfs option: "-b 32768 -f 4096 -O2" 308a272653SPeter Holm# 318a272653SPeter Holm# Deadlocks seen with this test and: 328a272653SPeter Holm# newfs -b 4096 -f 4096 -O2 md0c on a 128 Mb FS 338a272653SPeter Holm# newfs -b 4096 -f 1024 -O2 md0c on a 64 Mb FS 348a272653SPeter Holm# 20070505 newfs -b 4096 -f 4096 -O2 md0c on a 32 Mb FS: panic: lockmgr: locking against myself 358a272653SPeter Holm 368a272653SPeter Holm[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 378a272653SPeter Holm 388a272653SPeter Holm. ../default.cfg 398a272653SPeter Holm 408a272653SPeter Holmsize=$((32 * 1024 * 1024)) 418a272653SPeter Holmopt="-O2" # newfs option. Eg. -U 428a272653SPeter Holm 43*608c97bfSPeter Holmmount | grep "$mntpoint" | grep -q md$mdstart && umount $mntpoint 448a272653SPeter Holm[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart 458a272653SPeter Holm 468a272653SPeter Holms=0 478a272653SPeter Holmwhile [ $size -le $((128 * 1024 * 1024)) ]; do 488a272653SPeter Holm mb=$((size / 1024 / 1024)) 498a272653SPeter Holm rm -f $diskimage 508a272653SPeter Holm dd if=/dev/zero of=$diskimage bs=1m count=$mb status=none 518a272653SPeter Holm mdconfig -a -t vnode -f $diskimage -u $mdstart || 528a272653SPeter Holm { rm -f $diskimage; exit 1; } 538a272653SPeter Holm blocksize=4096 548a272653SPeter Holm while [ $blocksize -le 65536 ]; do 558a272653SPeter Holm for i in 1 2 4 8; do 568a272653SPeter Holm fragsize=$((blocksize / i)) 57*608c97bfSPeter Holm newfs -b $blocksize -f $fragsize $opt md$mdstart > \ 588a272653SPeter Holm /dev/null 2>&1 59*608c97bfSPeter Holm mount /dev/md$mdstart $mntpoint 608a272653SPeter Holm export RUNDIR=$mntpoint/stressX 618a272653SPeter Holm export runRUNTIME=15s 628a272653SPeter Holm export RUNTIME=$runRUNTIME 638a272653SPeter Holm export CTRLDIR=$mntpoint/stressX.control 648a272653SPeter Holm (cd ..; ./run.sh disk.cfg) > /dev/null 2>&1 & 658a272653SPeter Holm sleep 15 668a272653SPeter Holm ../tools/killall.sh 678a272653SPeter Holm wait 688a272653SPeter Holm while mount | grep "$mntpoint" | \ 69*608c97bfSPeter Holm grep -q md$mdstart; do 708a272653SPeter Holm umount $mntpoint > /dev/null 2>&1 718a272653SPeter Holm done 72*608c97bfSPeter Holm checkfs /dev/md$mdstart || s=1 738a272653SPeter Holm done 748a272653SPeter Holm blocksize=$((blocksize * 2)) 758a272653SPeter Holm done 768a272653SPeter Holm mdconfig -d -u $mdstart 778a272653SPeter Holm size=$((size + 32 * 1024 * 1024)) 788a272653SPeter Holmdone 798a272653SPeter Holmrm -f $diskimage 808a272653SPeter Holmexit $s 81