<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 02/06/2017 03:15 PM, jayakrishnan mm
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAEccfPu5N79b8YZtt6abd7e2AXAGWHorvDadi_gp+g8gvzqczw@mail.gmail.com"
      type="cite">
      <div dir="ltr"><br>
        <div class="gmail_extra"><br>
          <div class="gmail_quote">On Mon, Feb 6, 2017 at 2:36 PM,
            jayakrishnan mm <span dir="ltr">&lt;<a
                moz-do-not-send="true"
                href="mailto:jayakrishnan.mm@gmail.com" target="_blank">jayakrishnan.mm@gmail.com</a>&gt;</span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid">
              <div dir="ltr"><br>
                <div class="gmail_extra"><br>
                  <div class="gmail_quote">
                    <div>
                      <div class="gmail-h5">On Fri, Feb 3, 2017 at 7:58
                        PM, Ravishankar N <span dir="ltr">&lt;<a
                            moz-do-not-send="true"
                            href="mailto:ravishankar@redhat.com"
                            target="_blank">ravishankar@redhat.com</a>&gt;</span>
                        wrote:<br>
                        <blockquote class="gmail_quote"
                          style="margin:0px 0px 0px
0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid">
                          <div bgcolor="#FFFFFF"><span>
                              <div
                                class="gmail-m_6144383082695127397m_-9133827226248740748moz-cite-prefix">On
                                02/03/2017 09:14 AM, jayakrishnan mm
                                wrote:<br>
                              </div>
                              <blockquote type="cite">
                                <div dir="ltr"><br>
                                  <div class="gmail_extra"><br>
                                    <div class="gmail_quote">On Thu, Feb
                                      2, 2017 at 8:17 PM, Ravishankar N
                                      <span dir="ltr">&lt;<a
                                          moz-do-not-send="true"
                                          href="mailto:ravishankar@redhat.com"
                                          target="_blank">ravishankar@redhat.com</a>&gt;</span>
                                      wrote:<br>
                                      <blockquote class="gmail_quote"
                                        style="margin:0px 0px 0px
0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid">
                                        <div bgcolor="#FFFFFF"><span
                                            class="gmail-m_6144383082695127397m_-9133827226248740748gmail-">
                                            <div
