<html><body><div style="font-family: times new roman, new york, times, serif; font-size: 12pt; color: #000000"><div><br></div><div>When we say client side heal or server side heal, we basically talking about the side which "triggers" heal of a file.<br></div><div><br></div><div>1 - server side heal - shd scans indices and triggers heal</div><div><br></div><div>2 - client side heal - a fop finds that file needs heal and it triggers heal for that file.</div><div><br></div><div>Now, what happens when heal gets triggered.</div><div>In both&nbsp; the cases following functions takes part -&nbsp;</div><div><br></div><div>ec_heal =&gt;&nbsp;ec_heal_throttle=&gt;ec_launch_heal  <br></div><div><br></div><div>Now ec_launch_heal just creates heal tasks (with ec_synctask_heal_wrap which calls ec_heal_do ) and put it into a queue. </div><div>This happens on server and "syncenv" infrastructure which is nothing but a set of workers pick these tasks and execute it. That is when actual read/write for<br></div><div>heal happens. <br></div><div><br></div><div><br></div><hr id="zwchr"><div style="color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><b>From: </b>"Serkan Çoban" &lt;cobanserkan@gmail.com&gt;<br><b>To: </b>"Ashish Pandey" &lt;aspandey@redhat.com&gt;<br><b>Cc: </b>"Gluster Users" &lt;gluster-users@gluster.org&gt;<br><b>Sent: </b>Monday, May 29, 2017 6:44:50 PM<br><b>Subject: </b>Re: [Gluster-users] Heal operation detail of EC volumes<br><div><br></div>&gt;&gt;Healing could be triggered by client side (access of file) or server side (shd).<br>&gt;&gt;However, in both the cases actual heal starts from "ec_heal_do" function.<br>If I do a recursive getfattr operation from clients, then all heal<br>operation is done on clients right? Client read the chunks, calculate<br>and write the missing chunk.<br>And If I don't access files from client then SHD daemons will start<br>heal and read,calculate,write the missing chunks right?<br><div><br></div>In first case EC calculations takes places in client fuse process, in<br>second case EC calculations will be made in SHD process right?<br>Does brick process has any role in EC calculations?<br><div><br></div>On Mon, May 29, 2017 at 3:32 PM, Ashish Pandey &lt;aspandey@redhat.com&gt; wrote:<br>&gt;<br>&gt;<br>&gt; ________________________________<br>&gt; From: "Serkan Çoban" &lt;cobanserkan@gmail.com&gt;<br>&gt; To: "Gluster Users" &lt;gluster-users@gluster.org&gt;<br>&gt; Sent: Monday, May 29, 2017 5:13:06 PM<br>&gt; Subject: [Gluster-users] Heal operation detail of EC volumes<br>&gt;<br>&gt; Hi,<br>&gt;<br>&gt; When a brick fails in EC, What is the healing read/write data path?<br>&gt; Which processes do the operations?<br>&gt;<br>&gt; Healing could be triggered by client side (access of file) or server side<br>&gt; (shd).<br>&gt; However, in both the cases actual heal starts from "ec_heal_do" function.<br>&gt;<br>&gt;<br>&gt; Assume a 2GB file is being healed in 16+4 EC configuration. I was<br>&gt; thinking that SHD deamon on failed brick host will read 2GB from<br>&gt; network and reconstruct its 100MB chunk and write it on to brick. Is<br>&gt; this right?<br>&gt;<br>&gt; You are correct about read/write.<br>&gt; The only point is that, SHD deamon on one of the good brick will pick the<br>&gt; index entry and heal it.<br>&gt; SHD deamon scans the .glusterfs/index directory and heals the entries. If<br>&gt; the brick went down while IO was going on, index will be present on killed<br>&gt; brick also.<br>&gt; However, if a brick was down and then you started writing on a file then in<br>&gt; this case index entry would not be present on killed brick.<br>&gt; So even after brick will be &nbsp;UP, sdh on that brick will not be able to find<br>&gt; it out this index. However, other bricks would have entries and shd on that<br>&gt; brick will heal it.<br>&gt;<br>&gt; Note: I am considering each brick on different node.<br>&gt;<br>&gt; Ashish<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt; _______________________________________________<br>&gt; Gluster-users mailing list<br>&gt; Gluster-users@gluster.org<br>&gt; http://lists.gluster.org/mailman/listinfo/gluster-users<br>&gt;<br>_______________________________________________<br>Gluster-users mailing list<br>Gluster-users@gluster.org<br>http://lists.gluster.org/mailman/listinfo/gluster-users</div><div><br></div></div></body></html>