Re: [PATCH 3/3] epoll: remove unnecessary test of ep->ovflist foravailable events

From: Davide Libenzi
Date: Sat Jan 15 2011 - 14:04:09 EST


On Sat, 15 Jan 2011, Shawn Bohrer wrote:

> The additional test for ep->ovflist != EP_UNACTIVE_PTR to signify
> available events was added in 5071f97ec6d74f006072de0ce89b67c8792fe5a1
> but doesn't appear to do anything. Either this is a bug or the check
> isn't needed.
>
> If the ep->ovflist is not EP_UNACTIVE_PTR then ep_send_events() calls
> ep_scan_ready_list() which sets ep->ovflist = NULL thus loosing any
> events which may have been stored there.
>
> Signed-off-by: Shawn Bohrer <shawn.bohrer@xxxxxxxxx>

NACK. Not only NACK, but hell NACK.
The epoll_wait() might hit right after the delivery of the current events
ended in/right-after:

error = (*sproc)(ep, &txlist, priv);

So, if there are overflowed events, a following ep_send_events() can go
fetch them, because ep_scan_ready_list() will go drop them back in the
ready list (right after the line above).
Events in the overflow list are no different from the ones in the ready
list, and removing such test will make you, either return with no events
when they are really there, or take another unnecessary spin lock/unlock
trip.
On the contrary, a missed optimization is applying the same rule even
above, instead of the bare list_empty(). Will send a patch to Andrew.
And no, it is not a bug, because ep_scan_ready_list() is protected by a
mutex.



- Davide


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/