From 7df2842deef5cf746f9dfbf3e7b10df8b796b4e2 Mon Sep 17 00:00:00 2001 From: Jonathan Lemon Date: Fri, 23 Feb 2001 20:06:01 +0000 Subject: Add a NOTE_REVOKE flag for vnodes, which is triggered from within vclean(). Use this to tell a filter attached to a vnode that the underlying vnode is no longer valid, by returning EV_EOF. PR: kern/25309, kern/25206 --- sys/kern/vfs_export.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'sys/kern/vfs_export.c') diff --git a/sys/kern/vfs_export.c b/sys/kern/vfs_export.c index 3c99779ca7b0..f10edb221f44 100644 --- a/sys/kern/vfs_export.c +++ b/sys/kern/vfs_export.c @@ -53,6 +53,7 @@ #include #include #include +#include #include #include #include @@ -2745,6 +2746,9 @@ vn_pollevent(vp, events) mtx_unlock(&vp->v_pollinfo.vpi_lock); } +#define VN_KNOTE(vp, b) \ + KNOTE((struct klist *)&vp->v_pollinfo.vpi_selinfo.si_note, (b)) + /* * Wake up anyone polling on vp because it is being revoked. * This depends on dead_poll() returning POLLHUP for correct @@ -2755,6 +2759,7 @@ vn_pollgone(vp) struct vnode *vp; { mtx_lock(&vp->v_pollinfo.vpi_lock); + VN_KNOTE(vp, NOTE_REVOKE); if (vp->v_pollinfo.vpi_events) { vp->v_pollinfo.vpi_events = 0; selwakeup(&vp->v_pollinfo.vpi_selinfo); -- cgit v1.2.3