<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"><<a href="mailto:jayakrishnan.mm@gmail.com" target="_blank">jayakrishnan.mm@gmail.com</a>></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"><<a href="mailto:ravishankar@redhat.com" target="_blank">ravishankar@redhat.com</a>></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"><<a href="mailto:ravishankar@redhat.com" target="_blank">ravishankar@redhat.com</a>></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->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 & 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 & 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->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><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 class="gmail-m_6144383082695127397m_-9133827226248740748gmail-m_-4204914587949192022moz-txt-link-abbreviated" href="mailto:Gluster-devel@gluster.org" target="_blank">Gluster-devel@gluster.org</a>
<a 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><br></div></div>
</blockquote></div><br></div></div>