1*9c6ed9a8SPeter Holm#!/bin/sh 2*9c6ed9a8SPeter Holm 3*9c6ed9a8SPeter Holm# 4*9c6ed9a8SPeter Holm# Copyright (c) 2026 Peter Holm <pho@FreeBSD.org> 5*9c6ed9a8SPeter Holm# 6*9c6ed9a8SPeter Holm# SPDX-License-Identifier: BSD-2-Clause 7*9c6ed9a8SPeter Holm# 8*9c6ed9a8SPeter Holm 9*9c6ed9a8SPeter Holm# Test rename(2) over nfs. 10*9c6ed9a8SPeter Holm# This needs to be in /etc/exports: /mnt -maproot=root 127.0.0.1 11*9c6ed9a8SPeter Holm 12*9c6ed9a8SPeter Holm# "panic: Lock rename not exclusively locked @ ../../../kern/vfs_subr.c:5878" seen 13*9c6ed9a8SPeter Holm 14*9c6ed9a8SPeter Holm. ../default.cfg 15*9c6ed9a8SPeter Holm 16*9c6ed9a8SPeter Holm[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 17*9c6ed9a8SPeter Holmgrep -q $mntpoint /etc/exports || 18*9c6ed9a8SPeter Holm { echo "$mntpoint missing from /etc/exports"; exit 0; } 19*9c6ed9a8SPeter Holmps -x | grep -v grep | grep -q nfsd || { echo "nfsd is not running"; exit 0; } 20*9c6ed9a8SPeter Holm 21*9c6ed9a8SPeter Holmset -u 22*9c6ed9a8SPeter Holmmp1=$mntpoint 23*9c6ed9a8SPeter Holmmp2=${mntpoint}2 24*9c6ed9a8SPeter Holm 25*9c6ed9a8SPeter Holmmount | grep "$mp2" | grep nfs > /dev/null && umount -f $mp2 26*9c6ed9a8SPeter Holmmount | grep "$mp1" | grep -q /md && umount -f $mp1 27*9c6ed9a8SPeter Holmmdconfig -l | grep -q $mdstart && mdconfig -d -u $mdstart 28*9c6ed9a8SPeter Holm 29*9c6ed9a8SPeter Holmset -e 30*9c6ed9a8SPeter Holmmdconfig -a -t swap -s 2g -u $mdstart 31*9c6ed9a8SPeter Holmnewfs $newfs_flags /dev/md$mdstart > /dev/null 32*9c6ed9a8SPeter Holmmount /dev/md$mdstart $mp1 33*9c6ed9a8SPeter Holmset +e 34*9c6ed9a8SPeter Holm 35*9c6ed9a8SPeter Holmmkdir $mp1/stressX $mp1/stressX.control 36*9c6ed9a8SPeter Holmchmod 777 $mp1/stressX $mp1/stressX.control 37*9c6ed9a8SPeter Holm 38*9c6ed9a8SPeter Holm[ ! -d $mp2 ] && mkdir $mp2 39*9c6ed9a8SPeter Holmchmod 777 $mp2 40*9c6ed9a8SPeter Holm 41*9c6ed9a8SPeter Holmmount -t nfs -o tcp -o retrycnt=3 -o soft -o rw \ 42*9c6ed9a8SPeter Holm 127.0.0.1:$mp1 $mp2 43*9c6ed9a8SPeter Holm 44*9c6ed9a8SPeter Holmsleep 1 45*9c6ed9a8SPeter Holmexport CTRLDIR=$mp2/stressX.control 46*9c6ed9a8SPeter Holmexport RUNDIR=$mp2/stressX 47*9c6ed9a8SPeter Holmexport renameLOAD=100 48*9c6ed9a8SPeter Holmexport runRUNTIME=5m 49*9c6ed9a8SPeter Holmexport TESTPROGS=" 50*9c6ed9a8SPeter Holmtestcases/rename/rename 51*9c6ed9a8SPeter Holmtestcases/swap/swap" 52*9c6ed9a8SPeter Holmsu -m $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS' 53*9c6ed9a8SPeter Holm 54*9c6ed9a8SPeter Holmumount -f $mp2 > /dev/null 2>&1 55*9c6ed9a8SPeter Holmumount -f $mp1 > /dev/null 2>&1 56*9c6ed9a8SPeter Holmmdconfig -d -u $mdstart 57*9c6ed9a8SPeter Holmexit 0 58