diff --git a/exec/service.c b/exec/service.c index 14321467..4cd9d8e0 100644 --- a/exec/service.c +++ b/exec/service.c @@ -58,12 +58,6 @@ LOGSYS_DECLARE_SUBSYS ("SERV"); -struct default_service { - const char *name; - int ver; - struct corosync_service_engine *(*loader)(void); -}; - static struct default_service default_services[] = { { .name = "corosync_evs", @@ -99,11 +93,6 @@ static struct default_service default_services[] = { .loader = wd_get_service_engine_ver0 }, #endif - { - .name = "corosync_votequorum", - .ver = 0, - .loader = votequorum_get_service_engine_ver0 - }, { .name = "corosync_quorum", .ver = 0, diff --git a/exec/service.h b/exec/service.h index 53091748..67d4b949 100644 --- a/exec/service.h +++ b/exec/service.h @@ -39,7 +39,11 @@ struct corosync_api_v1; -struct default_service; +struct default_service { + const char *name; + int ver; + struct corosync_service_engine *(*loader)(void); +}; /** * Link and initialize a service diff --git a/exec/votequorum.c b/exec/votequorum.c index 0f4f05a2..ef0e3a76 100644 --- a/exec/votequorum.c +++ b/exec/votequorum.c @@ -58,7 +58,6 @@ LOGSYS_DECLARE_SUBSYS ("VOTEQ"); */ static struct corosync_api_v1 *corosync_api; -static int votequorum_configured = 0; /* * votequorum global config vars @@ -222,6 +221,8 @@ static quorum_set_quorate_fn_t quorum_callback; * votequorum_exec handler and definitions */ +static int votequorum_exec_init_fn (struct corosync_api_v1 *api); + static void message_handler_req_exec_votequorum_nodeinfo ( const void *message, unsigned int nodeid); @@ -328,6 +329,7 @@ static struct corosync_service_engine votequorum_service_engine = { .lib_exit_fn = quorum_lib_exit_fn, .lib_engine = quorum_lib_service, .lib_engine_count = sizeof (quorum_lib_service) / sizeof (struct corosync_lib_handler), + .exec_init_fn = votequorum_exec_init_fn, .exec_engine = votequorum_exec_engine, .exec_engine_count = sizeof (votequorum_exec_engine) / sizeof (struct corosync_exec_handler), .confchg_fn = votequorum_confchg_fn, @@ -339,6 +341,14 @@ struct corosync_service_engine *votequorum_get_service_engine_ver0 (void) return (&votequorum_service_engine); } +static struct default_service votequorum_service[] = { + { + .name = "corosync_votequorum", + .ver = 0, + .loader = votequorum_get_service_engine_ver0 + }, +}; + /* * common/utility macros/functions */ @@ -1131,11 +1141,6 @@ static void votequorum_confchg_fn ( ENTER(); - if (votequorum_configured == 0) { - LEAVE(); - return; - } - if (member_list_entries > 1) { first_trans = 0; } @@ -1205,12 +1210,8 @@ cs_error_t votequorum_init(struct corosync_api_v1 *api, votequorum_readconfig_static(); - if (votequorum_exec_init_fn(api) != 0) { - LEAVE(); - return CS_ERR_NO_MEMORY; - } - - votequorum_configured = 1; + corosync_service_link_and_init(corosync_api, + &votequorum_service[0]); LEAVE(); diff --git a/exec/vsf_ykd.c b/exec/vsf_ykd.c index 282ba7ff..e021ad14 100644 --- a/exec/vsf_ykd.c +++ b/exec/vsf_ykd.c @@ -146,8 +146,6 @@ hdb_handle_t schedwrk_state_send_callback_handle; static struct corosync_api_v1 *api; -static int ykd_configured = 0; - static void (*ykd_primary_callback_fn) ( const unsigned int *view_list, size_t view_list_entries, @@ -465,10 +463,6 @@ static void ykd_confchg_fn ( { int i; - if (ykd_configured == 0) { - return; - } - if (configuration_type != TOTEM_CONFIGURATION_REGULAR) { return; } @@ -525,8 +519,6 @@ cs_error_t ykd_init ( return CS_ERR_INVALID_PARAM; } - ykd_configured = 1; - api->tpg_init ( &ykd_group_handle, ykd_deliver_fn,