Re: [PATCH v3 1/1] pipe: only enable the extra wake_up(rd_wait) for edge-triggered consumers
Oleg Nesterov <[email protected]> Thu, 30 Jul 2026 16:38:34 +0200
| Newsgroups | org.kernel.vger.io-uring,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Hi Breno, thanks for taking a look! On 07/30, Breno Leitao wrote: > > On Thu, Jul 30, 2026 at 04:12:22PM +0200, Oleg Nesterov wrote: > > - /* Epoll has some historical nasty semantics, this enables them */ > > - if (unlikely(!READ_ONCE(pipe->poll_usage))) > > - WRITE_ONCE(pipe->poll_usage, true); > > + /* Enable edge-triggered (epoll, io_uring) per-write wakeups */ > > + if ((filp->f_mode & FMODE_READ) && > > + wait && (wait->_key & EPOLLET) && > > + unlikely(!READ_ONCE(pipe->poll_et))) > > + WRITE_ONCE(pipe->poll_et, true); > > Can I ask you to factor this out set code, and comment this nasty > semantics in the function and why we need to do it? Dou you mean a new helper? You can't imagine how much time I spent trying to make the comments more clear but keep them concise ;) More than writing the test for io_uring. What exactly do you think the comment should say? I agree with anything in advance. I thought that "edge-triggered" provides enough info, but I would be happy to improve the docs. And the helper's name? pipe_enable_poll_et() ? Thanks, Oleg.