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