On Wed, Aug 07, 2019 at 01:42:40PM +0200, Douglas Gilbert wrote:
> Track the number of submitted and waiting (for read/receive)
> requests on each file descriptor with two atomic integers.
> This speeds sg_poll() and ioctl(SG_GET_NUM_WAITING) which
> are oft used with the asynchronous (non-blocking) interfaces.
The idea of just tracking a count here seems sensible.
Tiny nitpick below:
> + else if (likely(sfp->cmd_q))
> + p_res |= EPOLLOUT | EPOLLWRNORM;
> + else if (atomic_read(&sfp->submitted) == 0)
> p_res |= EPOLLOUT | EPOLLWRNORM;
Why not simply:
else if (sfp->cmd_q || atomic_read(&sfp->submitted)
p_res |= EPOLLOUT | EPOLLWRNORM;