File libdlm-pacemaker.patch of Package libdlm

Index: libdlm/configure.ac
===================================================================
--- libdlm.orig/configure.ac
+++ libdlm/configure.ac
@@ -132,7 +132,7 @@ if test "x${enable_pacemaker}" = xyes; t
 	PKG_CHECK_MODULES([glib],[glib-2.0])
 	check_lib_no_libs cib cib_new
 	check_lib_no_libs crmcluster crm_set_status_callback
-	check_lib_no_libs crmcommon init_server_ipc_comms
+#	check_lib_no_libs crmcommon init_server_ipc_comms
 fi
 
 if test "x${enable_cman}" = xyes; then
Index: libdlm/group/dlm_controld/pacemaker.c
===================================================================
--- libdlm.orig/group/dlm_controld/pacemaker.c
+++ libdlm/group/dlm_controld/pacemaker.c
@@ -10,13 +10,12 @@
 #include <pacemaker/crm_config.h>
 
 #include <pacemaker/crm/crm.h>
-#include <pacemaker/crm/ais.h>
+#include <pacemaker/crm/cluster.h>
+#include <pacemaker/crm/cluster/plugin.h>
 #include <pacemaker/crm/attrd.h>
 /* heartbeat support is irrelevant here */
 #undef SUPPORT_HEARTBEAT 
 #define SUPPORT_HEARTBEAT 0
-#include <pacemaker/crm/common/cluster.h>
-#include <pacemaker/crm/common/stack.h>
 #include <pacemaker/crm/common/ipc.h>
 #include <pacemaker/crm/msg_xml.h>
 #include <pacemaker/crm/cib.h>
@@ -52,20 +51,27 @@ int setup_cluster_cfg(void) { return 0;
 void process_cluster_cfg(int ci) {}
 void close_cluster_cfg(void) {}
 
-extern int ais_fd_async;
-
+static crm_cluster_t crm_cluster;
 char *local_node_uname = NULL;
 void dlm_process_node(gpointer key, gpointer value, gpointer user_data);
 
+/* Mean ugly dirty hack */
+extern int ais_fd_async;
+
 int setup_cluster(void)
 {
-    ais_fd_async = -1;
-    crm_log_init("cluster-dlm", LOG_INFO, FALSE, TRUE, 0, NULL);
+    crm_log_init("cluster-dlm", LOG_INFO, FALSE, TRUE, 0, NULL, FALSE);
     
-    if(init_ais_connection(NULL, NULL, NULL, &local_node_uname, &our_nodeid) == FALSE) {
+    if(crm_cluster_connect(&crm_cluster) == FALSE ) {
 	log_error("Connection to our AIS plugin (CRM) failed");
 	return -1;
     }
+    if (!ais_fd_async) {
+	log_error("Connection to our AIS plugin (CRM) did not return a valid fd");
+	return -1;
+    }
+    local_node_uname = crm_cluster.uname;
+    our_nodeid = crm_cluster.nodeid;
 
     /* Sign up for membership updates */
     send_ais_text(crm_class_notify, "true", TRUE, NULL, crm_msg_ais);
@@ -89,12 +95,12 @@ void update_cluster(void)
 
 void process_cluster(int ci)
 {
-    ais_dispatch(ais_fd_async, NULL);
+    ais_dispatch(NULL);
     update_cluster();
 }
 
 void close_cluster(void) {
-    terminate_ais_connection();
+    crm_cluster_disconnect(&crm_cluster);
 }
 
 #include <arpa/inet.h>
@@ -117,7 +123,7 @@ void dlm_process_node(gpointer key, gpoi
     snprintf(path, PATH_MAX, "%s/%d", COMMS_DIR, node->id);
 
     rc = stat(path, &tmp);
-    is_active = crm_is_member_active(node);
+    is_active = crm_is_peer_active(node);
     
     if(rc == 0 && is_active) {
 	/* nothing to do?
@@ -205,7 +211,7 @@ void dlm_process_node(gpointer key, gpoi
     }
 
     log_debug("%s %sctive node %u: born-on=%llu, last-seen=%llu, this-event=%llu, last-event=%llu",
-	       action, crm_is_member_active(value)?"a":"ina",
+	       action, crm_is_peer_active(value)?"a":"ina",
 	       node->id, node->born, node->last_seen,
 	       crm_peer_seq, (unsigned long long)*last);
 }
@@ -213,7 +219,7 @@ void dlm_process_node(gpointer key, gpoi
 int is_cluster_member(uint32_t nodeid)
 {
     crm_node_t *node = crm_get_peer(nodeid, NULL);
-    return crm_is_member_active(node);
+    return crm_is_peer_active(node);
 }
 
 char *nodeid2name(int nodeid) {
@@ -278,9 +284,9 @@ static cib_t *cib_connect(void)
     }
     
     cib = cib_new();
-    rc = cib->cmds->signon_raw(cib, crm_system_name, cib_command, &cib_fd, NULL);
-    if(rc != cib_ok) {
-	log_error("Signon to cib failed: %s", cib_error2string(rc));
+    rc = cib->cmds->signon_raw(cib, crm_system_name, cib_command, &cib_fd);
+    if(rc != 0) {
+	log_error("Signon to cib failed: %s", pcmk_strerror(rc));
 	cib = NULL; /* TODO: memory leak in unlikely error path */
 
     } else {
openSUSE Build Service is sponsored by