qdiskd: backport dual socket connection to cman
PATCH 1/1 qdiskd: backport dual socket connection to cman
From: "Fabio M. Di Nitto" <[email protected]>
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
--- 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(-)
cman/qdisk/disk.h +3 -2
@@ -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 */
cman/qdisk/disk_util.c +4 -3
@@ -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 ;
cman/qdisk/iostate.c +4 -4
@@ -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;
cman/qdisk/main.c +32 -37
189 lines not on this page · raw message
Signature · 1 line
1.7.7.6
PATCH 1/1 qdiskd: backport dual socket connection to cman
Quoted 9 lines · Fabio M. Di Nitto
From: "Fabio M. Di Nitto" <[email protected]>
Patch
76741bb2a94ae94e493c609d50f570d02e2f3029had a not so obvious dependency on08ae3ce147b2771c5ee6e1d364a5e48c88384427.Backport portion of
08ae3ce147b2771c5ee6e1d364a5e48c88384427to handle dual cman socket (admin and user) and use the correct socket (user) for send/receive data.
That looks right. The cman admin socket can't be used for sending/receiving data, so the previous patch wouldn't work without it.
-- Lon