1c85b57acSPeter Holm#!/bin/sh 2c85b57acSPeter Holm 3c85b57acSPeter Holm# 4*4d846d26SWarner Losh# SPDX-License-Identifier: BSD-2-Clause 5c85b57acSPeter Holm# 6c85b57acSPeter Holm# Copyright (c) 2021 Peter Holm <pho@FreeBSD.org> 7c85b57acSPeter Holm# 8c85b57acSPeter Holm# Redistribution and use in source and binary forms, with or without 9c85b57acSPeter Holm# modification, are permitted provided that the following conditions 10c85b57acSPeter Holm# are met: 11c85b57acSPeter Holm# 1. Redistributions of source code must retain the above copyright 12c85b57acSPeter Holm# notice, this list of conditions and the following disclaimer. 13c85b57acSPeter Holm# 2. Redistributions in binary form must reproduce the above copyright 14c85b57acSPeter Holm# notice, this list of conditions and the following disclaimer in the 15c85b57acSPeter Holm# documentation and/or other materials provided with the distribution. 16c85b57acSPeter Holm# 17c85b57acSPeter Holm# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18c85b57acSPeter Holm# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19c85b57acSPeter Holm# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20c85b57acSPeter Holm# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21c85b57acSPeter Holm# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22c85b57acSPeter Holm# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23c85b57acSPeter Holm# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24c85b57acSPeter Holm# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25c85b57acSPeter Holm# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26c85b57acSPeter Holm# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27c85b57acSPeter Holm# SUCH DAMAGE. 28c85b57acSPeter Holm# 29c85b57acSPeter Holm 30c85b57acSPeter Holm[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 31c85b57acSPeter Holm 32c85b57acSPeter Holm# D29955: ptrace(PT_COREDUMP) test scenario. 33c85b57acSPeter Holm 34c85b57acSPeter Holm# "panic: Assertion td->td_sleepqueue != NULL failed" seen with WiP kernel code. 35c85b57acSPeter Holm 36c85b57acSPeter Holm. ../default.cfg 37c85b57acSPeter Holm 38c85b57acSPeter Holmmount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint 39c85b57acSPeter Holmmdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart 40c85b57acSPeter Holmmdconfig -a -t swap -s 2g -u $mdstart 41c85b57acSPeter Holmnewfs $newfs_flags -n md$mdstart > /dev/null 42c85b57acSPeter Holmmount /dev/md$mdstart $mntpoint 43c85b57acSPeter Holmchmod 777 $mntpoint 44c85b57acSPeter Holm 45c85b57acSPeter Holmexport runRUNTIME=10m 46c85b57acSPeter Holmexport RUNDIR=$mntpoint/stressX 47c85b57acSPeter Holmset `df -ik $mntpoint | tail -1 | awk '{print $4,$7}'` 48c85b57acSPeter Holmexport KBLOCKS=$(($1 / 2)) 49c85b57acSPeter Holmexport INODES=$(($2 / 2)) 50c85b57acSPeter Holm 51c85b57acSPeter Holmsu $testuser -c 'cd ..; ./run.sh marcus.cfg' & 52c85b57acSPeter Holmsleep 5 53c85b57acSPeter Holmwhile pgrep -q run; do 54c85b57acSPeter Holm # exclude "swap" due to core file size 55c85b57acSPeter Holm list=`ps -U$testuser | sed 1d | grep -vE "\.sh|run|defunct|swap" | \ 56c85b57acSPeter Holm awk '{print $1}'` 57c85b57acSPeter Holm [ -z "$list" ] && { pkill swap; continue; } 58c85b57acSPeter Holm n=0 59c85b57acSPeter Holm pids= 60c85b57acSPeter Holm for p in $list; do 61c85b57acSPeter Holm ( gcore -k -c $mntpoint/core.$p $p 2>&1 | \ 62c85b57acSPeter Holm grep -v 'No such process' ) & 63c85b57acSPeter Holm pids="$pids $!" 64c85b57acSPeter Holm n=$((n + 1)) 65c85b57acSPeter Holm [ $n -ge 2 ] && break 66c85b57acSPeter Holm done 67c85b57acSPeter Holm for p in "$pids"; do 68c85b57acSPeter Holm wait $p 69c85b57acSPeter Holm done 70c85b57acSPeter Holm rm -f $mntpoint/core.* 71c85b57acSPeter Holmdone 72c85b57acSPeter Holmwhile pkill -U$testuser; do sleep 2; done 73c85b57acSPeter Holmwait 74c85b57acSPeter Holm 75c85b57acSPeter Holmn=0 76c85b57acSPeter Holmwhile mount | grep $mntpoint | grep -q /dev/md; do 77c85b57acSPeter Holm umount $mntpoint || sleep 1 78c85b57acSPeter Holm [ $((n += 1)) -gt 300 ] && { echo FAIL; exit 1; } 79c85b57acSPeter Holmdone 80c85b57acSPeter Holmcheckfs /dev/md$mdstart; s=$? 81c85b57acSPeter Holmmdconfig -d -u $mdstart 82c85b57acSPeter Holmexit $s 83