Index: user/pho/stress2/misc/mount2.sh =================================================================== --- user/pho/stress2/misc/mount2.sh (revision 306942) +++ user/pho/stress2/misc/mount2.sh (revision 306943) @@ -1,81 +1,82 @@ #!/bin/sh # # Copyright (c) 2008 Peter Holm # 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$ # # Stress test by performing parallel calls to mount and umount. Alternate # between forced and non-forced unmounts [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 . ../default.cfg mounts=15 # Number of parallel scripts D=$diskimage if [ $# -eq 0 ]; then for i in `jot $mounts`; do m=$(( i + mdstart - 1 )) [ ! -d ${mntpoint}$m ] && mkdir ${mntpoint}$m - mount | grep "${mntpoint}" | grep -q md$m && umount ${mntpoint}$m + mount | grep "${mntpoint}" | grep -q md$m && + umount ${mntpoint}$m mdconfig -l | grep -q md$m && mdconfig -d -u $m dd if=/dev/zero of=$D$m bs=1m count=1 > /dev/null 2>&1 - mdconfig -a -t vnode -f $D$m -u $m + mdconfig -a -t vnode -f $D$m -u $m || { rm -f $D$m; exit 1; } bsdlabel -w md$m auto newfs md${m}${part} > /dev/null 2>&1 done # start the parallel tests for i in `jot $mounts`; do m=$(( i + mdstart - 1 )) ./$0 $m & done for i in `jot $mounts`; do wait done for i in `jot $mounts`; do m=$(( i + mdstart - 1 )) mdconfig -d -u $m rm -f $D$m done else # The test: Parallel mount and unmounts for i in `jot 1024`; do m=$1 opt=`[ $(( m % 2 )) -eq 0 ] && echo -f` mount /dev/md${m}${part} ${mntpoint}$m while mount | grep -q ${mntpoint}$m; do umount $opt ${mntpoint}$m > /dev/null 2>&1 done done fi Index: user/pho/stress2/misc/mountro.sh =================================================================== --- user/pho/stress2/misc/mountro.sh (revision 306942) +++ user/pho/stress2/misc/mountro.sh (revision 306943) @@ -1,68 +1,68 @@ #!/bin/sh # # Copyright (c) 2008-2011 Peter Holm # 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$ # . ../default.cfg [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 D=$diskimage dede $D 1m 128 || exit mount | grep "$mntpoint" | grep -q /md && umount -f ${mntpoint} mdconfig -l | grep -q ${mdstart} && mdconfig -d -u $mdstart -mdconfig -a -t vnode -f $D -u $mdstart +mdconfig -a -t vnode -f $D -u $mdstart || { rm -f $D; exit 1; } bsdlabel -w md${mdstart} auto newfs $newfs_flags md${mdstart}${part} > /dev/null 2>&1 mount /dev/md${mdstart}${part} $mntpoint mkdir ${mntpoint}/stressX chmod 777 ${mntpoint}/stressX export RUNDIR=${mntpoint}/stressX export runRUNTIME=4m (cd ..; ./run.sh disk.cfg > /dev/null 2>&1) & sleep 30 for i in `jot 10`; do mount $mntpoint -u -o ro > /dev/null 2>&1 sleep 3 mount $mntpoint -u -o rw > /dev/null 2>&1 sleep 3 done df -i $mntpoint umount -f $mntpoint > /dev/null 2>&1 mdconfig -d -u $mdstart rm -f $D kill `ps | grep run.sh | grep -v grep | awk '{print $1}'` wait Index: user/pho/stress2/misc/mountro2.sh =================================================================== --- user/pho/stress2/misc/mountro2.sh (revision 306942) +++ user/pho/stress2/misc/mountro2.sh (revision 306943) @@ -1,57 +1,57 @@ #!/bin/sh # # Copyright (c) 2008 Peter Holm # 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$ # # Test scenario by Matthew D. Fuller . ../default.cfg [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 D=$diskimage dede $D 1m 20 || exit mount | grep "$mntpoint" | grep -q /md && umount -f ${mntpoint} mdconfig -l | grep -q ${mdstart} && mdconfig -d -u $mdstart -mdconfig -a -t vnode -f $D -u $mdstart +mdconfig -a -t vnode -f $D -u $mdstart || { rm -f $D; exit 1; } bsdlabel -w md${mdstart} auto newfs $newfs_flags md${mdstart}${part} > /dev/null 2>&1 mount /dev/md${mdstart}${part} $mntpoint mtree -deU -f /etc/mtree/BSD.usr.dist -p $mntpoint/ >> /dev/null sync ; sync ; sync rm -rf $mntpoint/* mount -u -o ro $mntpoint umount -f $mntpoint > /dev/null 2>&1 mdconfig -d -u $mdstart Index: user/pho/stress2/misc/mountro3.sh =================================================================== --- user/pho/stress2/misc/mountro3.sh (revision 306942) +++ user/pho/stress2/misc/mountro3.sh (revision 306943) @@ -1,58 +1,58 @@ #!/bin/sh # # Copyright (c) 2008 Peter Holm # 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$ # # Test scenario by barbara # kern/121809: unable to umount [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 . ../default.cfg D=$diskimage dede $D 1m 64 || exit 1 mount | grep "$mntpoint" | grep md${mdstart}${part} > /dev/null && umount $mntpoint mdconfig -l | grep md${mdstart} > /dev/null && mdconfig -d -u ${mdstart} -mdconfig -a -t vnode -f $D -u ${mdstart} +mdconfig -a -t vnode -f $D -u ${mdstart} || { rm -f $D; exit 1; } bsdlabel -w md${mdstart} auto newfs $newfs_flags md${mdstart}${part} > /dev/null 2>&1 mount /dev/md${mdstart}${part} $mntpoint touch $mntpoint/file umount $mntpoint mount /dev/md${mdstart}${part} $mntpoint rm $mntpoint/file mount -u -o ro $mntpoint # Should fail with "Device busy" umount $mntpoint mdconfig -d -u ${mdstart} rm -f $D Index: user/pho/stress2/misc/newfs3.sh =================================================================== --- user/pho/stress2/misc/newfs3.sh (revision 306942) +++ user/pho/stress2/misc/newfs3.sh (revision 306943) @@ -1,78 +1,79 @@ #!/bin/sh # # Copyright (c) 2008-2011 Peter Holm # 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$ # # phk has seen freezes with this newfs option: "-b 32768 -f 4096 -O2" # # Deadlocks seen with this test and: # newfs -b 4096 -f 4096 -O2 md0c on a 128 Mb FS # newfs -b 4096 -f 1024 -O2 md0c on a 64 Mb FS # 20070505 newfs -b 4096 -f 4096 -O2 md0c on a 32 Mb FS: panic: lockmgr: locking against myself [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 . ../default.cfg size=$((32 * 1024 * 1024)) opt="-O2" # newfs option. Eg. -U mount | grep "$mntpoint" | grep -q md${mdstart}$part && umount $mntpoint [ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart while [ $size -le $((128 * 1024 * 1024)) ]; do mb=$((size / 1024 / 1024)) rm -f $diskimage dd if=/dev/zero of=$diskimage bs=1m count=$mb 2>&1 | egrep -v "records|transferred" - mdconfig -a -t vnode -f $diskimage -u $mdstart + mdconfig -a -t vnode -f $diskimage -u $mdstart || + { rm -f $diskimage; exit 1; } bsdlabel -w md$mdstart auto blocksize=4096 while [ $blocksize -le 65536 ]; do for i in 1 2 4 8; do fragsize=$((blocksize / i)) newfs -b $blocksize -f $fragsize $opt md${mdstart}$part > \ /dev/null 2>&1 mount /dev/md${mdstart}$part $mntpoint export RUNDIR=$mntpoint/stressX export runRUNTIME=15s export RUNTIME=$runRUNTIME export CTRLDIR=$mntpoint/stressX.control (cd ..; ./run.sh disk.cfg) > /dev/null while mount | grep "$mntpoint" | \ grep -q md${mdstart}$part; do umount $mntpoint > /dev/null 2>&1 done done blocksize=$((blocksize * 2)) done mdconfig -d -u ${mdstart} size=$((size + 32 * 1024 * 1024)) done rm -f $diskimage Index: user/pho/stress2/misc/umountf4.sh =================================================================== --- user/pho/stress2/misc/umountf4.sh (revision 306942) +++ user/pho/stress2/misc/umountf4.sh (revision 306943) @@ -1,86 +1,87 @@ #!/bin/sh # # Copyright (c) 2008 Peter Holm # 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$ # # Found: Fatal trap 12: page fault while in kernel mode [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 . ../default.cfg mounts=15 # Number of parallel scripts mdstart=$mdstart # Use md unit numbers from this point D=$diskimage if [ $# -eq 0 ]; then for i in `jot $mounts`; do m=$(( i + mdstart - 1 )) [ ! -d ${mntpoint}$m ] && mkdir ${mntpoint}$m mount | grep "$mntpoint" | grep -q md$m && umount ${mntpoint}$m mdconfig -l | grep -q md$m && mdconfig -d -u $m dede $D$m 1m 10 - mdconfig -a -t vnode -f $D$m -u $m + mdconfig -a -t vnode -f $D$m -u $m || + { rm -f $D$m; exit 1; } bsdlabel -w md$m auto newfs md${m}${part} > /dev/null 2>&1 done # start the parallel tests for i in `jot $mounts`; do m=$(( i + mdstart - 1 )) ./$0 $m & ./$0 find & done wait for i in `jot $mounts`; do m=$(( i + mdstart - 1 )) mdconfig -d -u $m rm -f $D$m done else if [ $1 = find ]; then for i in `jot 100`; do find ${mntpoint}* -type f > /dev/null 2>&1 done else # The test: Parallel mount and unmounts for i in `jot 100`; do m=$1 opt=`[ $(( m % 2 )) -eq 0 ] && echo -f` mount $opt /dev/md${m}${part} ${mntpoint}$m cp -r /usr/include/machine/a* ${mntpoint}$m while mount | grep -qw $mntpoint$m; do umount -f ${mntpoint}$m > /dev/null 2>&1 done done fi fi Index: user/pho/stress2/misc/umountf6.sh =================================================================== --- user/pho/stress2/misc/umountf6.sh (revision 306942) +++ user/pho/stress2/misc/umountf6.sh (revision 306943) @@ -1,88 +1,89 @@ #!/bin/sh # # Copyright (c) 2008-2013 Peter Holm # 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 umountf4.sh; FS with "soft updates" [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 . ../default.cfg mounts=15 # Number of parallel scripts mdstart=$mdstart # Use md unit numbers from this point D=$diskimage if [ $# -eq 0 ]; then for i in `jot $mounts`; do m=$(( i + mdstart - 1 )) [ ! -d ${mntpoint}$m ] && mkdir ${mntpoint}$m mount | grep "$mntpoint" | grep -q md$m && umount ${mntpoint}$m mdconfig -l | grep -q md$m && mdconfig -d -u $m dede $D$m 1m 10 dd if=/dev/zero of=$D$m bs=1m count=10 2>&1 | egrep -v "records|transferred" - mdconfig -a -t vnode -f $D$m -u $m + mdconfig -a -t vnode -f $D$m -u $m || + { rm -f $D$m; exit 1; } bsdlabel -w md$m auto newfs $newfs_flags md${m}$part > /dev/null 2>&1 done # start the parallel tests for i in `jot $mounts`; do m=$((i + mdstart - 1)) ./$0 $m & ./$0 find & done wait for i in `jot $mounts`; do m=$((i + mdstart - 1)) mdconfig -d -u $m rm -f $D$m done else if [ $1 = find ]; then for i in `jot 100`; do find ${mntpoint}* -type f > /dev/null 2>&1 done else # The test: Parallel mount and unmounts for i in `jot 100`; do m=$1 opt=`[ $(( m % 2 )) -eq 0 ] && echo -f` mount $opt /dev/md${m}$part ${mntpoint}$m cp -r /usr/include/machine/a* ${mntpoint}$m while mount | grep -qw $mntpoint$m; do umount -f ${mntpoint}$m > /dev/null 2>&1 done done fi fi