From: Jason Baron > Sent: 01 May 2020 20:16 > > Now that the ep_events_available() check is done in a lockless way, and > we no longer perform wakeups from ep_scan_ready_list(), we need to ensure > that either ep->rdllist has items or the overflow list is active. Prior to: > commit 339ddb53d373 ("fs/epoll: remove unnecessary wakeups of nested > epoll"), we did wake_up(&ep->wq) after manipulating the ep->rdllist and the > overflow list. Thus, any waiters would observe the correct state. However, > with that wake_up() now removed we need to be more careful to ensure that > condition. I'm wondering how much all this affects the (probably) more common case of a process reading events from a lot of sockets in 'level' mode. Even the change to a rwlock() may have had an adverse effect on such programs. In 'level' mode it doesn't make any sense to have multiple readers of the event queue. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)