summaryrefslogtreecommitdiff
path: root/sys/kern
diff options
context:
space:
mode:
authorNiels Provos <provos@cvs.openbsd.org>2001-06-05 21:47:08 +0000
committerNiels Provos <provos@cvs.openbsd.org>2001-06-05 21:47:08 +0000
commitee7652723f91631f1535e8effa4d796feb7a14dd (patch)
tree1673f731b8168ceb43ec174174bfe25368a0a7cc /sys/kern
parentef14a545ddf83db29def5e4edb87275fccbe553e (diff)
send note_revoke to knotes when vnode goes away, okay art@
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/vfs_subr.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 3d77ff1c57f..e80f0e6d0d6 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vfs_subr.c,v 1.60 2001/05/16 13:54:37 art Exp $ */
+/* $OpenBSD: vfs_subr.c,v 1.61 2001/06/05 21:47:07 provos Exp $ */
/* $NetBSD: vfs_subr.c,v 1.53 1996/04/22 01:39:13 christos Exp $ */
/*
@@ -121,6 +121,9 @@ static __inline__ void vputonfreelist __P((struct vnode *));
void printlockedvnodes __P((void));
#endif
+#define VN_KNOTE(vp, b) \
+ KNOTE((struct klist *)&vp->v_selectinfo.vsi_selinfo.si_note, (b))
+
struct pool vnode_pool;
/*
@@ -1042,6 +1045,9 @@ vclean(vp, flags, p)
* Done with purge, notify sleepers of the grim news.
*/
vp->v_op = dead_vnodeop_p;
+ simple_lock(&vp->v_selectinfo.vsi_lock);
+ VN_KNOTE(vp, NOTE_REVOKE);
+ simple_unlock(&vp->v_selectinfo.vsi_lock);
vp->v_tag = VT_NON;
vp->v_flag &= ~VXLOCK;
#ifdef DIAGNOSTIC