On Fri, Jun 22, 2018 at 02:07:39PM +0200, Christoph Hellwig wrote: > On Fri, Jun 22, 2018 at 12:56:13PM +0100, Al Viro wrote: > > So mark that in ->f_mode - I strongly suspect that > > sk_can_busy_loop(sock->sk) can't change while an opened file is there. > > And lift that (conditional on new FMODE_BUSY_LOOP) into do_poll() > > and do_select() - we *already* have bits of pieces of that logics in > > there and that way they'd at least be gathered in one place. > > The problem is that call to sk_busy_loop(), which is going to be indirect > no matter what.
if ->f_poll_head is NULL { use ->poll } else { if can ll_poll (checked in ->f_mode) call ->ll_poll(), if it returns what we want - we are done add to ->f_poll_head call ->poll_mask() }