[Gluster-devel] glusterfs blocked.
Krishnan Parthasarathi
kparthas at redhat.com
Wed Apr 29 08:55:42 UTC 2015
> We want to place file on any subvol other than local ,in the contrary of
> NUFA。
> From GDB ,syncop_getxattr is on the same backtrace of
> "event_dispatch_epoll_handler" which runing in main thread.So any response
> can not come in ?
That is the short answer.
syncop_* calls need to be executed in a non-epoll thread because of how synctask_yield
works. synctask_yield ensures that the syncop_* function proceeds with its execution only
if the corresponding FOP call back is done. i.e, the calling thread will be blocked. If the
calling thread is an 'epoll thread', it could result in a deadlock. By blocking the epoll
thread, you are preventing further socket reads/writes from that socket. If this socket happens
to belong to one of those servers from which you are expecting a reply then you have a deadlock.
Does that make sense?
NB My answers are based on current master code. Accuracy may vary with older versions
~KP
More information about the Gluster-devel
mailing list