ocfs2: Replace panic() with emergency_restart() when fencing
authorSunil Mushran <sunil.mushran@oracle.com>
Tue, 17 Apr 2007 20:53:38 +0000 (13:53 -0700)
committerMark Fasheh <mark.fasheh@oracle.com>
Thu, 26 Apr 2007 20:39:02 +0000 (13:39 -0700)
We have noticed panic() hanging leading us to a situation in which
the node, while otherwise dead, is still disk heartbeating. This
leads to a hung cluster as the other nodes are waiting for this
node to stop disk heartbeating. This situation is only resolved
by power resetting the box.

Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
fs/ocfs2/cluster/quorum.c

index 4705d65..bbacf7d 100644 (file)
@@ -46,6 +46,7 @@
 #include <linux/kernel.h>
 #include <linux/slab.h>
 #include <linux/workqueue.h>
+#include <linux/reboot.h>
 
 #include "heartbeat.h"
 #include "nodemanager.h"
@@ -72,7 +73,9 @@ static void o2quo_fence_self(void)
        /* panic spins with interrupts enabled.  with preempt
         * threads can still schedule, etc, etc */
        o2hb_stop_all_regions();
-       panic("ocfs2 is very sorry to be fencing this system by panicing\n");
+
+       printk("ocfs2 is very sorry to be fencing this system by restarting\n");
+       emergency_restart();
 }
 
 /* Indicate that a timeout occured on a hearbeat region write. The