Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Apr 2020 15:15:23 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 225934] FIFOs lack kevent EVFILT_VNODE support
Message-ID:  <bug-225934-227-1q5s4A0MuM@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-225934-227@https.bugs.freebsd.org/bugzilla/>

index | next in thread | previous in thread | raw e-mail

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225934

--- Comment #2 from Jan Kokemüller <jan.kokemueller@gmail.com> ---
I've seen some places in sys_pipe.c where operations are delegated to vnode
operations (in the fifo case). Could something like the following work?


--- a/sys/kern/sys_pipe.c
+++ b/sys/kern/sys_pipe.c
@@ -1707,6 +1707,10 @@ pipe_kqfilter(struct file *fp, struct knote *kn)
                cpipe = PIPE_PEER(cpipe);
                break;
        default:
+               if (cpipe->pipe_state & PIPE_NAMED) {
+                       PIPE_UNLOCK(cpipe);
+                       return (vnops.fo_kqfilter(fp, kn));
+               }
                PIPE_UNLOCK(cpipe);
                return (EINVAL);
        }


Maybe vop_kqfilter/VOP_KQFILTER could be removed completely in favor of
vfs_kqfilter() as the only implementation? It looks like this mechanism was
only needed to forward *_kqfilter calls to fifo's vop_kqfilter. But now it's
done the other way around in a sense.

-- 
You are receiving this mail because:
You are the assignee for the bug.

home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-225934-227-1q5s4A0MuM>