xref: /freebsd/tools/test/stress2/misc/unionfs22.sh (revision 5fe1964fa05632cb86459a64debd92f9dca37ed3)
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