aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Holm <pho@FreeBSD.org>2021-10-12 06:45:19 +0000
committerPeter Holm <pho@FreeBSD.org>2021-10-12 06:45:19 +0000
commitfc22fe5c74055802ac41090f345c8a45eab396b6 (patch)
tree9f8b41749b3168e527bf2d7917cc041a75b5f0e2
parent120b20bdf49630cf2a7dbc5f93b9e985e1f4f198 (diff)
downloadsrc-fc22fe5c74055802ac41090f345c8a45eab396b6.tar.gz
src-fc22fe5c74055802ac41090f345c8a45eab396b6.zip
stress2: Use two memory disks for this test
-rwxr-xr-xtools/test/stress2/misc/unionfs.sh72
1 files 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