xref: /freebsd/tools/test/stress2/misc/nfs18.sh (revision 4d846d260e2b9a3d4d0a701462568268cbfe7a5b)
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