Index: user/pho/stress2/misc/crossmp7.sh =================================================================== --- user/pho/stress2/misc/crossmp7.sh (revision 323084) +++ user/pho/stress2/misc/crossmp7.sh (revision 323085) @@ -1,97 +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$ # # Parallel mount and umount of zfs file systems. # Page fault seen: # https://people.freebsd.org/~pho/stress/log/avg002.txt # Fixed by r309090. [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 [ `sysctl -n kern.kstack_pages` -lt 4 ] && exit 0 . ../default.cfg mounts=15 # Number of parallel scripts if [ $# -eq 0 ]; then kldstat -v | grep -q zfs.ko || { kldload zfs.ko || exit 0; loaded=1; } - zpool list | egrep -q "^tank" && zpool destroy tank + zpool list | egrep -q "^stress2_tank" && zpool destroy stress2_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 + zpool create stress2_tank raidz md$u1 md$u2 md$u3 for i in `jot $mounts`; do - zfs create tank/test$i - zfs umount tank/test$i + zfs create stress2_tank/test$i + zfs umount stress2_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 + zpool destroy stress2_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 + find /stress2_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 + zfs mount stress2_tank/test$m + zfs umount -f stress2_tank/test$m done 2>/dev/null rm -f /tmp/crossmp7.continue fi fi [ -n "$loaded" ] && kldunload zfs.ko Index: user/pho/stress2/misc/zfs.sh =================================================================== --- user/pho/stress2/misc/zfs.sh (revision 323084) +++ user/pho/stress2/misc/zfs.sh (revision 323085) @@ -1,69 +1,69 @@ #!/bin/sh # # Copyright (c) 2009 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$ # # Simple zfs raidz test scenario [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 [ `sysctl -n kern.kstack_pages` -lt 4 ] && exit 0 . ../default.cfg kldstat -v | grep -q zfs.ko || { kldload zfs.ko || exit 0; loaded=1; } u1=$mdstart u2=$((u1 + 1)) u3=$((u2 + 1)) mdconfig -l | grep -q md$u1 && mdconfig -d -u $u1 mdconfig -l | grep -q md$u2 && mdconfig -d -u $u2 mdconfig -l | grep -q md$u3 && mdconfig -d -u $u3 mdconfig -s 512m -u $u1 mdconfig -s 512m -u $u2 mdconfig -s 512m -u $u3 -zpool list | egrep -q "^tank" && zpool destroy tank -[ -d /tank ] && rm -rf /tank -zpool create tank raidz md$u1 md$u2 md$u3 -zfs create tank/test +zpool list | egrep -q "^stress2_tank" && zpool destroy stress2_tank +[ -d /stress2_tank ] && rm -rf /stress2_tank +zpool create stress2_tank raidz md$u1 md$u2 md$u3 +zfs create stress2_tank/test -export RUNDIR=/tank/test/stressX +export RUNDIR=/stress2_tank/test/stressX export runRUNTIME=20m (cd ..; ./run.sh marcus.cfg) -zfs destroy -r tank -zpool destroy tank +zfs destroy -r stress2_tank +zpool destroy stress2_tank mdconfig -d -u $u1 mdconfig -d -u $u2 mdconfig -d -u $u3 [ -n "$loaded" ] && kldunload zfs.ko exit 0 Index: user/pho/stress2/misc/zfs2.sh =================================================================== --- user/pho/stress2/misc/zfs2.sh (revision 323084) +++ user/pho/stress2/misc/zfs2.sh (revision 323085) @@ -1,72 +1,72 @@ #!/bin/sh # # Copyright (c) 2009 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$ # # Simple zfs mirror test scenario [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 [ `sysctl -n kern.kstack_pages` -lt 4 ] && exit 0 . ../default.cfg kldstat -v | grep -q zfs.ko || { kldload zfs.ko || exit 0; loaded=1; } d1=$diskimage.1 d2=$diskimage.2 dd if=/dev/zero of=$d1 bs=1m count=1k 2>&1 | egrep -v "records|transferred" dd if=/dev/zero of=$d2 bs=1m count=1k 2>&1 | egrep -v "records|transferred" u1=$mdstart u2=$((u1 + 1)) mdconfig -l | grep -q md$u1 && mdconfig -d -u $u1 mdconfig -l | grep -q md$u2 && mdconfig -d -u $u2 mdconfig -a -t vnode -f $d1 -u $u1 mdconfig -a -t vnode -f $d2 -u $u2 -zpool list | egrep -q "^tank" && zpool destroy tank -[ -d /tank ] && rm -rf /tank -zpool create tank mirror md$u1 md$u2 +zpool list | egrep -q "^stress2_tank" && zpool destroy stress2_tank +[ -d /stress2_tank ] && rm -rf /stress2_tank +zpool create stress2_tank mirror md$u1 md$u2 -export RUNDIR=/tank/stressX +export RUNDIR=/stress2_tank/stressX export runRUNTIME=10m (cd ..; ./run.sh marcus.cfg) -zfs destroy -r tank -zpool destroy tank +zfs destroy -r stress2_tank +zpool destroy stress2_tank mdconfig -d -u $u1 mdconfig -d -u $u2 rm -rf $d1 $d2 [ -n "$loaded" ] && kldunload zfs.ko exit 0 Index: user/pho/stress2/misc/zfs3.sh =================================================================== --- user/pho/stress2/misc/zfs3.sh (revision 323084) +++ user/pho/stress2/misc/zfs3.sh (revision 323085) @@ -1,84 +1,84 @@ #!/bin/sh # # Copyright (c) 2009 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$ # # Simple zfs snapshot test scenario # page fault from fs/zfs/dbuf.c:1807 # Page fault seen: # https://people.freebsd.org/~pho/stress/log/zfs3-2.txt # Fixed in r308887. [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 [ `sysctl -n kern.kstack_pages` -lt 4 ] && exit 0 . ../default.cfg kldstat -v | grep -q zfs.ko || { kldload zfs.ko || exit 0; loaded=1; } d1=$diskimage.1 d2=$diskimage.2 dd if=/dev/zero of=$d1 bs=1m count=1k 2>&1 | egrep -v "records|transferred" dd if=/dev/zero of=$d2 bs=1m count=1k 2>&1 | egrep -v "records|transferred" u1=$mdstart u2=$((u1 + 1)) mdconfig -l | grep -q md$u1 && mdconfig -d -u $u1 mdconfig -l | grep -q md$u2 && mdconfig -d -u $u2 mdconfig -a -t vnode -f $d1 -u $u1 mdconfig -a -t vnode -f $d2 -u $u2 -zpool list | egrep -q "^tank" && zpool destroy tank -[ -d /tank ] && rm -rf /tank -zpool create tank md$u1 md$u2 -zfs create tank/test -zfs set quota=800m tank/test -zfs snapshot tank/test@snap1 +zpool list | egrep -q "^stress2_tank" && zpool destroy stress2_tank +[ -d /stress2_tank ] && rm -rf /stress2_tank +zpool create stress2_tank md$u1 md$u2 +zfs create stress2_tank/test +zfs set quota=800m stress2_tank/test +zfs snapshot stress2_tank/test@snap1 -export RUNDIR=/tank/test/stressX +export RUNDIR=/stress2_tank/test/stressX export runRUNTIME=10m (cd ..; ./run.sh marcus.cfg) -zfs rollback tank/test@snap1 -zfs destroy tank/test@snap1 +zfs rollback stress2_tank/test@snap1 +zfs destroy stress2_tank/test@snap1 -zfs destroy -r tank -zpool destroy tank +zfs destroy -r stress2_tank +zpool destroy stress2_tank mdconfig -d -u $u1 mdconfig -d -u $u2 rm -rf $d1 $d2 [ -n "$loaded" ] && kldunload zfs.ko exit 0 Index: user/pho/stress2/misc/zfs4.sh =================================================================== --- user/pho/stress2/misc/zfs4.sh (revision 323084) +++ user/pho/stress2/misc/zfs4.sh (revision 323085) @@ -1,83 +1,83 @@ #!/bin/sh # # Copyright (c) 2009 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$ # # Simple zfs snapshot test scenario [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 [ `sysctl -n kern.kstack_pages` -lt 4 ] && exit 0 . ../default.cfg kldstat -v | grep -q zfs.ko || { kldload zfs.ko || exit 0; loaded=1; } d1=$diskimage.1 d2=$diskimage.2 dd if=/dev/zero of=$d1 bs=1m count=1k 2>&1 | egrep -v "records|transferred" dd if=/dev/zero of=$d2 bs=1m count=1k 2>&1 | egrep -v "records|transferred" u1=$mdstart u2=$((u1 + 1)) mdconfig -l | grep -q md$u1 && mdconfig -d -u $u1 mdconfig -l | grep -q md$u2 && mdconfig -d -u $u2 mdconfig -a -t vnode -f $d1 -u $u1 mdconfig -a -t vnode -f $d2 -u $u2 -zpool list | egrep -q "^tank" && zpool destroy tank -[ -d /tank ] && rm -rf /tank -zpool create tank md$u1 md$u2 -zfs create tank/test -zfs set quota=100m tank/test -zfs set snapdir=visible tank/test +zpool list | egrep -q "^stress2_tank" && zpool destroy stress2_tank +[ -d /stress2_tank ] && rm -rf /stress2_tank +zpool create stress2_tank md$u1 md$u2 +zfs create stress2_tank/test +zfs set quota=100m stress2_tank/test +zfs set snapdir=visible stress2_tank/test -export RUNDIR=/tank/test/stressX +export RUNDIR=/stress2_tank/test/stressX export runRUNTIME=10m (cd ..; ./run.sh marcus.cfg) & for i in `jot 20`; do - zfs snapshot tank/test@snap$i + zfs snapshot stress2_tank/test@snap$i done for i in `jot 20`; do - zfs destroy tank/test@snap$i + zfs destroy stress2_tank/test@snap$i done wait -zfs destroy -r tank -zpool destroy tank +zfs destroy -r stress2_tank +zpool destroy stress2_tank mdconfig -d -u $u1 mdconfig -d -u $u2 rm -rf $d1 $d2 [ -n "$loaded" ] && kldunload zfs.ko exit 0 Index: user/pho/stress2/misc/zfs5.sh =================================================================== --- user/pho/stress2/misc/zfs5.sh (revision 323084) +++ user/pho/stress2/misc/zfs5.sh (revision 323085) @@ -1,72 +1,72 @@ #!/bin/sh # # Copyright (c) 2009 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$ # # Simple zfs test of vdev as a file and snapshot clones [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 [ `sysctl -n kern.kstack_pages` -lt 4 ] && exit 0 . ../default.cfg kldstat -v | grep -q zfs.ko || { kldload zfs.ko || exit 0; loaded=1; } d1=$diskimage.1 d2=$diskimage.2 dd if=/dev/zero of=$d1 bs=1m count=1k 2>&1 | egrep -v "records|transferred" dd if=/dev/zero of=$d2 bs=1m count=1k 2>&1 | egrep -v "records|transferred" -zpool list | egrep -q "^tank" && zpool destroy tank -[ -d /tank ] && rm -rf /tank -zpool create tank $d1 $d2 -zfs create tank/test -zfs set quota=100m tank/test +zpool list | egrep -q "^stress2_tank" && zpool destroy stress2_tank +[ -d /stress2_tank ] && rm -rf /stress2_tank +zpool create stress2_tank $d1 $d2 +zfs create stress2_tank/test +zfs set quota=100m stress2_tank/test -export RUNDIR=/tank/test/stressX +export RUNDIR=/stress2_tank/test/stressX export runRUNTIME=10m (cd ..; ./run.sh vfs.cfg) & for i in `jot 20`; do - zfs snapshot tank/test@snap$i - zfs clone tank/test@snap$i tank/snap$i + zfs snapshot stress2_tank/test@snap$i + zfs clone stress2_tank/test@snap$i stress2_tank/snap$i done for i in `jot 20`; do - zfs destroy tank/snap$i - zfs destroy tank/test@snap$i + zfs destroy stress2_tank/snap$i + zfs destroy stress2_tank/test@snap$i done wait -zfs destroy -r tank -zpool destroy tank +zfs destroy -r stress2_tank +zpool destroy stress2_tank rm -rf $d1 $d2 [ -n "$loaded" ] && kldunload zfs.ko exit 0 Index: user/pho/stress2/misc/zfs6.sh =================================================================== --- user/pho/stress2/misc/zfs6.sh (revision 323084) +++ user/pho/stress2/misc/zfs6.sh (revision 323085) @@ -1,80 +1,80 @@ #!/bin/sh # # Copyright (c) 2009 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$ # # Parallel mount / umount and snapshots. zpool hang seen: # https://people.freebsd.org/~pho/stress/log/zfs6.txt [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 [ `sysctl -n kern.kstack_pages` -lt 4 ] && exit 0 . ../default.cfg kldstat -v | grep -q zfs.ko || { kldload zfs.ko || exit 0; loaded=1; } u1=$mdstart u2=$((u1 + 1)) u3=$((u2 + 1)) mdconfig -l | grep -q md$u1 && mdconfig -d -u $u1 mdconfig -l | grep -q md$u2 && mdconfig -d -u $u2 mdconfig -l | grep -q md$u3 && mdconfig -d -u $u3 mdconfig -s 512m -u $u1 mdconfig -s 512m -u $u2 mdconfig -s 512m -u $u3 -zpool list | egrep -q "^tank" && zpool destroy tank -[ -d /tank ] && rm -rf /tank -zpool create tank raidz md$u1 md$u2 md$u3 || exit 1 -zfs create tank/test || exit 1 +zpool list | egrep -q "^stress2_tank" && zpool destroy stress2_tank +[ -d /stress2_tank ] && rm -rf /stress2_tank +zpool create stress2_tank raidz md$u1 md$u2 md$u3 || exit 1 +zfs create stress2_tank/test || exit 1 while true; do - zfs umount tank/test - zfs mount tank/test + zfs umount stress2_tank/test + zfs mount stress2_tank/test done & for i in `jot 5000`; do - touch /tank/test/f$i - zfs snapshot tank/test@$i + touch /stress2_tank/test/f$i + zfs snapshot stress2_tank/test@$i if [ $i -gt 5 ]; then - zfs destroy tank/test@$((i - 5)) + zfs destroy stress2_tank/test@$((i - 5)) fi done kill $! wait -zfs destroy -r tank -zpool destroy tank +zfs destroy -r stress2_tank +zpool destroy stress2_tank mdconfig -d -u $u1 mdconfig -d -u $u2 mdconfig -d -u $u3 [ -n "$loaded" ] && kldunload zfs.ko exit 0