1*5fe1964fSJason A. Harmening#!/bin/sh 2*5fe1964fSJason A. Harmening 3*5fe1964fSJason A. Harmening# 4*5fe1964fSJason A. Harmening# Copyright (c) 2024 Peter Holm <pho@FreeBSD.org> 5*5fe1964fSJason A. Harmening# Copyright (c) 2026 Jason Harmening <jah@FreeBSD.org> 6*5fe1964fSJason A. Harmening# 7*5fe1964fSJason A. Harmening# SPDX-License-Identifier: BSD-2-Clause 8*5fe1964fSJason A. Harmening# 9*5fe1964fSJason A. Harmening 10*5fe1964fSJason A. Harmening# unionfs(4) test 11*5fe1964fSJason A. Harmening# Variation of unionfs22.sh, but with '-o below' 12*5fe1964fSJason A. Harmening# Reproduces "lockmgr_xlock_hard: recursing on non recursive lockmgr" 13*5fe1964fSJason A. Harmening# panic (PR 298201) 14*5fe1964fSJason A. Harmening 15*5fe1964fSJason A. Harmening[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 16*5fe1964fSJason A. Harmening. ../default.cfg 17*5fe1964fSJason A. Harmening 18*5fe1964fSJason A. Harmeningmp1=/mnt$mdstart 19*5fe1964fSJason A. Harmeningmp2=/mnt$((mdstart + 1)) 20*5fe1964fSJason A. Harmeningmp3=$mp2/unionfs 21*5fe1964fSJason A. Harmening 22*5fe1964fSJason A. Harmeningmkdir -p $mp1 $mp2 23*5fe1964fSJason A. Harmeningset -e 24*5fe1964fSJason A. Harmeningfor i in $mp1 $mp2; do 25*5fe1964fSJason A. Harmening mount | grep -q "on $i " && umount -f $i 26*5fe1964fSJason A. Harmeningdone 27*5fe1964fSJason A. Harmening 28*5fe1964fSJason A. Harmeningmount -o size=4g -t tmpfs dummy $mp1 29*5fe1964fSJason A. Harmeningmount -o size=4g -t tmpfs dummy $mp2 30*5fe1964fSJason A. Harmeningmkdir -p $mp3 31*5fe1964fSJason A. Harmening 32*5fe1964fSJason A. Harmeningmount -t unionfs -o noatime -o below $mp1 $mp3 33*5fe1964fSJason A. Harmeningset +e 34*5fe1964fSJason A. Harmeningexport 'INODES=100000' 35*5fe1964fSJason A. Harmening 36*5fe1964fSJason A. Harmeningexport CTRLDIR=$mp3/stressX.control 37*5fe1964fSJason A. Harmeningexport INCARNATIONS=10 38*5fe1964fSJason A. Harmeningexport LOAD=80 39*5fe1964fSJason A. Harmeningexport RUNDIR=$mp3/stressX 40*5fe1964fSJason A. Harmeningexport runRUNTIME=5m 41*5fe1964fSJason A. Harmeningexport rwLOAD=80 42*5fe1964fSJason A. Harmeningexport symlinkLOAD=80 43*5fe1964fSJason A. Harmening 44*5fe1964fSJason A. Harmeningexport TESTPROGS=" 45*5fe1964fSJason A. Harmeningunionfs/stress2/testcases/lockf2/lockf2 46*5fe1964fSJason A. Harmeningunionfs/stress2/testcases/symlink/symlink 47*5fe1964fSJason A. Harmeningunionfs/stress2/testcases/openat/openat 48*5fe1964fSJason A. Harmeningunionfs/stress2/testcases/rw/rw 49*5fe1964fSJason A. Harmeningunionfs/stress2/testcases/fts/fts 50*5fe1964fSJason A. Harmeningunionfs/stress2/testcases/link/link 51*5fe1964fSJason A. Harmeningunionfs/stress2/testcases/lockf/lockf 52*5fe1964fSJason A. Harmeningunionfs/stress2/testcases/creat/creat 53*5fe1964fSJason A. Harmeningunionfs/stress2/testcases/mkdir/mkdir 54*5fe1964fSJason A. Harmeningunionfs/stress2/testcases/rename/rename 55*5fe1964fSJason A. Harmeningunionfs/stress2/testcases/mkfifo/mkfifo 56*5fe1964fSJason A. Harmeningunionfs/stress2/testcases/dirnprename/dirnprename 57*5fe1964fSJason A. Harmeningunionfs/stress2/testcases/dirrename/dirrename 58*5fe1964fSJason A. Harmeningunionfs/stress2/testcases/swap/swap 59*5fe1964fSJason A. Harmening" 60*5fe1964fSJason A. Harmening 61*5fe1964fSJason A. Harmeningcp -r ../../stress2 $mp3 62*5fe1964fSJason A. Harmeningexport TESTPROGS=`echo $TESTPROGS | sed 's/\n/ /g'` 63*5fe1964fSJason A. Harmening 64*5fe1964fSJason A. Harmeningset +e 65*5fe1964fSJason A. Harmeningchmod 777 $mp3 66*5fe1964fSJason A. Harmeningsu $testuser -c \ 67*5fe1964fSJason A. Harmening "(cd $mp2; ./unionfs/stress2/testcases/run/run $TESTPROGS)" 68*5fe1964fSJason A. Harmening 69*5fe1964fSJason A. Harmeningwhile mount | grep -Eq "on $mp3 .*unionfs"; do 70*5fe1964fSJason A. Harmening umount $mp3 && break 71*5fe1964fSJason A. Harmening sleep 5 72*5fe1964fSJason A. Harmeningdone 73*5fe1964fSJason A. Harmeningn=`find $mp3/stressX | wc -l` 74*5fe1964fSJason A. Harmening[ $n -eq 1 ] && s=0 || { find $mp3/stressX -ls | head -12; s=1; } 75*5fe1964fSJason A. Harmeningumount $mp2 76*5fe1964fSJason A. Harmeningumount $mp1 77*5fe1964fSJason A. Harmeningexit $s 78