From: Fabio M. Di Nitto fdini...@redhat.com
Patch 76741bb2a94ae94e493c609d50f570d02e2f3029 had a not so obvious
dependency on 08ae3ce147b2771c5ee6e1d364a5e48c88384427.
Backport portion of 08ae3ce147b2771c5ee6e1d364a5e48c88384427 to handle
dual cman socket (admin and user) and use the correct socket (user)
for send/receive data.
Move cman_alive check and heartbeat (for dispatch) to ch_user.
Resolves: rhbz#782900
Signed-off-by: Fabio M. Di Nitto fdini...@redhat.com
---
cman/qdisk/disk.h |5 ++-
cman/qdisk/disk_util.c |7 +++--
cman/qdisk/iostate.c |8 +++---
cman/qdisk/main.c | 69 ++-
4 files changed, 43 insertions(+), 46 deletions(-)
diff --git a/cman/qdisk/disk.h b/cman/qdisk/disk.h
index d491de1..83167ea 100644
--- a/cman/qdisk/disk.h
+++ b/cman/qdisk/disk.h
@@ -270,7 +270,8 @@ typedef struct {
int qc_master; /* Master?! */
int qc_status_sock;
run_flag_t qc_flags;
- cman_handle_t qc_ch;
+ cman_handle_t qc_ch_admin;
+ cman_handle_t qc_ch_user;
char *qc_device;
char *qc_label;
char *qc_status_file;
@@ -299,7 +300,7 @@ typedef struct {
int qd_write_status(qd_ctx *ctx, int nid, disk_node_state_t state,
disk_msg_t *msg, memb_mask_t mask, memb_mask_t master);
int qd_read_print_status(target_info_t *disk, int nid);
-int qd_init(qd_ctx *ctx, cman_handle_t ch, int me);
+int qd_init(qd_ctx *ctx, cman_handle_t ch_admin, cman_handle_t ch_user, int
me);
void qd_destroy(qd_ctx *ctx);
/* proc.c */
diff --git a/cman/qdisk/disk_util.c b/cman/qdisk/disk_util.c
index f5539c0..25f4013 100644
--- a/cman/qdisk/disk_util.c
+++ b/cman/qdisk/disk_util.c
@@ -312,16 +312,17 @@ generate_token(void)
Initialize a quorum disk context, given a CMAN handle and a nodeid.
*/
int
-qd_init(qd_ctx *ctx, cman_handle_t ch, int me)
+qd_init(qd_ctx *ctx, cman_handle_t ch_admin, cman_handle_t ch_user, int me)
{
- if (!ctx || !ch || !me) {
+ if (!ctx || !ch_admin || !ch_user || !me) {
errno = EINVAL;
return -1;
}
memset(ctx, 0, sizeof(*ctx));
ctx-qc_incarnation = generate_token();
- ctx-qc_ch = ch;
+ ctx-qc_ch_admin = ch_admin;
+ ctx-qc_ch_user = ch_user;
ctx-qc_my_id = me;
ctx-qc_status_sock = -1;
diff --git a/cman/qdisk/iostate.c b/cman/qdisk/iostate.c
index eb74ad2..ba7ad12 100644
--- a/cman/qdisk/iostate.c
+++ b/cman/qdisk/iostate.c
@@ -69,7 +69,7 @@ io_nanny_thread(void *arg)
iostate_t last_main_state = 0, current_main_state = 0;
int last_main_incarnation = 0, current_main_incarnation = 0;
int logged_incarnation = 0;
- cman_handle_t ch = (cman_handle_t)arg;
+ cman_handle_t ch_user = (cman_handle_t)arg;
int32_t whine_state;
/* Start with wherever we're at now */
@@ -105,7 +105,7 @@ io_nanny_thread(void *arg)
/* Whine on CMAN api */
whine_state = (int32_t)current_main_state;
swab32(whine_state);
- cman_send_data(ch, whine_state, sizeof(int32_t), 0,
CLUSTER_PORT_QDISKD, 0);
+ cman_send_data(ch_user, whine_state, sizeof(int32_t), 0,
CLUSTER_PORT_QDISKD, 0);
/* Don't log things twice */
if (logged_incarnation == current_main_incarnation)
@@ -125,7 +125,7 @@ io_nanny_thread(void *arg)
int
-io_nanny_start(cman_handle_t ch, int timeout)
+io_nanny_start(cman_handle_t ch_user, int timeout)
{
int ret;
@@ -135,7 +135,7 @@ io_nanny_start(cman_handle_t ch, int timeout)
qdisk_timeout = timeout;
thread_active = 1;
- ret = pthread_create(io_nanny_tid, NULL, io_nanny_thread, ch);
+ ret = pthread_create(io_nanny_tid, NULL, io_nanny_thread, ch_user);
pthread_mutex_unlock(state_mutex);
return ret;
diff --git a/cman/qdisk/main.c b/cman/qdisk/main.c
index 90d00ab..72a3c07 100644
--- a/cman/qdisk/main.c
+++ b/cman/qdisk/main.c
@@ -287,7 +287,7 @@ check_transitions(qd_ctx *ctx, node_info_t *ni, int max,
memb_mask_t mask)
if (ctx-qc_flags RF_ALLOW_KILL) {
clulog(LOG_DEBUG, Telling CMAN to
kill the node\n);
- cman_kill_node(ctx-qc_ch,
+ cman_kill_node(ctx-qc_ch_admin,
ni[x].ni_status.ps_nodeid);
}
}
@@ -325,7 +325,7 @@ check_transitions(qd_ctx *ctx, node_info_t *ni, int max,
memb_mask_t mask)
if (ctx-qc_flags RF_ALLOW_KILL) {
clulog(LOG_DEBUG, Telling CMAN to
kill the node\n);
- cman_kill_node(ctx-qc_ch,
+