xref: /freebsd/tools/test/stress2/misc/unionfs22.sh (revision 5fe1964fa05632cb86459a64debd92f9dca37ed3)
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 unionfs7.sh, but with unionfs lookup
12*5fe1964fSJason A. Harmening# traversing a tmpfs mount.
13*5fe1964fSJason A. Harmening# No issues seen with this test.
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 $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. Harmeningumount $mp2
74*5fe1964fSJason A. Harmeningn=`find $mp1/stressX | wc -l`
75*5fe1964fSJason A. Harmening[ $n -eq 1 ] && s=0 || { find $mp1/stressX -ls | head -12; s=1; }
76*5fe1964fSJason A. Harmeningumount $mp1
77*5fe1964fSJason A. Harmeningexit $s
78