class="gmail-m_6144383082695127397m_-9133827226248740748gmail-m_-4204914587949192022moz-cite-prefix">On
                                              02/02/2017 10:46 AM,
                                              jayakrishnan mm wrote:<br>
                                            </div>
                                            <blockquote type="cite">
                                              <div dir="ltr">
                                                <div>Hi</div>
                                                <div><br>
                                                </div>
                                                <div>How  do I
                                                  determine, which part
                                                  of the  code is run on
                                                  the client, and which
                                                  part of the code is
                                                  run on the server
                                                  nodes by merely
                                                  looking at the the
                                                  glusterfs  source code
                                                  ?</div>
                                                <div>I knew  there are
                                                  client side  and
                                                  server side
                                                  translators which will
                                                  run on respective
                                                  platforms. I am
                                                  looking at part of
                                                  self heal daemon
                                                  source  (ec/afr) which
                                                  will run on the server
                                                  nodes  and  the part
                                                  which run on the
                                                  clients.</div>
                                              </div>
                                            </blockquote>
                                             <br>
                                          </span> The self-heal daemon
                                          that runs on the server is
                                          also a client process in the
                                          sense that it has client side
                                          xlators like ec or afr and 
                                          protocol/client (see the shd
                                          volfile
                                          'glustershd-server.vol')
                                          loaded and talks to the bricks
                                          like a normal client does.<br>
                                          The difference is that only
                                          self-heal related 'logic' get
                                          executed on the shd while both
                                          self-heal and I/O related
                                          logic get executed from the
                                          mount. The self-heal logic
                                          resides mostly in
                                          afr-self-heal*.[ch] while I/O
                                          related logic is there in the
                                          other files.<br>
                                          HTH,<br>
                                          Ravi<br>
                                        </div>
                                      </blockquote>
                                      <div><br>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                              </blockquote>
                            </span> Hi JK,<span><br>
                              <blockquote type="cite">
                                <div dir="ltr">
                                  <div class="gmail_extra">
                                    <div class="gmail_quote"><span
                                        style="font-size:12.8px">Dear
                                         Ravi,</span>
                                      <div style="font-size:12.8px">Thanks
                                        for your kind explanation.</div>
                                      <div style="font-size:12.8px">So,
                                        each server node will have a
                                        separate self-heal daemon(shd)
                                        up and running , every time a
                                        child_up event occurs, and this
                                        will  be an index healer. </div>
                                      <div style="font-size:12.8px">And
                                        each daemon  will spawn
                                         "priv-&gt;child_count " number
                                        of threads on each server node .
                                        correct ?</div>
                                    </div>
                                  </div>
                                </div>
                              </blockquote>
                            </span> shd is always running and yes those
                            many threads are spawned for index heal when
                            the process starts.<span><br>
                              <blockquote type="cite">
                                <div dir="ltr">
                                  <div class="gmail_extra">
                                    <div class="gmail_quote">
                                      <div style="font-size:12.8px">1.
                                        When exactly a full healer
                                        spawns  threads? <br>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                              </blockquote>
                            </span> Whenever you run `gluster volume
                            heal volname full`. See afr_xl_op(). There
                            are some bugs in launching full heal though.<span><br>
                              <blockquote type="cite">
                                <div dir="ltr">
                                  <div class="gmail_extra">
                                    <div class="gmail_quote">
                                      <div style="font-size:12.8px">2.
                                        When can GF_EVENT_TRANSLATOR_OP
                                        &amp; GF_SHD_OP_HEAL_INDEX
                                        happen together (so that index
                                        healer spawns thread) ?</div>
                                      <div style="font-size:12.8px">   
                                        similarly when can
                                        GF_EVENT_TRANSLATOR_OP
                                        &amp; GF_SHD_OP_HEAL_FULL
                                         happen ? During replace-brick ?</div>
                                      <div style="font-size:12.8px">Is
                                        it possible that index healer
                                        and full healer spawns threads
                                        together (so that total number
                                        of  threads  is
                                        2*priv-&gt;child_count)?</div>
                                      <div style="font-size:12.8px"><br>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                              </blockquote>
                            </span> index heal threads wake up and run
                            once every 10 minutes or whatever the
                            cluster.heal-timeout is. They are also run
                            when a brick comes up like you said, via
                            afr_notify(). It is also run when you
                            manually launch 'gluster volume heal
                            volname`. Again see afr_xl_op().<span><br>
                              <blockquote type="cite">
                                <div dir="ltr">
                                  <div class="gmail_extra">
                                    <div class="gmail_quote">
                                      <div style="font-size:12.8px">3.
                                        In
                                        /var/lib/glusterd/glustershd/g<wbr>lustershd-server.vol
                                        , why  debug/io-stats  is chosen
                                        as the top xlator ?</div>
                                      <div style="font-size:12.8px"><br>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                              </blockquote>
                            </span> io-stats is generally loaded as the
                            top most xlator in all graphs at the
                            appropriate place for gathering
                            profile-info, but for shd, I'm not sure if
                            it has any specific use other than acting as
                            a placeholder as a parent to all replica
                            xlators.<br>
                          </div>
                        </blockquote>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </blockquote>
            <div><br>
            </div>
            <div><br>
            </div>
            <div><br>
            </div>
            <div>Hi Ravi,</div>
            <div><br>
            </div>
            <div>The self heal daemon searches   in
              .glusterfs/indices/xattrop   directory for the files/dirs
               to be healed . Who is updating this information , and on
              what basis ?  </div>
            <div><br>
            </div>
            <div><br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    Please see <a class="moz-txt-link-freetext"
href="https://github.com/gluster/glusterfs-specs/blob/master/done/Features/afr-v1.md">https://github.com/gluster/glusterfs-specs/blob/master/done/Features/afr-v1.md</a>,
    it is a bit dated (relevant to AFR v1, which is in glusterfs 3.5 and
    older I think) but the concepts are similar. The entries are
    added/removed by the index translator during the pre-op/post-op
    phases of the AFR transaction .<br>
    <br>
    <br>
    <blockquote
cite="mid:CAEccfPu5N79b8YZtt6abd7e2AXAGWHorvDadi_gp+g8gvzqczw@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid">
              <div dir="ltr">
                <div class="gmail_extra">
                  <div class="gmail_quote">
                    <div>Thanks Ravi, for the explanation.</div>
                    <div>Regards</div>
                    <div>JK </div>
                    <span>
                      <blockquote class="gmail_quote" style="margin:0px
                        0px 0px
0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid">
                        <div bgcolor="#FFFFFF"> <br>
                          Regards,<br>
                          Ravi<span><br>
                            <blockquote type="cite">
                              <div dir="ltr">
                                <div class="gmail_extra">
                                  <div class="gmail_quote">
                                    <div style="font-size:12.8px">Thanks</div>
                                    <div><span style="font-size:12.8px">Best
                                        regards</span> </div>
                                    <blockquote class="gmail_quote"
                                      style="margin:0px 0px 0px
0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid">
                                      <div bgcolor="#FFFFFF">
                                        <blockquote type="cite">
                                          <div dir="ltr">
                                            <div><br>
                                            </div>
                                            <div>Best regards</div>
                                            <div>JK</div>
                                          </div>
                                          <br>
                                          <fieldset
class="gmail-m_6144383082695127397m_-9133827226248740748gmail-m_-4204914587949192022mimeAttachmentHeader"></fieldset>
                                          <br>
                                          <pre>______________________________<wbr>_________________
Gluster-devel mailing list
<a moz-do-not-send="true" class="gmail-m_6144383082695127397m_-9133827226248740748gmail-m_-4204914587949192022moz-txt-link-abbreviated" href="mailto:Gluster-devel@gluster.org" target="_blank">Gluster-devel@gluster.org</a>
<a moz-do-not-send="true" class="gmail-m_6144383082695127397m_-9133827226248740748gmail-m_-4204914587949192022moz-txt-link-freetext" href="http://lists.gluster.org/mailman/listinfo/gluster-devel" target="_blank">http://lists.gluster.org/mailm<wbr>an/listinfo/gluster-devel</a></pre>
    </blockquote>
    <p>

    </p>
  </div>

</blockquote></div>
</div></div>



</blockquote><p>

</p></span></div></blockquote></span></div>
</div></div>
</blockquote></div>
</div></div>



</blockquote><p>


</p></body></html>