<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Hi Fog,<br>
      <br>
      RPC callbacks are executed in the epoll thread[1]. Calling
      synctask_yield causes that epoll thread to be blocked until, the
      corresponding "wake" is called. Most likely, the code calling the
      "wake" is tied to a network-event, which wouldn't be 'noticed'
      until the epoll thread is unblocked. This is a classic deadlock.<br>
      <br>
      You could attach gdb to the hung process and check if
      synctask_yield was called on the epoll thread. For further
      analysis, you might want to paste the output of "thread apply all
      bt full" from gdb, attached to the hung process.<br>
      <br>
      [1] - epoll thread - is a short name for the thread executing
      epoll (), 'listening' for network events.<br>
      <br>
      HTH,<br>
      krish<br>
      <br>
      On 04/26/2013 03:10 PM, fog - wrote:<br>
    </div>
    <blockquote cite="mid:BAY171-W1039BEE8D3B67D480CC42B9F7B70@phx.gbl"
      type="cite">
      <style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style>
      <div dir="ltr">Hello everyone,<br>
        <div>
          <div dir="ltr">
            <div>
              <div><br>
              </div>
              I am trying to use syncops in a custom translator to keep
              my code at least borderline readable, but I am having
              limited success. <br>
              <br>
              Problem Symptoms: <br>
              Using a syncop in a regular fop is fine. However, in a
              callback it causes a 'freeze' (synctask_yield called by
              the SYNCOP macro doesn't return). <br>
              <br>
            </div>
            <div>What seems to be the Problem: <br>
            </div>
            <div>Looking at the traces, there is no corresponding trace
              from rpc_clnt_reply_init on the client to the trace from
              rpcsvc_submit_generic on the server. In other words, the
              rpc reply gets sent but isn't correctly received.
              Obviously this is not really a networking problem but
              something else... I'd guess it's a deadlock somewhere on
              the client?<br>
            </div>
            <div>From the point of the syncop call onwards the client
              doesn't 'get' any rpc replies any more (the next GlusterFS
              Handshake sent by the client, which is received by the
              server and replied to, leads to a disconnection
              accordingly).<br>
            </div>
            <div><br>
            </div>
            <div>Again: This problem is only occurring when calling a
              syncop from a callback function inside my translator, if I
              call the same syncop in a fop call it completes fine.<br>
              <br>
              I hope you can make sense out of the above problem
              description. <br>
            </div>
            <div>Thanks for your time ~<br>
            </div>
            <br>
          </div>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Gluster-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Gluster-devel@nongnu.org">Gluster-devel@nongnu.org</a>
<a class="moz-txt-link-freetext" href="https://lists.nongnu.org/mailman/listinfo/gluster-devel">https://lists.nongnu.org/mailman/listinfo/gluster-devel</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>