xref: /freebsd/tools/test/stress2/misc/nullfs35.sh (revision ff6574d2508d6bc72247993787963dd84c4ff9dd)
1*ff6574d2SPeter Holm#!/bin/sh
2*ff6574d2SPeter Holm
3*ff6574d2SPeter Holm#
4*ff6574d2SPeter Holm# Copyright (c) 2026 Peter Holm <pho@FreeBSD.org>
5*ff6574d2SPeter Holm#
6*ff6574d2SPeter Holm# SPDX-License-Identifier: BSD-2-Clause
7*ff6574d2SPeter Holm#
8*ff6574d2SPeter Holm
9*ff6574d2SPeter Holm# "nullfs mount over a file" scenario, see D58178 and D58191
10*ff6574d2SPeter Holm
11*ff6574d2SPeter Holmset -u
12*ff6574d2SPeter Holmprog=$(basename "$0" .sh)
13*ff6574d2SPeter Holm
14*ff6574d2SPeter Holmfile=/tmp/$prog.file
15*ff6574d2SPeter Holmmp=/tmp/$prog.mp
16*ff6574d2SPeter Holmsleep=/tmp/$prog.sleep
17*ff6574d2SPeter Holmrm -f $file
18*ff6574d2SPeter Holmtouch $mp
19*ff6574d2SPeter Holm
20*ff6574d2SPeter Holm# Mounting and running a program
21*ff6574d2SPeter Holmcp /bin/date $file
22*ff6574d2SPeter Holmmount_nullfs $file $mp || exit 1
23*ff6574d2SPeter Holm$mp
24*ff6574d2SPeter Holmumount $mp
25*ff6574d2SPeter Holm
26*ff6574d2SPeter Holm# Display binary information for the process
27*ff6574d2SPeter Holmrm -f $file
28*ff6574d2SPeter Holmcp /bin/sleep $file
29*ff6574d2SPeter Holmmount_nullfs $file $mp || exit 1
30*ff6574d2SPeter Holm$mp 60 &
31*ff6574d2SPeter Holmsleep .2
32*ff6574d2SPeter Holm# "panic: condition vp->v_type == VDIR || VN_IS_DOOMED(vp) not met at vfs_cache.c:3547 (vn_fullpath_dir)" seen.
33*ff6574d2SPeter Holmprocstat -b $!
34*ff6574d2SPeter Holmkill $!
35*ff6574d2SPeter Holmumount $mp
36*ff6574d2SPeter Holm
37*ff6574d2SPeter Holm# Mounting a link
38*ff6574d2SPeter Holmrm $file
39*ff6574d2SPeter Holmcp /bin/sleep $sleep
40*ff6574d2SPeter Holmln $sleep $file
41*ff6574d2SPeter Holmmount_nullfs $file $mp || exit 1
42*ff6574d2SPeter Holm$mp 60 &
43*ff6574d2SPeter Holmsleep .2
44*ff6574d2SPeter Holmprocstat -b $!
45*ff6574d2SPeter Holmkill $!
46*ff6574d2SPeter Holmumount $mp
47*ff6574d2SPeter Holmrm $sleep
48*ff6574d2SPeter Holm
49*ff6574d2SPeter Holm# Mounting a symbolic link
50*ff6574d2SPeter Holmrm $file
51*ff6574d2SPeter Holmln -s /bin/sleep $file
52*ff6574d2SPeter Holmmount_nullfs $file $mp || exit 1
53*ff6574d2SPeter Holm$mp 60 &
54*ff6574d2SPeter Holmsleep .2
55*ff6574d2SPeter Holmprocstat -b $!
56*ff6574d2SPeter Holmkill $!
57*ff6574d2SPeter Holmumount $mp
58*ff6574d2SPeter Holm
59*ff6574d2SPeter Holm# Mounting a fifo must fail
60*ff6574d2SPeter Holmrm $file
61*ff6574d2SPeter Holmmkfifo $file
62*ff6574d2SPeter Holmmount_nullfs $file $mp 2>/dev/null && exit 1
63*ff6574d2SPeter Holm
64*ff6574d2SPeter Holmrm -f $file $mp
65*ff6574d2SPeter Holmexit 0
66