18a272653SPeter Holm#!/bin/sh 28a272653SPeter Holm 38a272653SPeter Holm# Test scenario by: David Cross <dcrosstech@gmail.com> 48a272653SPeter Holm 58a272653SPeter Holm# "panic: softdep_deallocate_dependencies: dangling deps" seen. 68a272653SPeter Holm# https://people.freebsd.org/~pho/stress/log/mmap29.txt 78a272653SPeter Holm# Fixed by: r302567. 88a272653SPeter Holm 98a272653SPeter Holm. ../default.cfg 108a272653SPeter Holm[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 118a272653SPeter Holm 128a272653SPeter Holm[ -z "`which timeout`" ] && exit 0 138a272653SPeter Holmmount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint 148a272653SPeter Holmmdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart 158a272653SPeter Holmmdconfig -a -t swap -s 2g -u $mdstart || exit 1 16*608c97bfSPeter Holmnewfs -U md$mdstart > /dev/null 17*608c97bfSPeter Holmmount /dev/md$mdstart $mntpoint 188a272653SPeter Holm 198a272653SPeter Holmmkdir $mntpoint/mmap29 208a272653SPeter Holmcd /tmp 218a272653SPeter Holmcat > mmap29.c <<EOFHERE 228a272653SPeter Holm#include <sys/param.h> 238a272653SPeter Holm#include <sys/mman.h> 248a272653SPeter Holm#include <sys/stat.h> 258a272653SPeter Holm 268a272653SPeter Holm#include <err.h> 278a272653SPeter Holm#include <fcntl.h> 288a272653SPeter Holm#include <stdio.h> 298a272653SPeter Holm#include <stdlib.h> 308a272653SPeter Holm#include <unistd.h> 318a272653SPeter Holm 328a272653SPeter Holmint 338a272653SPeter Holmmain(int argc, char **argv) 348a272653SPeter Holm{ 358a272653SPeter Holm int fd; 368a272653SPeter Holm unsigned char *memrange; 378a272653SPeter Holm 388a272653SPeter Holm if (argc != 2) { 398a272653SPeter Holm fprintf(stderr, "Usage: %s <file>\n", argv[0]); 408a272653SPeter Holm exit(1); 418a272653SPeter Holm } 428a272653SPeter Holm unlink(argv[1]); 438a272653SPeter Holm if ((fd = open(argv[1], O_RDWR | O_CREAT, DEFFILEMODE)) == -1) 448a272653SPeter Holm err(1, "open(%s)", argv[1]); 458a272653SPeter Holm lseek(fd, 0xbfff, SEEK_SET); 468a272653SPeter Holm write(fd, "\0", 1); 478a272653SPeter Holm if ((memrange = mmap(0, 0x2b6000, PROT_READ | PROT_WRITE, MAP_SHARED | 488a272653SPeter Holm MAP_HASSEMAPHORE | MAP_NOSYNC, fd, 0)) == MAP_FAILED) 498a272653SPeter Holm err(1, "mmap"); 508a272653SPeter Holm memrange[0] = 5; 518a272653SPeter Holm munmap(memrange, 0x2b6000); 528a272653SPeter Holm close(fd); 538a272653SPeter Holm 548a272653SPeter Holm return (0); 558a272653SPeter Holm} 568a272653SPeter HolmEOFHERE 578a272653SPeter Holm 588a272653SPeter Holmcc -o mmap29 -Wall -Wextra -O0 -g mmap29.c || exit 1 598a272653SPeter Holmrm mmap29.c 608a272653SPeter Holm./mmap29 $mntpoint/mmap29/mmap291 618a272653SPeter Holmold=`sysctl -n kern.maxvnodes` 628a272653SPeter Holmtrap "sysctl kern.maxvnodes=$old" EXIT INT 638a272653SPeter Holmsysctl kern.maxvnodes=2000 648a272653SPeter Holmtimeout 60 find / -xdev -print >/dev/null 658a272653SPeter Holmwhile mount | grep "on $mntpoint " | grep -q /dev/md; do 668a272653SPeter Holm umount $mntpoint || sleep 1 678a272653SPeter Holmdone 688a272653SPeter Holmmdconfig -d -u $mdstart 698a272653SPeter Holmrm mmap29 708a272653SPeter Holmexit 0 71