]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - tools/test/stress2/misc/marcus6.sh
zfs: merge openzfs/zfs@8ae86e2ed (master) into main
[FreeBSD/FreeBSD.git] / tools / test / stress2 / misc / marcus6.sh
1 #!/bin/sh
2
3 #
4 # SPDX-License-Identifier: BSD-2-Clause-FreeBSD
5 #
6 # Copyright (c) 2020 Peter Holm <pho@FreeBSD.org>
7 #
8 # Redistribution and use in source and binary forms, with or without
9 # modification, are permitted provided that the following conditions
10 # are met:
11 # 1. Redistributions of source code must retain the above copyright
12 #    notice, this list of conditions and the following disclaimer.
13 # 2. Redistributions in binary form must reproduce the above copyright
14 #    notice, this list of conditions and the following disclaimer in the
15 #    documentation and/or other materials provided with the distribution.
16 #
17 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 # ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 # SUCH DAMAGE.
28 #
29
30 [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
31 [ `swapinfo | wc -l` -eq 1 ] && exit 0
32
33 # Variation of marcus5.sh
34 # "panic: Assertion pgrp->pg_jobc > 0 failed at kern_proc.c:740" seen.
35
36 . ../default.cfg
37
38 mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint
39 mdconfig -l | grep -q md$mdstart &&  mdconfig -d -u $mdstart
40 mdconfig -a -t swap -s 5g -u $mdstart
41 bsdlabel -w md$mdstart auto
42 newfs $newfs_flags md${mdstart}$part > /dev/null
43 mount /dev/md${mdstart}$part $mntpoint
44 chmod 777 $mntpoint
45
46 size=$((`sysctl -n hw.physmem` / 1024 / 1024))
47 [ "`sysctl -n debug.deadlkres.sleepfreq 2>/dev/null`" = "3" ] &&
48     { echo "deadlkres must be disabled for this test."; exit 0; }
49
50 m=`su $testuser -c "limits | awk '/maxprocesses/ {print \\$NF}'"`
51 [ $m -gt 100000 ] && m=100000
52
53 rm -rf /tmp/stressX.control
54 export RUNDIR=$mntpoint/stressX
55 export INCARNATIONS=$((m / 11))
56 export runRUNTIME=3m
57 export LOAD=80
58 export symlinkLOAD=80
59 export rwLOAD=80
60 export TESTPROGS="
61 testcases/lockf2/lockf2
62 testcases/symlink/symlink
63 testcases/openat/openat
64 testcases/rw/rw
65 testcases/fts/fts
66 testcases/link/link
67 testcases/lockf/lockf
68 testcases/creat/creat
69 testcases/mkdir/mkdir
70 testcases/rename/rename
71 testcases/mkfifo/mkfifo
72 "
73
74 timeout -s SIGINT -k 2m 1m su $testuser -c 'cd ..; ./testcases/run/run $TESTPROGS'
75
76 n=0
77 while mount | grep $mntpoint | grep -q /dev/md; do
78         umount $mntpoint || sleep 1
79         [ $((n += 1)) -gt 60 ] && { echo "Timed out"; exit 1; }
80 done
81 checkfs /dev/md${mdstart}$part; s=$!
82 mdconfig -d -u $mdstart
83 exit $s