Messages in this thread | | | Date | Wed, 14 Nov 2018 17:04:15 -0800 | From | Davidlohr Bueso <> | Subject | Re: [PATCH 2/2] fs/epoll: deal with wait_queue only once |
| |
On Wed, 14 Nov 2018, Andrew Morton wrote:
>Why was this moved to before the ep_reset_busy_poll_napi_id() call? >That movement placed the code ahead of the block comment which serves >to explain its function.
Yikes, that was a brain fart.
> > >This? Which also fixes that comment and reflows it to use 80 cols.
Looks good, thanks.
> >--- a/fs/eventpoll.c~fs-epoll-deal-with-wait_queue-only-once-fix >+++ a/fs/eventpoll.c >@@ -1787,15 +1787,6 @@ fetch_events: > if (eavail) > goto send_events; > >- if (!waiter) { >- waiter = true; >- init_waitqueue_entry(&wait, current); >- >- spin_lock_irq(&ep->wq.lock); >- __add_wait_queue_exclusive(&ep->wq, &wait); >- spin_unlock_irq(&ep->wq.lock); >- } >- > /* > * Busy poll timed out. Drop NAPI ID for now, we can add > * it back in when we have moved a socket with a valid NAPI >@@ -1804,10 +1795,18 @@ fetch_events: > ep_reset_busy_poll_napi_id(ep); > > /* >- * We don't have any available event to return to the caller. >- * We need to sleep here, and we will be wake up by >- * ep_poll_callback() when events will become available. >+ * We don't have any available event to return to the caller. We need >+ * to sleep here, and we will be woken by ep_poll_callback() when events >+ * become available. > */ >+ if (!waiter) { >+ waiter = true; >+ init_waitqueue_entry(&wait, current); >+ >+ spin_lock_irq(&ep->wq.lock); >+ __add_wait_queue_exclusive(&ep->wq, &wait); >+ spin_unlock_irq(&ep->wq.lock); >+ } > > for (;;) { > /* >_ >
| |