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