xref: /freebsd/tools/test/stress2/misc/nfs18.sh (revision 5956d97f4b3204318ceb6aa9c77bd0bc6ea87a41)
1#!/bin/sh
2
3#
4# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
5#
6# Copyright (c) 2021 Peter Holm
7#
8# Redistribution and use in source and binary forms, with or without
9# modification, are permitted provided that the following conditions
10# are met:
11# 1. Redistributions of source code must retain the above copyright
12#    notice, this list of conditions and the following disclaimer.
13# 2. Redistributions in binary form must reproduce the above copyright
14#    notice, this list of conditions and the following disclaimer in the
15#    documentation and/or other materials provided with the distribution.
16#
17# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27# SUCH DAMAGE.
28#
29
30# msdosfs rename test over nfs loopback mount
31# This needs to be in /etc/exports: /mnt -maproot=root 127.0.0.1
32
33. ../default.cfg
34
35[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
36mp1=$mntpoint
37mp2=$mntpoint$((mdstart + 1))
38grep -q $mp1 /etc/exports ||
39	{ echo "$mp1 missing from /etc/exports"; exit 0; }
40[ -x /sbin/mount_msdosfs ] || exit
41
42mount | grep "$mp2 " | grep nfs > /dev/null && umount -f $mp2
43mount | grep "$mp1 " | grep /md > /dev/null && umount -f $mp1
44mdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart
45
46kill -HUP `pgrep mountd` # loopback workaround
47mdconfig -a -t swap -s 1g -u $mdstart
48set -e
49
50gpart create -s bsd md$mdstart
51gpart add -t freebsd-ufs md$mdstart
52part=a
53newfs_msdos -F 32 -b 8192 /dev/md${mdstart}$part > /dev/null
54mkdir -p $mp1; chmod 777 $mp1
55mount -t msdosfs -o rw /dev/md${mdstart}$part $mp1
56set +e
57
58mkdir $mp1/stressX
59chmod 777 $mp1/stressX
60
61mkdir -p $mp2
62chmod 777 $mp2
63
64mount -t nfs -o tcp -o retrycnt=3 -o rw \
65    127.0.0.1:$mp1 $mp2; s=$?
66
67export LOAD=80
68export renameLOAD=100
69export TESTPROGS="
70testcases/rename/rename
71testcases/swap/swap
72"
73export INODES=9999		# No inodes on a msdos fs
74
75export RUNDIR=$mp2/stressX
76export runRUNTIME=2m
77if [ $s -eq 0 ]; then
78	su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS'
79
80	for i in `jot 10`; do
81		umount $mp2 && break
82		sleep 2
83	done
84fi
85sleep .5
86for i in `jot 10`; do
87	umount $mp1 && break
88	sleep 2
89done
90mount | grep -q "on $mp1 " && umount -f $mp1
91mdconfig -d -u $mdstart
92exit 0
93