<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 11/16/2013 01:42 AM, Anand Avati
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAFboF2wZneo=nov=aBsP3257s-+43PfFDGS1rm1-_vkaaLHEPg@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>Ravi,</div>
        <div>We should not mix up data and entry operation domains, if a
          file is in data split brain that should not stop a user from
          rename/link/unlink operations on the file.</div>
        <div><br>
        </div>
        <div>
          Regarding your concern about complications while healing - we
          should change our "manual fixing" instructions to:</div>
        <div><br>
        </div>
        <div>- go to backend, access through gfid path or normal path</div>
        <div>- rmxattr the afr changelogs</div>
        <div>- truncate the file to 0 bytes (like "&gt; filename")</div>
        <div><br>
        </div>
        <div>Accessing the path through gfid and truncating to 0 bytes
          addresses your concerns about hardlinks/renames.</div>
        <div><br>
        </div>
        <div>Avati</div>
      </div>
      <div class="gmail_extra"><br>
      </div>
    </blockquote>
    <meta http-equiv="CONTENT-TYPE" content="text/html;
      charset=ISO-8859-1">
    <p class="western" style="margin-bottom: 0in">All,<br>
      <br>
      I
      have tabulated what operations must/ musn't be permitted in case
      of
      different split brains. Some of the columns are '?' as I am not
      sure
      what the expected behaviour should be. Could we have this
      validated? <br>
    </p>
    <p class="western" style="margin-bottom: 0in"><br>
    </p>
    <meta http-equiv="CONTENT-TYPE" content="text/html;
      charset=ISO-8859-1">
    <table cols="5" cellspacing="0" border="0">
      <colgroup width="139"></colgroup> <colgroup width="119"></colgroup>
      <colgroup width="180"></colgroup> <colgroup width="224"></colgroup>
      <colgroup width="192"></colgroup> <tbody>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" rowspan="3" align="CENTER"
            bgcolor="#CFE7F5" height="53" valign="MIDDLE"><big><b>File
                Operation permitted</b></big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" colspan="4" align="CENTER"
            bgcolor="#00CCCC" valign="MIDDLE"><big><b>Type of Split
                Brain</b></big></td>
        </tr>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big><b>Data SB</b></big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big><b>Metadata SB</b></big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" colspan="2" align="CENTER"
            valign="MIDDLE"><big><b>Entry SB</b></big></td>
        </tr>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big><b><br>
              </b></big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big><b><br>
              </b></big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big><b>Same entry gfid
                mismatch SB</b></big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big><b>Different entries</b></big></td>
        </tr>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="LEFT" height="17"><big>write</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>No</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes (currently no)</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>No</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
        </tr>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="LEFT" height="17"><big>read</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>No</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes (currently no)</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>No</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
        </tr>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="LEFT" height="18"><big>getfattr</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>No</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>No</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
        </tr>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="LEFT" height="17"><big>lookup</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>?</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>?</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>No</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
        </tr>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="LEFT" height="18"><big>stat/fstat</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>?</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>?</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>No</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
        </tr>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="LEFT" height="18"><big>setfattr</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>No</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>No</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
        </tr>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="LEFT" height="17"><big>touch</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>No</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
        </tr>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="LEFT" height="17"><big>hard link
              creation</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>No</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
        </tr>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="LEFT" height="17"><big>soft link
              creation</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
        </tr>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="LEFT" height="17"><big>rename</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>no</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
        </tr>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="LEFT" height="18"><big>chown</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Currently No</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
        </tr>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="LEFT" height="18"><big>chmod</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Currently No</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
        </tr>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="LEFT" height="17"><big>unlink</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Currently No</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>Yes</big></td>
        </tr>
        <tr>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="LEFT" height="18"><big>readdir</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>N/A</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>N/A</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>?</big></td>
          <td style="border-top: 1px solid #000000; border-bottom: 1px
            solid #000000; border-left: 1px solid #000000; border-right:
            1px solid #000000" align="CENTER"><big>?</big></td>
        </tr>
      </tbody>
    </table>
    <title></title>
    <meta name="GENERATOR" content="LibreOffice 3.6 (Linux)">
    <style>
                <!-- 
                BODY,DIV,TABLE,THEAD,TBODY,TFOOT,TR,TH,TD,P { font-family:"Arial"; font-size:x-small }
                 -->
        </style>
    <title></title>
    <meta name="GENERATOR" content="LibreOffice 3.6 (Linux)">
    <style type="text/css">
        <!--
                @page { margin: 0.79in }
                P { margin-bottom: 0.08in }
                P.western { font-size: 12pt }
        -->
        </style><big><big><br>
        - stat() also reports the file size. If a data split-brained
        file has different sizes, should stat succeed?<br>
        - Likewise if metadata split brain is due to different access
        permissions, say one brick has file chmod'ed with 777 and the
        other brick has it with 744, should we allow read/write if the
        corresponding permission bits are *not* conflciting ? ( as of
        today they aren't allowed)<br>
      </big><br>
      <big>Also,In the table above, Entry Split brain has 2 cases- <br>
        i) where same entry has different gfids<br>
        ii) each brick&nbsp; has different entries for the same directory
        (which can cause deleted files to appear in case of conservative
        merge). <br>
        Should we allow readdir in either case?<br>
        <br>
        Thanks,<br>
        Ravi<br>
      </big>
    </big><br>
    <blockquote
cite="mid:CAFboF2wZneo=nov=aBsP3257s-+43PfFDGS1rm1-_vkaaLHEPg@mail.gmail.com"
      type="cite">
      <div class="gmail_extra">
        <div class="gmail_quote">On Wed, Nov 13, 2013 at 3:01 AM,
          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:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
            <br>
            Currenly in glusterfs, when there is a data splt-brain
            (only) on a file, we disallow the following operations from
            the mount-point by returning EIO to the application:<br>
            - Writes to the file (truncate, dd, echo, cp etc)<br>
            - Reads to the file (cat)<br>
            - Reading extended attributes (getfattr) [1]<br>
            <br>
            However we do permit the following operations:<br>
            -creating hardlinks<br>
            -creating symlinks<br>
            -mv<br>
            -setattr<br>
            -chmod<br>
            -chown<br>
            --touch<br>
            -ls<br>
            -stat<br>
            <br>
            While it makes sense to allow `ls` and `stat`, is it okay to
            &nbsp;add checks in the FOPS to disallow the other operations?
            Allowing creation of links and changing file attributes only
            seems to complicate things before the admin can go to the
            backend bricks and resolve the splitbrain (by deleteing all
            but the healthy copy of the file including hardlinks). More
            so if the file is renamed before addressing the split-brain.<br>
            Please share your thoughs.<br>
            <br>
            Thanks,<br>
            Ravi<br>
            <br>
            [1] <a moz-do-not-send="true"
              href="http://review.gluster.org/#/c/5988/" target="_blank">http://review.gluster.org/#/c/5988/</a><br>
            _______________________________________________<br>
            Gluster-users mailing list<br>
            <a moz-do-not-send="true"
              href="mailto:Gluster-users@gluster.org" target="_blank">Gluster-users@gluster.org</a><br>
            <a moz-do-not-send="true"
              href="http://supercolony.gluster.org/mailman/listinfo/gluster-users"
              target="_blank">http://supercolony.gluster.org/mailman/listinfo/gluster-users</a><br>
          </blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <br>
  </body>
</html>