xref: /freebsd/tools/test/stress2/misc/unionfs21.sh (revision c2b513335f688ac5657abc1bc40f6848988958d7)
1#!/bin/sh
2
3# "panic: unionfs_lock_lvp: vnode is locked but should not be" seen
4
5# Test scenario based on:
6# Bug 275871 - [unionfs] [nullfs] [zfs] corrupt filesystem
7# Bug 172334 - unionfs permits recursive union mounts; causes panic quickly
8
9. ../default.cfg
10
11prog=$(basename "$0" .sh)
12here=`pwd`
13log=/tmp/$prog.log
14md1=$mdstart
15md2=$((md1 + 1))
16mp1=/mnt$md1
17mp2=/mnt$md2
18
19set -eu
20mdconfig -l | grep -q md$md1 && mdconfig -d -u $md1
21mdconfig -l | grep -q md$md2 && mdconfig -d -u $md2
22
23mdconfig -s 2g -u $md1
24newfs $newfs_flags /dev/md$md1 > /dev/null
25mdconfig -s 2g -u $md2
26newfs $newfs_flags /dev/md$md2 > /dev/null
27
28mkdir -p $mp1 $mp2
29mount /dev/md$md1 $mp1
30mount /dev/md$md2 $mp2
31set +e
32mount -t unionfs -o noatime $mp1 $mp2
33mount -t unionfs -o noatime $mp2 $mp1
34
35ls -lr $mp1 $mp2 > /dev/null # triggers the panic
36
37umount $mp2 # The unionfs mount
38umount $mp2
39umount $mp1
40
41mdconfig -d -u $md1
42mdconfig -d -u $md2
43rm -f /tmp/$prog
44exit 0
45