<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Thinking about it more, I'd still rather have this functionality
    exposed at the client through xattrs. For 5 years I've thought about
    this, and the more I encounter split-brain, the more I think this is
    the needed approach.<br>
    <br>
    "getfattr -n trusted.glusterfs.stat" returns
    xml/json/some_madeup_datastructure with the results of stat from
    each brick<br>
    "getfattr -n trusted.glusterfs.afr" returns the afr matrix<br>
    "setfattr -n trusted.glusterfs.sb-pick -v "server2:/srv/brick1"<br>
    <br>
    That gives us the tools we need to choose what to do with any given
    split-brain. For large swaths of automated repair, we can use find.<br>
    <br>
    I suppose that last bit could still be implemented through that cli
    command.<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 08/07/2014 01:35 AM, Ravishankar N
      wrote:<br>
    </div>
    <blockquote cite="mid:53E33A56.9060801@redhat.com" type="cite">
      <meta http-equiv="content-type" content="text/html;
        charset=ISO-8859-1">
      <br>
      Manual resolution of split-brains [1] has been a tedious task
      involving understanding and modifying AFR's changelog extended
      attributes. To simplify and to an extent automate this task, we
      are proposing a new CLI command with which the user can&nbsp; specify&nbsp;
      what the source brick/file is, and automatically heal the files in
      the appropriate direction. <br>
      <br>
      Command: gluster volume resolve-split-brain &lt;VOLNAME&gt;
      {&lt;bigger_file&gt;&nbsp; |&nbsp; source-brick &lt;brick_name&gt;
      [&lt;file&gt;] } <br>
      <br>
      Breaking up the command into its possible options, we have: <br>
      <br>
      a) gluster volume resolve-split-brain &lt;VOLNAME&gt;
      &lt;bigger_file&gt; <br>
      When this command is executed, AFR will consider the brick having
      the highest file size as the source and heal it to all other
      bricks (including all other sources and sinks) in that replica
      subvolume. If the file size is same in all the bricks, it does <b
        class="moz-txt-star"><span class="moz-txt-tag">*</span>not<span
          class="moz-txt-tag">*</span></b> heal the file. <br>
      <br>
      b) gluster volume resolve-split-brain &lt;VOLNAME &gt;
      source-brick &lt;brick_name &gt; [&lt;file&gt;] <br>
      <br>
      When this command is executed, if &lt;file&gt; is specified, AFR
      heals the file from the source-brick &lt;brick_name&gt; to all
      other bricks of that replica subvolume. For resolving multiple
      files, the command must be run iteratively, once per file. <br>
      If &lt;file&gt; is not specified, AFR heals all the files that
      have an entry in .glusterfs/indices/xattrop <b
        class="moz-txt-star"><span class="moz-txt-tag">*</span>and<span
          class="moz-txt-tag">*</span></b> are in split-brain. As
      before, heals happen from source-brick &lt;brick_name&gt; to all
      other bricks. <br>
      <br>
      Future work could also include extending the command to add other
      policies like choosing the file having the latest mtime as the
      source, integration with trash xlator wherein the files deleted
      from the sink are moved to the trash dir etc.<br>
      <br>
      Please give feedback on the above. <br>
      <br>
      Regards,<br>
      Ravi<br>
      <br>
      [1] <a moz-do-not-send="true" class="moz-txt-link-freetext"
href="https://github.com/gluster/glusterfs/blob/master/doc/split-brain.mdVOLNAME">https://github.com/gluster/glusterfs/blob/master/doc/split-brain.md</a>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Gluster-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a>
<a class="moz-txt-link-freetext" href="http://supercolony.gluster.org/mailman/listinfo/gluster-devel">http://supercolony.gluster.org/mailman/listinfo/gluster-devel</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>