xref: /freebsd/tools/test/stress2/misc/nfs18.sh (revision 43a5ec4eb41567cc92586503212743d89686d78f)
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
50bsdlabel -w md$mdstart auto
51newfs_msdos -F 32 -b 8192 /dev/md${mdstart}$part > /dev/null
52mkdir -p $mp1; chmod 777 $mp1
53mount -t msdosfs -o rw /dev/md${mdstart}$part $mp1
54set +e
55
56mkdir $mp1/stressX
57chmod 777 $mp1/stressX
58
59mkdir -p $mp2
60chmod 777 $mp2
61
62mount -t nfs -o tcp -o retrycnt=3 -o rw \
63    127.0.0.1:$mp1 $mp2; s=$?
64
65export LOAD=80
66export renameLOAD=100
67export TESTPROGS="
68testcases/rename/rename
69testcases/swap/swap
70"
71export INODES=9999		# No inodes on a msdos fs
72
73export RUNDIR=$mp2/stressX
74export runRUNTIME=2m
75if [ $s -eq 0 ]; then
76	su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS'
77
78	for i in `jot 10`; do
79		umount $mp2 && break
80		sleep 2
81	done
82fi
83sleep .5
84for i in `jot 10`; do
85	umount $mp1 && break
86	sleep 2
87done
88mount | grep -q "on $mp1 " && umount -f $mp1
89mdconfig -d -u $mdstart
90exit 0
91