<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 the cases following functions takes part - </div><div><br></div><div>ec_heal => ec_heal_throttle=>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" <cobanserkan@gmail.com><br><b>To: </b>"Ashish Pandey" <aspandey@redhat.com><br><b>Cc: </b>"Gluster Users" <gluster-users@gluster.org><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>>>Healing could be triggered by client side (access of file) or server side (shd).<br>>>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 <aspandey@redhat.com> wrote:<br>><br>><br>> ________________________________<br>> From: "Serkan Çoban" <cobanserkan@gmail.com><br>> To: "Gluster Users" <gluster-users@gluster.org><br>> Sent: Monday, May 29, 2017 5:13:06 PM<br>> Subject: [Gluster-users] Heal operation detail of EC volumes<br>><br>> Hi,<br>><br>> When a brick fails in EC, What is the healing read/write data path?<br>> Which processes do the operations?<br>><br>> Healing could be triggered by client side (access of file) or server side<br>> (shd).<br>> However, in both the cases actual heal starts from "ec_heal_do" function.<br>><br>><br>> Assume a 2GB file is being healed in 16+4 EC configuration. I was<br>> thinking that SHD deamon on failed brick host will read 2GB from<br>> network and reconstruct its 100MB chunk and write it on to brick. Is<br>> this right?<br>><br>> You are correct about read/write.<br>> The only point is that, SHD deamon on one of the good brick will pick the<br>> index entry and heal it.<br>> SHD deamon scans the .glusterfs/index directory and heals the entries. If<br>> the brick went down while IO was going on, index will be present on killed<br>> brick also.<br>> However, if a brick was down and then you started writing on a file then in<br>> this case index entry would not be present on killed brick.<br>> So even after brick will be UP, sdh on that brick will not be able to find<br>> it out this index. However, other bricks would have entries and shd on that<br>> brick will heal it.<br>><br>> Note: I am considering each brick on different node.<br>><br>> Ashish<br>><br>><br>><br>><br>><br>><br>><br>><br>><br>><br>> _______________________________________________<br>> Gluster-users mailing list<br>> Gluster-users@gluster.org<br>> http://lists.gluster.org/mailman/listinfo/gluster-users<br>><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>