diff options
Diffstat (limited to 'sys/kern/vfs_default.c')
-rw-r--r-- | sys/kern/vfs_default.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c index b36090ffcb7..df06e7a0358 100644 --- a/sys/kern/vfs_default.c +++ b/sys/kern/vfs_default.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vfs_default.c,v 1.34 2007/06/01 23:47:56 deraadt Exp $ */ +/* $OpenBSD: vfs_default.c,v 1.35 2007/09/15 19:22:18 bluhm Exp $ */ /* * Portions of this code are: @@ -68,6 +68,18 @@ vop_generic_revoke(void *v) vp = ap->a_vp; + if (vp->v_type == VBLK && vp->v_specinfo != 0) { + struct mount *mp = vp->v_specmountpoint; + + /* + * If we have a mount point associated with the vnode, we must + * flush it out now, as to not leave a dangling zombie mount + * point laying around in VFS. + */ + if (mp != NULL && !vfs_busy(mp, VB_WRITE|VB_WAIT)) + dounmount(mp, MNT_FORCE | MNT_DOOMED, p, NULL); + } + if (vp->v_flag & VALIASED) { /* * If a vgone (or vclean) is already in progress, |