xref: /freebsd/tools/test/stress2/misc/mmap29.sh (revision 608c97bf)
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
16608c97bfSPeter Holmnewfs -U md$mdstart > /dev/null
17608c97bfSPeter 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