<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">The reason nodes are fenced during
      network failures is because we need to guarantee that no i/o's are
      going to happen from this fenced node. If you just change the fs
      to read-only we still cannot guarantee that there are no
      inflight-io's from this node from previous writes.<br>
      <br>
      <br>
      On 05/31/2013 08:33 AM, Vineeth Thampi wrote:<br>
    </div>
    <blockquote
cite="mid:CALeRH44B2Am=k3y6hHPWpc3itTSug1EeDBsKAc6tsNCqkjKtFA@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_default" style="font-family:courier
          new,monospace;font-size:small">Hi,<br>
          <br>
        </div>
        <div class="gmail_default" style="font-family:courier
          new,monospace;font-size:small">I have been working around the
          issue of Node fence in case of a heartbeat failure / Network
          timeout. I modified o2quo_fence_self() in quorum.c to make all
          ocfs2 filesystems RO, when tested it worked like a charm, and
          the filesystems were made RO, but I am not able to umount the
          filesystem or stop O2CB service.<br>
          <br>
        </div>
        <div class="gmail_default" style="font-family:courier
          new,monospace;font-size:small">Is there any way by which I
          could ask O2CB to abort heartbeat and treat the filesystem as
          LOCAL instead of GLOBAL? <br>
          <br>
        </div>
        <div class="gmail_default" style="font-family:courier
          new,monospace;font-size:small">The following is the code
          change that I made.<br>
          <br>
          **************************************************<br>
          static void make_fs_RO(struct super_block *sb, void *arg)<br>
          {<br>
          &nbsp;&nbsp;&nbsp; struct ocfs2_super *osb = OCFS2_SB(sb);<br>
          <br>
          &nbsp;&nbsp;&nbsp; sb-&gt;s_flags |= MS_RDONLY;<br>
          &nbsp;&nbsp;&nbsp; ocfs2_set_osb_flag(osb, OCFS2_OSB_ERROR_FS);<br>
          &nbsp;&nbsp;&nbsp; ocfs2_set_ro_flag(osb, *(int *)arg);<br>
          }<br>
          <br>
          /* this is horribly heavy-handed.&nbsp; It should instead flip the
          file<br>
          &nbsp;* system RO and call some userspace script. */<br>
          static void o2quo_fence_self(void)<br>
          {<br>
          <br>
          <b>...</b><br>
          <br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case O2NM_FENCE_RESET:<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printk(KERN_ERR "*** Hard failure in O2CB, all
          ocfs2 "<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "filesystems made RO ***\n");<br>
          <br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Iterate through all ocfs2 super blocks and
          make each of <br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; them RO */<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fs_type = get_fs_type("ocfs2");<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fs_type)<br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iterate_supers_type(fs_type,
          make_fs_RO, &amp;hard_reset);<br>
          <br>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>
          <b>...</b><br>
          <br>
          }<br>
***************************************************************<br>
          <br>
          <br>
        </div>
        <div class="gmail_default" style="font-family:courier
          new,monospace;font-size:small">The error from kern.log:<br>
          <br>
          =======================================<br>
          May 31 16:08:18 localhost kernel: [ 5434.076126]
          (kworker/u:2,577,3):dlm_send_remote_convert_request:395 ERROR:
          Error -107 when sending message 504 (key 0xcfe4a084) to node 0<br>
          May 31 16:08:18 localhost kernel: [ 5434.076178] o2dlm:
          Waiting on the death of node 0 in domain
          A4E98618A3744717A65AF04E943D035A<br>
          =======================================<br>
          <br>
        </div>
        <div class="gmail_default" style="font-family:courier
          new,monospace;font-size:small">
          Any pointers would be much appreciated.<br>
          <br>
        </div>
        <div class="gmail_default" style="font-family:courier
          new,monospace;font-size:small">Thanks,<br>
          <br>
          Vineeth<br>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Ocfs2-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Ocfs2-users@oss.oracle.com">Ocfs2-users@oss.oracle.com</a>
<a class="moz-txt-link-freetext" href="https://oss.oracle.com/mailman/listinfo/ocfs2-users">https://oss.oracle.com/mailman/listinfo/ocfs2-users</a></pre>
    </blockquote>
    <br>
  </body>
</html>