I don't think you re-arm a FD in epoll. You arm it once, and it fires until you disarm it, as far as I know. You just call epoll_wait() to get new events.

The thread model is a bit odd; When the epoll fires, all the events are found, and a thread is submitted for each one except one. That one is handled in the local thread (since it's expected that most epoll triggers will have one event on them, thus using the current hot thread). In addition, a new thread is submitted to go back and wait for events, so there's no delay handling new events. So EAGAIN is handled by just indicating this thread is done, and returning it to the thread pool. When the socket is ready again, it will trigger a new event on the thread waiting on the epoll.

Bill, please correct me if I'm wrong.

Daniel

On 01/25/2018 09:13 PM, Matt Benjamin wrote:
Hmm.  We used to handle that ;)

Matt

On Thu, Jan 25, 2018 at 9:11 PM, Pradeep <pradeeptho...@gmail.com> wrote:
If recv() returns EAGAIN, then svc_vc_recv() returns without rearming the
epoll_fd. How does it get back to svc_vc_recv() again?

On Wed, Jan 24, 2018 at 9:26 PM, Pradeep <pradeeptho...@gmail.com> wrote:

Hello,

I seem to be hitting a corner case where ganesha (2.6-rc2) does not
respond to a RENEW request from 4.0 client. Enabled the debug logs and
noticed that NFS layer has not seen the RENEW request (I can see it in
tcpdump).

I collected netstat output periodically and found that there is a time
window of ~60 sec where the receive buffer size remains the same. This means
the RPC layer somehow missed a 'recv' call. Now if I enable debug on TIRPC,
I can't reproduce the issue. Any pointers to potential races where I could
enable selective prints would be helpful.

svc_rqst_epoll_event() resets SVC_XPRT_FLAG_ADDED. Is it possible for
another thread to svc_rqst_rearm_events()? In that case if
svc_rqst_epoll_event() could reset the flag set by svc_rqst_rearm_events and
complete the current receive before the other thread could call epoll_ctl(),
right?

Thanks,
Pradeep



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nfs-ganesha-devel mailing list
Nfs-ganesha-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs-ganesha-devel






------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Nfs-ganesha-devel mailing list
Nfs-ganesha-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs-ganesha-devel

Reply via email to