122f5f4a1SPeter Holm#!/bin/sh 222f5f4a1SPeter Holm 322f5f4a1SPeter Holm# 4*4d846d26SWarner Losh# SPDX-License-Identifier: BSD-2-Clause 522f5f4a1SPeter Holm# 622f5f4a1SPeter Holm# Copyright (c) 2021 Peter Holm 722f5f4a1SPeter Holm# 822f5f4a1SPeter Holm# Redistribution and use in source and binary forms, with or without 922f5f4a1SPeter Holm# modification, are permitted provided that the following conditions 1022f5f4a1SPeter Holm# are met: 1122f5f4a1SPeter Holm# 1. Redistributions of source code must retain the above copyright 1222f5f4a1SPeter Holm# notice, this list of conditions and the following disclaimer. 1322f5f4a1SPeter Holm# 2. Redistributions in binary form must reproduce the above copyright 1422f5f4a1SPeter Holm# notice, this list of conditions and the following disclaimer in the 1522f5f4a1SPeter Holm# documentation and/or other materials provided with the distribution. 1622f5f4a1SPeter Holm# 1722f5f4a1SPeter Holm# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1822f5f4a1SPeter Holm# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1922f5f4a1SPeter Holm# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2022f5f4a1SPeter Holm# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 2122f5f4a1SPeter Holm# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2222f5f4a1SPeter Holm# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2322f5f4a1SPeter Holm# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2422f5f4a1SPeter Holm# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2522f5f4a1SPeter Holm# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2622f5f4a1SPeter Holm# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2722f5f4a1SPeter Holm# SUCH DAMAGE. 2822f5f4a1SPeter Holm# 2922f5f4a1SPeter Holm 3022f5f4a1SPeter Holm# msdosfs rename test over nfs loopback mount 3122f5f4a1SPeter Holm# This needs to be in /etc/exports: /mnt -maproot=root 127.0.0.1 3222f5f4a1SPeter Holm 3322f5f4a1SPeter Holm. ../default.cfg 3422f5f4a1SPeter Holm 3522f5f4a1SPeter Holm[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 3622f5f4a1SPeter Holmmp1=$mntpoint 3722f5f4a1SPeter Holmmp2=$mntpoint$((mdstart + 1)) 3822f5f4a1SPeter Holmgrep -q $mp1 /etc/exports || 3922f5f4a1SPeter Holm { echo "$mp1 missing from /etc/exports"; exit 0; } 4022f5f4a1SPeter Holm[ -x /sbin/mount_msdosfs ] || exit 4122f5f4a1SPeter Holm 4222f5f4a1SPeter Holmmount | grep "$mp2 " | grep nfs > /dev/null && umount -f $mp2 4322f5f4a1SPeter Holmmount | grep "$mp1 " | grep /md > /dev/null && umount -f $mp1 4422f5f4a1SPeter Holmmdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart 4522f5f4a1SPeter Holm 4622f5f4a1SPeter Holmkill -HUP `pgrep mountd` # loopback workaround 4722f5f4a1SPeter Holmmdconfig -a -t swap -s 1g -u $mdstart 4822f5f4a1SPeter Holmset -e 4922f5f4a1SPeter Holm 50608c97bfSPeter Holmgpart create -s bsd md$mdstart 51608c97bfSPeter Holmgpart add -t freebsd-ufs md$mdstart 52608c97bfSPeter Holmpart=a 5322f5f4a1SPeter Holmnewfs_msdos -F 32 -b 8192 /dev/md${mdstart}$part > /dev/null 5422f5f4a1SPeter Holmmkdir -p $mp1; chmod 777 $mp1 5522f5f4a1SPeter Holmmount -t msdosfs -o rw /dev/md${mdstart}$part $mp1 5622f5f4a1SPeter Holmset +e 5722f5f4a1SPeter Holm 5822f5f4a1SPeter Holmmkdir $mp1/stressX 5922f5f4a1SPeter Holmchmod 777 $mp1/stressX 6022f5f4a1SPeter Holm 6122f5f4a1SPeter Holmmkdir -p $mp2 6222f5f4a1SPeter Holmchmod 777 $mp2 6322f5f4a1SPeter Holm 6422f5f4a1SPeter Holmmount -t nfs -o tcp -o retrycnt=3 -o rw \ 6522f5f4a1SPeter Holm 127.0.0.1:$mp1 $mp2; s=$? 6622f5f4a1SPeter Holm 6722f5f4a1SPeter Holmexport LOAD=80 6822f5f4a1SPeter Holmexport renameLOAD=100 6922f5f4a1SPeter Holmexport TESTPROGS=" 7022f5f4a1SPeter Holmtestcases/rename/rename 7122f5f4a1SPeter Holmtestcases/swap/swap 7222f5f4a1SPeter Holm" 7322f5f4a1SPeter Holmexport INODES=9999 # No inodes on a msdos fs 7422f5f4a1SPeter Holm 7522f5f4a1SPeter Holmexport RUNDIR=$mp2/stressX 7622f5f4a1SPeter Holmexport runRUNTIME=2m 7722f5f4a1SPeter Holmif [ $s -eq 0 ]; then 7822f5f4a1SPeter Holm su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' 7922f5f4a1SPeter Holm 8022f5f4a1SPeter Holm for i in `jot 10`; do 8122f5f4a1SPeter Holm umount $mp2 && break 8222f5f4a1SPeter Holm sleep 2 8322f5f4a1SPeter Holm done 8422f5f4a1SPeter Holmfi 8522f5f4a1SPeter Holmsleep .5 8622f5f4a1SPeter Holmfor i in `jot 10`; do 8722f5f4a1SPeter Holm umount $mp1 && break 8822f5f4a1SPeter Holm sleep 2 8922f5f4a1SPeter Holmdone 9022f5f4a1SPeter Holmmount | grep -q "on $mp1 " && umount -f $mp1 9122f5f4a1SPeter Holmmdconfig -d -u $mdstart 9222f5f4a1SPeter Holmexit 0 93