<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"><big><font face="Times New Roman,
          Times, serif"><big><font face="Courier New, Courier,
              monospace">Hi,<br>
              <br>
              Based on an internal discussion we had, I am putting
              forward some points on the proposed changes:<br>
              <br>
              <br>
              <b>lookup</b>: For files in data split-brain (DSB), allow
              lookup to succeed and return the inode attributes (struct
              iatt) from the file which has the bigger size.<br>
              &nbsp;&nbsp;&nbsp; &nbsp; <br>
              &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; For files in metadata split-brain (MSB), allow
              lookup to succeed and use the below resolution:<br>
              &nbsp;&nbsp;&nbsp; <br>
            </font></big></font></big>
      <table border="1" cellpadding="2" cellspacing="2" width="70%">
        <tbody>
          <tr>
            <td valign="top"><b><big><font face="Times New Roman, Times,
                    serif"><big><font face="Courier New, Courier,
                        monospace">Mismatching attribute</font></big></font></big></b></td>
            <td valign="top"><b><big><font face="Times New Roman, Times,
                    serif"><big><font face="Courier New, Courier,
                        monospace">Resolution:</font></big></font></big></b></td>
          </tr>
          <tr>
            <td valign="top"><big><font face="Times New Roman, Times,
                  serif"><big><font face="Courier New, Courier,
                      monospace">time(a_time/m_time/c_time)&nbsp; <br>
                    </font></big></font></big></td>
            <td valign="top"><big><font face="Times New Roman, Times,
                  serif"><big><font face="Courier New, Courier,
                      monospace">return the one which has newest m_time</font></big></font></big></td>
          </tr>
          <tr>
            <td valign="top"><big><font face="Times New Roman, Times,
                  serif"><big><font face="Courier New, Courier,
                      monospace">uid/ gid</font></big></font></big></td>
            <td valign="top"><big><font face="Times New Roman, Times,
                  serif"><big><font face="Courier New, Courier,
                      monospace">return the uid/gid as root:root so that
                      further FOPS will fail due to lack of permission</font></big></font></big></td>
          </tr>
          <tr>
            <td valign="top"><big><font face="Times New Roman, Times,
                  serif"><big><font face="Courier New, Courier,
                      monospace">nlink</font></big></font></big></td>
            <td valign="top"><big><font face="Times New Roman, Times,
                  serif"><big><font face="Courier New, Courier,
                      monospace">return the bigger of the values</font></big></font></big></td>
          </tr>
          <tr>
            <td valign="top"><big><font face="Times New Roman, Times,
                  serif"><big><font face="Courier New, Courier,
                      monospace">file permission (st_mode)</font></big></font></big></td>
            <td valign="top"><big><font face="Times New Roman, Times,
                  serif"><big><font face="Courier New, Courier,
                      monospace">return AND of the file permissions.</font></big></font></big></td>
          </tr>
        </tbody>
      </table>
      <big><font face="Times New Roman, Times, serif"><big><font
              face="Courier New, Courier, monospace"><br>
              &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; For files in entry split-brain (ESB), lookup has
              to fail.<br>
              <br>
              &nbsp;&nbsp;&nbsp; &nbsp; <br>
              Note that if lookup gets called before the other FOPS,
              then the above is the expected behaviour. If it doesn't
              (due to caching, or the split brain occurring after lookup
              happens etc),<br>
              then we need to define what happens on each FOP:<br>
              <br>
              <b>stat</b>: If file is in split-brain, send stat to all
              subvolumes,and perform the same steps as done in lookup
              (i.e. perform same checks as above).<br>
              <br>
              <b>write</b>: Allow writes to go through irrespective of
              the type of split-brain. This is in marked difference with
              the current behaviour where we disallow writes to DSB
              files.The rationale is that the write could include a
              truncate to zero, which is a valid use case for resolving
              the split-brained file if the user wishes to do so.<br>
              <br>
              <b>read</b>: Do not allow reads irrespective of the type
              of split-brain. This would serve as a indication to user
              that file is in split-brain.<br>
              <br>
              <b>get(f)attr</b>: For DSB, allow it.<br>
              &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; For MSB, Don't allow.&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <br>
              &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; <br>
              <b>set(f)attr</b>: For DSB and MSB, allow it.<br>
              &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
              <b>touch (create), hardlink, softlink, rename, chown,
                chmod, unlink</b>:Allow the operation for all type of
              split-brains<br>
              <br>
              Forcing look ups to occur for readdirp:If a directory is
              in split brain and a <b>readdirp</b> is issued, after
              getting the entries, AFR needs to check them for
              split-brains and for those entries which are in
              split-brain,it needs to set the inode to null before
              unwinding the reply to the parent xlator. What we are
              essentially doing here is downgrading a readdirp to a
              readdir, thereby ensuring that a lookup is always
              triggered if that file is accessed again.<br>
              <br>
              Thanks,<br>
              Ravi</font><br>
          </big></font></big><br>
      <br>
      <br>
      <br>
      On 12/27/2013 04:40 PM, Ravishankar N wrote:<br>
    </div>
    <blockquote cite="mid:52BD6013.4080604@redhat.com" type="cite">
      <meta http-equiv="content-type" content="text/html;
        charset=ISO-8859-1">
      <br>
      <div class="moz-forward-container"><br>
        <br>
        -------- Original Message --------
        <table class="moz-email-headers-table" border="0"
          cellpadding="0" cellspacing="0">
          <tbody>
            <tr>
              <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Subject:

              </th>
              <td>Re: [Gluster-users] Fencing FOPs on data-split-brained
                files</td>
            </tr>
            <tr>
              <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Date:
              </th>
              <td>Tue, 19 Nov 2013 16:03:14 +0530</td>
            </tr>
            <tr>
              <th align="RIGHT" nowrap="nowrap" valign="BASELINE">From:
              </th>
              <td>Ravishankar N <a moz-do-not-send="true"
                  class="moz-txt-link-rfc2396E"
                  href="mailto:ravishankar@redhat.com">&lt;ravishankar@redhat.com&gt;</a></td>
            </tr>
            <tr>
              <th align="RIGHT" nowrap="nowrap" valign="BASELINE">To: </th>
              <td>Anand Avati <a moz-do-not-send="true"
                  class="moz-txt-link-rfc2396E"
                  href="mailto:avati@gluster.org">&lt;avati@gluster.org&gt;</a></td>
            </tr>
            <tr>
              <th align="RIGHT" nowrap="nowrap" valign="BASELINE">CC: </th>
              <td>Gluster Devel <a moz-do-not-send="true"
                  class="moz-txt-link-rfc2396E"
                  href="mailto:gluster-devel@nongnu.org">&lt;gluster-devel@nongnu.org&gt;</a>,
                <a moz-do-not-send="true" class="moz-txt-link-rfc2396E"
                  href="mailto:gluster-users@gluster.org">"gluster-users@gluster.org"</a>
                <a moz-do-not-send="true" class="moz-txt-link-rfc2396E"
                  href="mailto:gluster-users@gluster.org">&lt;gluster-users@gluster.org&gt;</a></td>
            </tr>
          </tbody>
        </table>
        <br>
        <br>
        <meta content="text/html; charset=ISO-8859-1"
          http-equiv="Content-Type">
        <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>
        <br>
        <br>
        <meta http-equiv="CONTENT-TYPE" content="text/html;
          charset=ISO-8859-1">
        <p class="western" style="margin-bottom: 0in"><i>Resending the
            mail again as there was no response<br>
            -Ravi<br>
          </i></p>
        <p class="western" style="margin-bottom: 0in">All,<br>
          <br>
          I have tabulated what operations must/ mustn'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" border="0" cellspacing="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" height="53"
                align="CENTER" bgcolor="#CFE7F5" 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" height="17"
                align="LEFT"><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" height="17"
                align="LEFT"><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" height="18"
                align="LEFT"><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" height="17"
                align="LEFT"><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" height="18"
                align="LEFT"><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" height="18"
                align="LEFT"><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" height="17"
                align="LEFT"><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" height="17"
                align="LEFT"><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" height="17"
                align="LEFT"><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" height="17"
                align="LEFT"><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" height="18"
                align="LEFT"><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" height="18"
                align="LEFT"><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" height="17"
                align="LEFT"><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" height="18"
                align="LEFT"><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>
        <br>
      </div>
      <br>
    </blockquote>
    <br>
  </body>
</html>