Pull ec into release branch
[pandora-kernel.git] / fs / ocfs2 / heartbeat.c
index 0bbd22f..b25ef63 100644 (file)
@@ -67,6 +67,7 @@ void ocfs2_init_node_maps(struct ocfs2_super *osb)
        ocfs2_node_map_init(&osb->mounted_map);
        ocfs2_node_map_init(&osb->recovery_map);
        ocfs2_node_map_init(&osb->umount_map);
+       ocfs2_node_map_init(&osb->osb_recovering_orphan_dirs);
 }
 
 static void ocfs2_do_node_down(int node_num,
@@ -153,6 +154,9 @@ int ocfs2_register_hb_callbacks(struct ocfs2_super *osb)
 {
        int status;
 
+       if (ocfs2_mount_local(osb))
+               return 0;
+
        status = o2hb_register_callback(&osb->osb_hb_down);
        if (status < 0) {
                mlog_errno(status);
@@ -160,8 +164,10 @@ int ocfs2_register_hb_callbacks(struct ocfs2_super *osb)
        }
 
        status = o2hb_register_callback(&osb->osb_hb_up);
-       if (status < 0)
+       if (status < 0) {
                mlog_errno(status);
+               o2hb_unregister_callback(&osb->osb_hb_down);
+       }
 
 bail:
        return status;
@@ -169,15 +175,11 @@ bail:
 
 void ocfs2_clear_hb_callbacks(struct ocfs2_super *osb)
 {
-       int status;
-
-       status = o2hb_unregister_callback(&osb->osb_hb_down);
-       if (status < 0)
-               mlog_errno(status);
+       if (ocfs2_mount_local(osb))
+               return;
 
-       status = o2hb_unregister_callback(&osb->osb_hb_up);
-       if (status < 0)
-               mlog_errno(status);
+       o2hb_unregister_callback(&osb->osb_hb_down);
+       o2hb_unregister_callback(&osb->osb_hb_up);
 }
 
 void ocfs2_stop_heartbeat(struct ocfs2_super *osb)
@@ -185,6 +187,9 @@ void ocfs2_stop_heartbeat(struct ocfs2_super *osb)
        int ret;
        char *argv[5], *envp[3];
 
+       if (ocfs2_mount_local(osb))
+               return;
+
        if (!osb->uuid_str) {
                /* This can happen if we don't get far enough in mount... */
                mlog(0, "No UUID with which to stop heartbeat!\n\n");