Index: user/pho/stress2/misc/crossmp6.sh =================================================================== --- user/pho/stress2/misc/crossmp6.sh (nonexistent) +++ user/pho/stress2/misc/crossmp6.sh (revision 297412) @@ -0,0 +1,97 @@ +#!/bin/sh + +# +# Copyright (c) 2015 EMC Corp. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +# Copy of crossmp2.sh: NFS test, with lockf(1) added. +# "panic: vinvalbuf: dirty bufs" seen. +# https://people.freebsd.org/~pho/stress/log/crossmp6.txt +# Fixed by r283968. + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +. ../default.cfg + +pgrep -q lockd || { echo "lockd not running."; exit 1; } + +mounts=10 # Number of parallel scripts + +if [ $# -eq 0 ]; then + [ -z "$nfs_export" ] && exit 0 + ping -c 2 `echo $nfs_export | sed 's/:.*//'` > /dev/null 2>&1 || + exit 0 + mount -t nfs -o tcp -o nfsv3 -o retrycnt=1 -o soft,timeout=1 \ + -o rw $nfs_export $mntpoint || exit 0 + umount $mntpoint + + for i in `jot $mounts`; do + mp=${mntpoint}$i + [ ! -d $mp ] && mkdir $mp + mount | grep -qw "$mp" && umount $mp + done + + # start the parallel tests + for i in `jot $mounts`; do + ./$0 $i & + ./$0 find $i & + done + wait + mount -t nfs -o tcp -o nfsv3 -o retrycnt=1 -o soft,timeout=1 \ + -o rw $nfs_export $mntpoint || exit 0 + rm -f /mnt/$0.* + umount $mntpoint + exit 0 +else + if [ $1 = find ]; then + for i in `jot 128`; do + find ${mntpoint}* -maxdepth 1 -type f > \ + /dev/null 2>&1 + (lockf -t 10 ${mntpoint}$2/$0.$$.$i sleep 1 &) > \ + /dev/null 2>&1 + done + wait + else + + # The test: Parallel mount and unmounts + for i in `jot 128`; do + m=$1 + mount -t nfs -o tcp -o nfsv3 -o retrycnt=3 \ + -o soft -o rw $nfs_export ${mntpoint}$m + sleep .5 + opt=`[ $(( m % 2 )) -eq 0 ] && echo -f` + n=0 + while mount | grep -qw ${mntpoint}$m; do + umount $opt ${mntpoint}$m > /dev/null 2>&1 + n=$((n + 1)) + [ $n -gt 99 ] && umount -f ${mntpoint}$m > \ + /dev/null 2>&1 + [ $n -gt 100 ] && exit + done + done + fi +fi Property changes on: user/pho/stress2/misc/crossmp6.sh ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: user/pho/stress2/misc/crossmp7.sh =================================================================== --- user/pho/stress2/misc/crossmp7.sh (nonexistent) +++ user/pho/stress2/misc/crossmp7.sh (revision 297412) @@ -0,0 +1,92 @@ +#!/bin/sh + +# +# Copyright (c) 2015 EMC Corp. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +# Parallel mount and umount of zfs file systems. + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 +[ $((`sysctl -n hw.usermem` / 1024 / 1024 / 1024)) -le 3 ] && exit 0 + +. ../default.cfg + +mounts=15 # Number of parallel scripts + +if [ $# -eq 0 ]; then + kldstat -v | grep -q zfs.ko || { kldload zfs.ko; loaded=1; } + zpool list | grep -q tank && zpool destroy tank + + u1=$mdstart + u2=$((u1 + 1)) + u3=$((u2 + 1)) + + [ -c /dev/md$u1 ] && mdconfig -d -u $u1 + [ -c /dev/md$u2 ] && mdconfig -d -u $u2 + [ -c /dev/md$u3 ] && mdconfig -d -u $u3 + + mdconfig -s 512m -u $u1 + mdconfig -s 512m -u $u2 + mdconfig -s 512m -u $u3 + + zpool create tank raidz md$u1 md$u2 md$u3 + + for i in `jot $mounts`; do + zfs create tank/test$i + zfs umount tank/test$i + done + + # start the parallel tests + touch /tmp/crossmp7.continue + for i in `jot $mounts`; do + ./$0 $i & + ./$0 find & + done + + wait + + zpool destroy tank + mdconfig -d -u $u1 + mdconfig -d -u $u2 + mdconfig -d -u $u3 + exit 0 +else + if [ $1 = find ]; then + while [ -f /tmp/crossmp7.continue ]; do + find /tank -type f > /dev/null 2>&1 + done + else + # The test: Parallel mount and unmounts + m=$1 + for i in `jot 1024`; do + zfs mount tank/test$m + zfs umount -f tank/test$m + done 2>/dev/null + rm -f /tmp/crossmp7.continue + fi +fi +[ -n "$loaded" ] && kldunload zfs.ko Property changes on: user/pho/stress2/misc/crossmp7.sh ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: user/pho/stress2/misc/crossmp8.sh =================================================================== --- user/pho/stress2/misc/crossmp8.sh (revision 297411) +++ user/pho/stress2/misc/crossmp8.sh (revision 297412) @@ -1,121 +1,122 @@ #!/bin/sh # # Copyright (c) 2015 EMC Corp. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # $FreeBSD$ # # Variation of crossmp3.sh. fifos and sockets added to load. # Not really a cross mount point test, but a test of the old # non-directory use of the vnode v_un union. # mckusick@ suggested using fifos for this test. +# "panic: mtx_lock() of spin mutex @ ../kern/vfs_subr.c:512" seen. # https://people.freebsd.org/~pho/stress/log/crossmp8.txt # Fixed by r291671. [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 . ../default.cfg -CONT=/tmp/crossmp3.continue +CONT=/tmp/crossmp8.continue N=`sysctl -n hw.ncpu` usermem=`sysctl -n hw.usermem` [ `swapinfo | wc -l` -eq 1 ] && usermem=$((usermem/100*80)) size=$((usermem / 1024 / 1024 / N)) mounts=$N # Number of parallel scripts if [ $# -eq 0 ]; then oldmx=`sysctl -n kern.maxvnodes` trap "sysctl kern.maxvnodes=$oldmx > /dev/null" EXIT SIGINT sysctl kern.maxvnodes=2048 > /dev/null for i in `jot $mounts`; do m=$((i + mdstart - 1)) [ ! -d ${mntpoint}$m ] && { mkdir ${mntpoint}$m; chmod 755 ${mntpoint}$m; } mount | grep "${mntpoint}$m" | grep -q md$m && umount ${mntpoint}$m mdconfig -l | grep -q md$m && mdconfig -d -u $m mdconfig -a -t swap -s ${size}m -u $m bsdlabel -w md$m auto newfs md${m}$part > /dev/null 2>&1 done # start the parallel tests touch $CONT for i in `jot $mounts`; do m=$((i + mdstart - 1)) ./$0 $m & ./$0 find & done sleep 60 rm -f $CONT ../tools/killall.sh wait for i in `jot $mounts`; do m=$((i + mdstart - 1)) mdconfig -d -u $m done ./cleanup.sh else if [ $1 = find ]; then while [ -f $CONT ]; do find ${mntpoint}* -maxdepth 1 -ls > /dev/null 2>&1 sleep .1 done else export RUNTIME=15s export runRUNTIME=15s # The test: Parallel mount and unmounts start=`date '+%s'` while [ $((`date '+%s'` - start)) -lt 300 ]; do m=$1 mount /dev/md${m}${part} ${mntpoint}$m && chmod 777 ${mntpoint}$m export RUNDIR=${mntpoint}$m/stressX export CTRLDIR=${mntpoint}$m/stressX.control export mkfifoLOAD=80 export socketLOAD=80 export TP=" testcases/mkfifo/mkfifo testcases/mkdir/mkdir " (cd ${mntpoint}$m && find . -delete) su $testuser -c 'cd ..; ./testcases/run/run $TP' > \ /dev/null 2>&1 while mount | grep -q "on ${mntpoint}$m "; do opt=$([ $((`date '+%s'` % 2)) -eq 0 ] && echo "-f") umount $opt ${mntpoint}$m > /dev/null 2>&1 [ -f $CONT ] || break 2 done done rm -f $CONT fi fi