git: fc22fe5c7405 - main - stress2: Use two memory disks for this test

From: Peter Holm <pho_at_FreeBSD.org>
Date: Tue, 12 Oct 2021 06:45:47 UTC
The branch main has been updated by pho:

URL: https://cgit.FreeBSD.org/src/commit/?id=fc22fe5c74055802ac41090f345c8a45eab396b6

commit fc22fe5c74055802ac41090f345c8a45eab396b6
Author:     Peter Holm <pho@FreeBSD.org>
AuthorDate: 2021-10-12 06:45:19 +0000
Commit:     Peter Holm <pho@FreeBSD.org>
CommitDate: 2021-10-12 06:45:19 +0000

    stress2: Use two memory disks for this test
---
 tools/test/stress2/misc/unionfs.sh | 72 ++++++++++++++++++++++++++++----------
 1 file changed, 54 insertions(+), 18 deletions(-)

diff --git a/tools/test/stress2/misc/unionfs.sh b/tools/test/stress2/misc/unionfs.sh
index 6e04e809b501..16572de6b3b5 100755
--- a/tools/test/stress2/misc/unionfs.sh
+++ b/tools/test/stress2/misc/unionfs.sh
@@ -26,29 +26,65 @@
 # SUCH DAMAGE.
 #
 
+# unionfs test using two memory disks
+
 [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+. ../default.cfg
 
-# "insmntque: non-locked vp: 0xd2462e10 is not exclusive locked ..." seen.
+# unionfs usage example from the man page:
+#	   mount -t cd9660 -o ro /dev/cd0 /usr/src
+#	   mount -t unionfs -o noatime /var/obj	/usr/src
 
-. ../default.cfg
+md1=$mdstart
+md2=$((md1 + 1))
+mp1=/mnt$md1
+mp2=/mnt$md2
+mkdir -p $mp1 $mp2
+set -e
+for i in $mp1 $mp2; do
+	mount | grep -q "on $i " && umount -f $i
+done
+for i in $md1 $md2; do
+	mdconfig -l | grep -q md$i && mdconfig -d -u $i
+done
 
-truncate -s 256M $diskimage
+mdconfig -a -t swap -s 2g -u $md1
+mdconfig -a -t swap -s 2g -u $md2
+newfs $newfs_flags -n md$md1 > /dev/null
+newfs $newfs_flags -n md$md2 > /dev/null
+mount /dev/md$md1 $mp1
+mount /dev/md$md2 $mp2
 
-mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
-mdconfig -l | grep -q md$mdstart &&  mdconfig -d -u $mdstart
+mount -t unionfs -o noatime $mp1 $mp2
+mount | grep -E "$mp1|$mp2"
+set +e
+
+export RUNDIR=$mp2/stressX
+export CTRLDIR=$mp2/stressX.control
+export runRUNTIME=2m
+
+# SU work around for "disk full"
+set `df -ik $mp2 | tail -1 | awk '{print $4,$7}'`
+export KBLOCKS=$(($1 / 2))
+export INODES=$(($2 / 2))
 
-mdconfig -a -t vnode -f $diskimage -u $mdstart
-bsdlabel -w md$mdstart auto
-newfs $newfs_flags md${mdstart}$part > /dev/null
-mount /dev/md${mdstart}$part $mntpoint
-mount -t unionfs -o noatime $mntpoint /tmp
-export RUNDIR=/tmp/stressX
-export runRUNTIME=10m            # Run tests for 10 minutes
 (cd ..; ./run.sh disk.cfg)
-umount /tmp
-while mount | grep $mntpoint | grep -q /dev/md; do
-	umount $mntpoint || sleep 1
+
+find $RUNDIR -ls
+for i in `jot 5`; do
+	mount |  grep -q unionfs || break
+	umount $mp2 || sleep 2	# The unionfs mount
+done
+mount | grep unionfs && exit 1
+
+for i in `jot 5`; do
+	umount $mp2 && break
+	sleep 2
 done
-mdconfig -d -u $mdstart
-rm -f $diskimage
-exit 0
+mount | grep -q "on $mp2 " && exit 1
+n=`find $mp1/stressX | wc -l`
+[ $n -eq 1 ] && s=0 || s=1
+umount $mp1
+mdconfig -d -u $md2
+mdconfig -d -u $md1
+exit $s