On 02/12/2012 10:04 PM, Fabio M. Di Nitto wrote: > Temporary NACK. I agree most of this API should go and the patch looks > fine but there are consumers of some of those bits. > > pacemaker uses cfg_state_track > > mcp/corosync.c:146: cs_repeat(retries, 30, rc = > corosync_cfg_state_track(cfg_handle, 0, &cfg_buffer)); > This API doesn't do anything. Look at the code, and you will see it doesn't do anyting. Best solution would be to simply remove it. I realize this causes some breakage, but very few people are using cfg at the moment. > (tho i have no idea what this code does or if it's even in use) > > Andrew? > > dlm needs porting (due to cfg callback changes). > > Either me or David can easily take care of this but Andrew is the major > consumer here. > > Fabio > > On 02/13/2012 03:45 AM, Steven Dake wrote: >> Remove: >> cfg_statetrack >> cfg_statetrackstop >> cfg_administrativestateste >> cfg_administrativestateget >> cfg_serviceload >> cfg_serviceunload >> >> Rev SO to 5.0.0 >> >> Signed-off-by: Steven Dake <sdake@xxxxxxxxxx> >> --- >> cts/agents/cpg_test_agent.c | 6 -- >> exec/cfg.c | 170 +----------------------------------------- >> include/corosync/cfg.h | 81 -------------------- >> include/corosync/ipc_cfg.h | 78 ++------------------ >> lib/cfg.c | 147 ------------------------------------- >> lib/libcfg.verso | 2 +- >> tools/corosync-cfgtool.c | 75 +------------------ >> tools/corosync-quorumtool.c | 1 - >> 8 files changed, 14 insertions(+), 546 deletions(-) >> >> diff --git a/cts/agents/cpg_test_agent.c b/cts/agents/cpg_test_agent.c >> index 79de0d3..e99f522 100644 >> --- a/cts/agents/cpg_test_agent.c >> +++ b/cts/agents/cpg_test_agent.c >> @@ -244,7 +244,6 @@ static void my_shutdown_callback (corosync_cfg_handle_t handle, >> >> static corosync_cfg_callbacks_t cfg_callbacks = { >> .corosync_cfg_shutdown_callback = my_shutdown_callback, >> - .corosync_cfg_state_track_callback = NULL, >> }; >> static cpg_callbacks_t callbacks = { >> .cpg_deliver_fn = delivery_callback, >> @@ -559,8 +558,6 @@ static void msg_blaster_zcb (int sock, char* num_to_send_str) >> send_some_more_messages_zcb (); >> } >> >> -static corosync_cfg_state_notification_t notification_buffer; >> - >> static int cfg_dispatch_wrapper_fn ( >> int fd, >> int revents, >> @@ -737,9 +734,6 @@ static void do_command (int sock, char* func, char*args[], int num_args) >> result = corosync_cfg_fd_get (cfg_handle, &cfg_fd); >> qb_log (LOG_INFO,"corosync_cfg_fd_get() == %d", result); >> >> - result = corosync_cfg_state_track (cfg_handle, 0, ¬ification_buffer); >> - qb_log (LOG_INFO,"corosync_cfg_state_track() == %d", result); >> - >> qb_loop_poll_add (ta_poll_handle_get(), >> QB_LOOP_MED, >> cfg_fd, >> diff --git a/exec/cfg.c b/exec/cfg.c >> index f195395..2fe6c97 100644 >> --- a/exec/cfg.c >> +++ b/exec/cfg.c >> @@ -137,30 +137,6 @@ static void message_handler_req_lib_cfg_ringreenable ( >> void *conn, >> const void *msg); >> >> -static void message_handler_req_lib_cfg_statetrack ( >> - void *conn, >> - const void *msg); >> - >> -static void message_handler_req_lib_cfg_statetrackstop ( >> - void *conn, >> - const void *msg); >> - >> -static void message_handler_req_lib_cfg_administrativestateset ( >> - void *conn, >> - const void *msg); >> - >> -static void message_handler_req_lib_cfg_administrativestateget ( >> - void *conn, >> - const void *msg); >> - >> -static void message_handler_req_lib_cfg_serviceload ( >> - void *conn, >> - const void *msg); >> - >> -static void message_handler_req_lib_cfg_serviceunload ( >> - void *conn, >> - const void *msg); >> - >> static void message_handler_req_lib_cfg_killnode ( >> void *conn, >> const void *msg); >> @@ -199,50 +175,26 @@ static struct corosync_lib_handler cfg_lib_engine[] = >> .flow_control = CS_LIB_FLOW_CONTROL_REQUIRED >> }, >> { /* 2 */ >> - .lib_handler_fn = message_handler_req_lib_cfg_statetrack, >> - .flow_control = CS_LIB_FLOW_CONTROL_REQUIRED >> - }, >> - { /* 3 */ >> - .lib_handler_fn = message_handler_req_lib_cfg_statetrackstop, >> - .flow_control = CS_LIB_FLOW_CONTROL_REQUIRED >> - }, >> - { /* 4 */ >> - .lib_handler_fn = message_handler_req_lib_cfg_administrativestateset, >> - .flow_control = CS_LIB_FLOW_CONTROL_NOT_REQUIRED >> - }, >> - { /* 5 */ >> - .lib_handler_fn = message_handler_req_lib_cfg_administrativestateget, >> - .flow_control = CS_LIB_FLOW_CONTROL_NOT_REQUIRED >> - }, >> - { /* 6 */ >> - .lib_handler_fn = message_handler_req_lib_cfg_serviceload, >> - .flow_control = CS_LIB_FLOW_CONTROL_NOT_REQUIRED >> - }, >> - { /* 7 */ >> - .lib_handler_fn = message_handler_req_lib_cfg_serviceunload, >> - .flow_control = CS_LIB_FLOW_CONTROL_NOT_REQUIRED >> - }, >> - { /* 8 */ >> .lib_handler_fn = message_handler_req_lib_cfg_killnode, >> .flow_control = CS_LIB_FLOW_CONTROL_NOT_REQUIRED >> }, >> - { /* 9 */ >> + { /* 3 */ >> .lib_handler_fn = message_handler_req_lib_cfg_tryshutdown, >> .flow_control = CS_LIB_FLOW_CONTROL_NOT_REQUIRED >> }, >> - { /* 10 */ >> + { /* 4 */ >> .lib_handler_fn = message_handler_req_lib_cfg_replytoshutdown, >> .flow_control = CS_LIB_FLOW_CONTROL_NOT_REQUIRED >> }, >> - { /* 11 */ >> + { /* 5 */ >> .lib_handler_fn = message_handler_req_lib_cfg_get_node_addrs, >> .flow_control = CS_LIB_FLOW_CONTROL_NOT_REQUIRED >> }, >> - { /* 12 */ >> + { /* 6 */ >> .lib_handler_fn = message_handler_req_lib_cfg_local_get, >> .flow_control = CS_LIB_FLOW_CONTROL_NOT_REQUIRED >> }, >> - { /* 13 */ >> + { /* 7 */ >> .lib_handler_fn = message_handler_req_lib_cfg_crypto_set, >> .flow_control = CS_LIB_FLOW_CONTROL_NOT_REQUIRED >> } >> @@ -682,118 +634,6 @@ static void message_handler_req_lib_cfg_ringreenable ( >> LEAVE(); >> } >> >> -static void message_handler_req_lib_cfg_statetrack ( >> - void *conn, >> - const void *msg) >> -{ >> - struct cfg_info *ci = (struct cfg_info *)api->ipc_private_data_get (conn); >> - struct res_lib_cfg_statetrack res_lib_cfg_statetrack; >> - >> - ENTER(); >> - >> - /* >> - * We only do shutdown tracking at the moment >> - */ >> - if (list_empty(&ci->list)) { >> - list_add(&ci->list, &trackers_list); >> - ci->tracker_conn = conn; >> - >> - if (shutdown_con) { >> - /* >> - * Shutdown already in progress, ask the newcomer's opinion >> - */ >> - ci->shutdown_reply = SHUTDOWN_REPLY_UNKNOWN; >> - shutdown_expected++; >> - send_test_shutdown(conn, NULL, CS_OK); >> - } >> - } >> - >> - res_lib_cfg_statetrack.header.size = sizeof(struct res_lib_cfg_statetrack); >> - res_lib_cfg_statetrack.header.id = MESSAGE_RES_CFG_STATETRACKSTART; >> - res_lib_cfg_statetrack.header.error = CS_OK; >> - >> - api->ipc_response_send(conn, &res_lib_cfg_statetrack, >> - sizeof(res_lib_cfg_statetrack)); >> - >> - LEAVE(); >> -} >> - >> -static void message_handler_req_lib_cfg_statetrackstop ( >> - void *conn, >> - const void *msg) >> -{ >> - struct cfg_info *ci = (struct cfg_info *)api->ipc_private_data_get (conn); >> -// struct req_lib_cfg_statetrackstop *req_lib_cfg_statetrackstop = (struct req_lib_cfg_statetrackstop *)message; >> - >> - ENTER(); >> - remove_ci_from_shutdown(ci); >> - LEAVE(); >> -} >> - >> -static void message_handler_req_lib_cfg_administrativestateset ( >> - void *conn, >> - const void *msg) >> -{ >> -// struct req_lib_cfg_administrativestateset *req_lib_cfg_administrativestateset = (struct req_lib_cfg_administrativestateset *)message; >> - >> - ENTER(); >> - LEAVE(); >> -} >> -static void message_handler_req_lib_cfg_administrativestateget ( >> - void *conn, >> - const void *msg) >> -{ >> -// struct req_lib_cfg_administrativestateget *req_lib_cfg_administrativestateget = (struct req_lib_cfg_administrativestateget *)message; >> - ENTER(); >> - LEAVE(); >> -} >> - >> -static void message_handler_req_lib_cfg_serviceload ( >> - void *conn, >> - const void *msg) >> -{ >> - const struct req_lib_cfg_serviceload *req_lib_cfg_serviceload = msg; >> - struct res_lib_cfg_serviceload res_lib_cfg_serviceload; >> - >> - ENTER(); >> - api->service_link_and_init ( >> - api, >> - (const char *)req_lib_cfg_serviceload->service_name, >> - req_lib_cfg_serviceload->service_ver); >> - >> - res_lib_cfg_serviceload.header.id = MESSAGE_RES_CFG_SERVICEUNLOAD; >> - res_lib_cfg_serviceload.header.size = sizeof (struct res_lib_cfg_serviceload); >> - res_lib_cfg_serviceload.header.error = CS_OK; >> - api->ipc_response_send ( >> - conn, >> - &res_lib_cfg_serviceload, >> - sizeof (struct res_lib_cfg_serviceload)); >> - LEAVE(); >> -} >> - >> -static void message_handler_req_lib_cfg_serviceunload ( >> - void *conn, >> - const void *msg) >> -{ >> - const struct req_lib_cfg_serviceunload *req_lib_cfg_serviceunload = msg; >> - struct res_lib_cfg_serviceunload res_lib_cfg_serviceunload; >> - >> - ENTER(); >> - api->service_unlink_and_exit ( >> - api, >> - (const char *)req_lib_cfg_serviceunload->service_name, >> - req_lib_cfg_serviceunload->service_ver); >> - res_lib_cfg_serviceunload.header.id = MESSAGE_RES_CFG_SERVICEUNLOAD; >> - res_lib_cfg_serviceunload.header.size = sizeof (struct res_lib_cfg_serviceunload); >> - res_lib_cfg_serviceunload.header.error = CS_OK; >> - api->ipc_response_send ( >> - conn, >> - &res_lib_cfg_serviceunload, >> - sizeof (struct res_lib_cfg_serviceunload)); >> - LEAVE(); >> -} >> - >> - >> static void message_handler_req_lib_cfg_killnode ( >> void *conn, >> const void *msg) >> diff --git a/include/corosync/cfg.h b/include/corosync/cfg.h >> index 903d1ef..0f556ba 100644 >> --- a/include/corosync/cfg.h >> +++ b/include/corosync/cfg.h >> @@ -40,48 +40,6 @@ >> >> typedef uint64_t corosync_cfg_handle_t; >> >> -typedef enum { >> - COROSYNC_CFG_ADMINISTRATIVETARGET_SERVICEUNIT = 0, >> - COROSYNC_CFG_ADMINISTRATIVETARGET_SERVICEGROUP = 1, >> - COROSYNC_CFG_ADMINISTRATIVETARGET_COMPONENTSERVICEINSTANCE = 2, >> - COROSYNC_CFG_ADMINISTRATIVETARGET_NODE = 3 >> -} corosync_cfg_administrative_target_t; >> - >> -typedef enum { >> - COROSYNC_CFG_ADMINISTRATIVESTATE_UNLOCKED = 0, >> - COROSYNC_CFG_ADMINISTRATIVESTATE_LOCKED = 1, >> - COROSYNC_CFG_ADMINISTRATIVESTATE_STOPPING = 2 >> -} corosync_cfg_administrative_state_t; >> - >> -typedef enum { >> - COROSYNC_CFG_OPERATIONALSTATE_ENABLED = 1, >> - COROSYNC_CFG_OPERATIONALSTATE_DISABLED = 2 >> -} corosync_cfg_operational_state_t; >> - >> -typedef enum { >> - COROSYNC_CFG_READINESSSTATE_OUTOFSERVICE = 1, >> - COROSYNC_CFG_READINESSSTATE_INSERVICE = 2, >> - COROSYNC_CFG_READINESSSTATE_STOPPING = 3 >> -} corosync_cfg_readiness_state_t; >> - >> -typedef enum { >> - COROSYNC_CFG_PRESENCESTATE_UNINSTANTIATED = 1, >> - COROSYNC_CFG_PRESENCESTATE_INSTANTIATING = 2, >> - COROSYNC_CFG_PRESENCESTATE_INSTANTIATED = 3, >> - COROSYNC_CFG_PRESENCESTATE_TERMINATING = 4, >> - COROSYNC_CFG_PRESENCESTATE_RESTARTING = 5, >> - COROSYNC_CFG_PRESENCESTATE_INSTANTIATION_FAILED = 6, >> - COROSYNC_CFG_PRESENCESTATE_TERMINATION_FAILED = 7 >> -} corosync_cfg_presence_state_t; >> - >> -typedef enum { >> - COROSYNC_CFG_STATETYPE_OPERATIONAL = 0, >> - COROSYNC_CFG_STATETYPE_ADMINISTRATIVE = 1, >> - COROSYNC_CFG_STATETYPE_READINESS = 2, >> - COROSYNC_CFG_STATETYPE_HA = 3, >> - COROSYNC_CFG_STATETYPE_PRESENCE = 4 >> -} corosync_cfg_state_type_t; >> - >> /** >> * Shutdown types. >> */ >> @@ -107,27 +65,11 @@ typedef enum { >> COROSYNC_CFG_SHUTDOWN_FLAG_YES = 1, >> } corosync_cfg_shutdown_reply_flags_t; >> >> -typedef struct { >> - cs_name_t name; >> - corosync_cfg_state_type_t state_type; >> - corosync_cfg_administrative_state_t administrative_state; >> -} corosync_cfg_state_notification_t; >> - >> -typedef struct { >> - uint32_t number_of_items; >> - corosync_cfg_state_notification_t *notification; >> -} corosync_cfg_state_notification_buffer_t; >> - >> -typedef void (*corosync_cfg_state_track_callback_t) ( >> - corosync_cfg_state_notification_buffer_t *notification_buffer, >> - cs_error_t error); >> - >> typedef void (*corosync_cfg_shutdown_callback_t) ( >> corosync_cfg_handle_t cfg_handle, >> corosync_cfg_shutdown_flags_t flags); >> >> typedef struct { >> - corosync_cfg_state_track_callback_t corosync_cfg_state_track_callback; >> corosync_cfg_shutdown_callback_t corosync_cfg_shutdown_callback; >> } corosync_cfg_callbacks_t; >> >> @@ -186,18 +128,6 @@ corosync_cfg_ring_reenable ( >> corosync_cfg_handle_t cfg_handle); >> >> cs_error_t >> -corosync_cfg_service_load ( >> - corosync_cfg_handle_t cfg_handle, >> - const char *service_name, >> - unsigned int service_ver); >> - >> -cs_error_t >> -corosync_cfg_service_unload ( >> - corosync_cfg_handle_t cfg_handle, >> - const char *service_name, >> - unsigned int service_ver); >> - >> -cs_error_t >> corosync_cfg_kill_node ( >> corosync_cfg_handle_t cfg_handle, >> unsigned int nodeid, >> @@ -215,17 +145,6 @@ corosync_cfg_replyto_shutdown ( >> corosync_cfg_shutdown_reply_flags_t flags); >> >> cs_error_t >> -corosync_cfg_state_track ( >> - corosync_cfg_handle_t cfg_handle, >> - uint8_t track_flags, >> - const corosync_cfg_state_notification_t *notification_buffer); >> - >> -cs_error_t >> -corosync_cfg_state_track_stop ( >> - corosync_cfg_handle_t cfg_handle); >> - >> - >> -cs_error_t >> corosync_cfg_get_node_addrs ( >> corosync_cfg_handle_t cfg_handle, >> int nodeid, >> diff --git a/include/corosync/ipc_cfg.h b/include/corosync/ipc_cfg.h >> index 43859cc..882ea7a 100644 >> --- a/include/corosync/ipc_cfg.h >> +++ b/include/corosync/ipc_cfg.h >> @@ -42,18 +42,12 @@ >> enum req_lib_cfg_types { >> MESSAGE_REQ_CFG_RINGSTATUSGET = 0, >> MESSAGE_REQ_CFG_RINGREENABLE = 1, >> - MESSAGE_REQ_CFG_STATETRACKSTART = 2, >> - MESSAGE_REQ_CFG_STATETRACKSTOP = 3, >> - MESSAGE_REQ_CFG_ADMINISTRATIVESTATESET = 4, >> - MESSAGE_REQ_CFG_ADMINISTRATIVESTATEGET = 5, >> - MESSAGE_REQ_CFG_SERVICELOAD = 6, >> - MESSAGE_REQ_CFG_SERVICEUNLOAD = 7, >> - MESSAGE_REQ_CFG_KILLNODE = 8, >> - MESSAGE_REQ_CFG_TRYSHUTDOWN = 9, >> - MESSAGE_REQ_CFG_REPLYTOSHUTDOWN = 10, >> - MESSAGE_REQ_CFG_GET_NODE_ADDRS = 11, >> - MESSAGE_REQ_CFG_LOCAL_GET = 12, >> - MESSAGE_REQ_CFG_CRYPTO_SET = 13 >> + MESSAGE_REQ_CFG_KILLNODE = 2, >> + MESSAGE_REQ_CFG_TRYSHUTDOWN = 3, >> + MESSAGE_REQ_CFG_REPLYTOSHUTDOWN = 4, >> + MESSAGE_REQ_CFG_GET_NODE_ADDRS = 5, >> + MESSAGE_REQ_CFG_LOCAL_GET = 6, >> + MESSAGE_REQ_CFG_CRYPTO_SET = 7 >> }; >> >> enum res_lib_cfg_types { >> @@ -74,46 +68,6 @@ enum res_lib_cfg_types { >> MESSAGE_RES_CFG_CRYPTO_SET = 14, >> }; >> >> -struct req_lib_cfg_statetrack { >> - struct qb_ipc_request_header header; >> - uint8_t track_flags; >> - corosync_cfg_state_notification_t *notification_buffer_address; >> -}; >> - >> -struct res_lib_cfg_statetrack { >> - struct qb_ipc_response_header header; >> -}; >> - >> -struct req_lib_cfg_statetrackstop { >> - struct qb_ipc_request_header header; >> -}; >> - >> -struct res_lib_cfg_statetrackstop { >> - struct qb_ipc_response_header header; >> -}; >> - >> -struct req_lib_cfg_administrativestateset { >> - struct qb_ipc_request_header header; >> - cs_name_t comp_name; >> - corosync_cfg_administrative_target_t administrative_target; >> - corosync_cfg_administrative_state_t administrative_state; >> -}; >> - >> -struct res_lib_cfg_administrativestateset { >> - struct qb_ipc_response_header header; >> -}; >> - >> -struct req_lib_cfg_administrativestateget { >> - struct qb_ipc_request_header header; >> - cs_name_t comp_name; >> - corosync_cfg_administrative_target_t administrative_target; >> - corosync_cfg_administrative_state_t administrative_state; >> -}; >> - >> -struct res_lib_cfg_administrativestateget { >> - struct qb_ipc_response_header header __attribute__((aligned(8))); >> -}; >> - >> struct req_lib_cfg_ringstatusget { >> struct qb_ipc_request_header header __attribute__((aligned(8))); >> }; >> @@ -133,26 +87,6 @@ struct res_lib_cfg_ringreenable { >> struct qb_ipc_response_header header __attribute__((aligned(8))); >> }; >> >> -struct req_lib_cfg_serviceload { >> - struct qb_ipc_response_header header __attribute__((aligned(8))); >> - char service_name[256] __attribute__((aligned(8))); >> - unsigned int service_ver; >> -}; >> - >> -struct res_lib_cfg_serviceload { >> - struct qb_ipc_response_header header __attribute__((aligned(8))); >> -}; >> - >> -struct req_lib_cfg_serviceunload { >> - struct qb_ipc_response_header header __attribute__((aligned(8))); >> - char service_name[256] __attribute__((aligned(8))); >> - unsigned int service_ver; >> -}; >> - >> -struct res_lib_cfg_serviceunload { >> - struct qb_ipc_response_header header __attribute__((aligned(8))); >> -}; >> - >> struct req_lib_cfg_killnode { >> struct qb_ipc_request_header header __attribute__((aligned(8))); >> unsigned int nodeid __attribute__((aligned(8))); >> diff --git a/lib/cfg.c b/lib/cfg.c >> index 7728b74..aeefc26 100644 >> --- a/lib/cfg.c >> +++ b/lib/cfg.c >> @@ -381,153 +381,6 @@ corosync_cfg_ring_reenable ( >> } >> >> cs_error_t >> -corosync_cfg_service_load ( >> - corosync_cfg_handle_t cfg_handle, >> - const char *service_name, >> - unsigned int service_ver) >> -{ >> - struct cfg_inst *cfg_inst; >> - struct req_lib_cfg_serviceload req_lib_cfg_serviceload; >> - struct res_lib_cfg_serviceload res_lib_cfg_serviceload; >> - cs_error_t error; >> - struct iovec iov; >> - >> - error = hdb_error_to_cs(hdb_handle_get (&cfg_hdb, cfg_handle, (void *)&cfg_inst)); >> - if (error != CS_OK) { >> - return (error); >> - } >> - >> - req_lib_cfg_serviceload.header.size = sizeof (struct req_lib_cfg_serviceload); >> - req_lib_cfg_serviceload.header.id = MESSAGE_REQ_CFG_SERVICELOAD; >> - memset (&req_lib_cfg_serviceload.service_name, 0, >> - sizeof (req_lib_cfg_serviceload.service_name)); >> - strncpy (req_lib_cfg_serviceload.service_name, service_name, >> - sizeof (req_lib_cfg_serviceload.service_name) - 1); >> - req_lib_cfg_serviceload.service_ver = service_ver; >> - >> - iov.iov_base = (void *)&req_lib_cfg_serviceload; >> - iov.iov_len = sizeof (req_lib_cfg_serviceload); >> - >> - error = qb_to_cs_error (qb_ipcc_sendv_recv (cfg_inst->c, >> - &iov, >> - 1, >> - &res_lib_cfg_serviceload, >> - sizeof (struct res_lib_cfg_serviceload), CS_IPC_TIMEOUT_MS)); >> - >> - (void)hdb_handle_put (&cfg_hdb, cfg_handle); >> - >> - return (error); >> -} >> - >> -cs_error_t >> -corosync_cfg_service_unload ( >> - corosync_cfg_handle_t cfg_handle, >> - const char *service_name, >> - unsigned int service_ver) >> -{ >> - struct cfg_inst *cfg_inst; >> - struct req_lib_cfg_serviceunload req_lib_cfg_serviceunload; >> - struct res_lib_cfg_serviceunload res_lib_cfg_serviceunload; >> - cs_error_t error; >> - struct iovec iov; >> - >> - error = hdb_error_to_cs(hdb_handle_get (&cfg_hdb, cfg_handle, (void *)&cfg_inst)); >> - if (error != CS_OK) { >> - return (error); >> - } >> - >> - req_lib_cfg_serviceunload.header.size = sizeof (struct req_lib_cfg_serviceunload); >> - req_lib_cfg_serviceunload.header.id = MESSAGE_REQ_CFG_SERVICEUNLOAD; >> - memset (&req_lib_cfg_serviceunload.service_name, 0, >> - sizeof (req_lib_cfg_serviceunload.service_name)); >> - strncpy (req_lib_cfg_serviceunload.service_name, service_name, >> - sizeof (req_lib_cfg_serviceunload.service_name) - 1); >> - req_lib_cfg_serviceunload.service_ver = service_ver; >> - >> - iov.iov_base = (void *)&req_lib_cfg_serviceunload; >> - iov.iov_len = sizeof (req_lib_cfg_serviceunload); >> - >> - error = qb_to_cs_error (qb_ipcc_sendv_recv (cfg_inst->c, >> - &iov, >> - 1, >> - &res_lib_cfg_serviceunload, >> - sizeof (struct res_lib_cfg_serviceunload), CS_IPC_TIMEOUT_MS)); >> - >> - (void)hdb_handle_put (&cfg_hdb, cfg_handle); >> - >> - return (error); >> -} >> -cs_error_t >> -corosync_cfg_state_track ( >> - corosync_cfg_handle_t cfg_handle, >> - uint8_t track_flags, >> - const corosync_cfg_state_notification_t *notification_buffer) >> -{ >> - struct cfg_inst *cfg_inst; >> - struct req_lib_cfg_statetrack req_lib_cfg_statetrack; >> - struct res_lib_cfg_statetrack res_lib_cfg_statetrack; >> - cs_error_t error; >> - struct iovec iov; >> - >> - req_lib_cfg_statetrack.header.size = sizeof (struct req_lib_cfg_statetrack); >> - req_lib_cfg_statetrack.header.id = MESSAGE_REQ_CFG_STATETRACKSTART; >> - req_lib_cfg_statetrack.track_flags = track_flags; >> - req_lib_cfg_statetrack.notification_buffer_address = (corosync_cfg_state_notification_t *)notification_buffer; >> - >> - error = hdb_error_to_cs(hdb_handle_get (&cfg_hdb, cfg_handle, >> - (void *)&cfg_inst)); >> - if (error != CS_OK) { >> - return (error); >> - } >> - >> - iov.iov_base = (void *)&req_lib_cfg_statetrack, >> - iov.iov_len = sizeof (struct req_lib_cfg_statetrack), >> - >> - error = qb_to_cs_error (qb_ipcc_sendv_recv (cfg_inst->c, >> - &iov, >> - 1, >> - &res_lib_cfg_statetrack, >> - sizeof (struct res_lib_cfg_statetrack), CS_IPC_TIMEOUT_MS)); >> - >> - (void)hdb_handle_put (&cfg_hdb, cfg_handle); >> - >> - return (error == CS_OK ? res_lib_cfg_statetrack.header.error : error); >> -} >> - >> -cs_error_t >> -corosync_cfg_state_track_stop ( >> - corosync_cfg_handle_t cfg_handle) >> -{ >> - struct cfg_inst *cfg_inst; >> - struct req_lib_cfg_statetrackstop req_lib_cfg_statetrackstop; >> - struct res_lib_cfg_statetrackstop res_lib_cfg_statetrackstop; >> - cs_error_t error; >> - struct iovec iov; >> - >> - error = hdb_error_to_cs (hdb_handle_get (&cfg_hdb, cfg_handle, >> - (void *)&cfg_inst)); >> - if (error != CS_OK) { >> - return (error); >> - } >> - >> - req_lib_cfg_statetrackstop.header.size = sizeof (struct req_lib_cfg_statetrackstop); >> - req_lib_cfg_statetrackstop.header.id = MESSAGE_REQ_CFG_STATETRACKSTOP; >> - >> - iov.iov_base = (void *)&req_lib_cfg_statetrackstop, >> - iov.iov_len = sizeof (struct req_lib_cfg_statetrackstop), >> - >> - error = qb_to_cs_error (qb_ipcc_sendv_recv (cfg_inst->c, >> - &iov, >> - 1, >> - &res_lib_cfg_statetrackstop, >> - sizeof (struct res_lib_cfg_statetrackstop), CS_IPC_TIMEOUT_MS)); >> - >> - (void)hdb_handle_put (&cfg_hdb, cfg_handle); >> - >> - return (error == CS_OK ? res_lib_cfg_statetrackstop.header.error : error); >> -} >> - >> -cs_error_t >> corosync_cfg_kill_node ( >> corosync_cfg_handle_t cfg_handle, >> unsigned int nodeid, >> diff --git a/lib/libcfg.verso b/lib/libcfg.verso >> index 1454f6e..0062ac9 100644 >> --- a/lib/libcfg.verso >> +++ b/lib/libcfg.verso >> @@ -1 +1 @@ >> -4.0.1 >> +5.0.0 >> diff --git a/tools/corosync-cfgtool.c b/tools/corosync-cfgtool.c >> index bb6f1ed..33918a1 100644 >> --- a/tools/corosync-cfgtool.c >> +++ b/tools/corosync-cfgtool.c >> @@ -123,42 +123,6 @@ static void ringreenable_do (void) >> (void)corosync_cfg_finalize (handle); >> } >> >> -static void service_load_do (const char *service, unsigned int version) >> -{ >> - cs_error_t result; >> - corosync_cfg_handle_t handle; >> - >> - printf ("Loading service '%s' version '%d'\n", service, version); >> - result = corosync_cfg_initialize (&handle, NULL); >> - if (result != CS_OK) { >> - printf ("Could not initialize corosync configuration API error %d\n", result); >> - exit (1); >> - } >> - result = corosync_cfg_service_load (handle, service, version); >> - if (result != CS_OK) { >> - printf ("Could not load service (error = %d)\n", result); >> - } >> - (void)corosync_cfg_finalize (handle); >> -} >> - >> -static void service_unload_do (const char *service, unsigned int version) >> -{ >> - cs_error_t result; >> - corosync_cfg_handle_t handle; >> - >> - printf ("Unloading service '%s' version '%d'\n", service, version); >> - result = corosync_cfg_initialize (&handle, NULL); >> - if (result != CS_OK) { >> - printf ("Could not initialize corosync configuration API error %d\n", result); >> - exit (1); >> - } >> - result = corosync_cfg_service_unload (handle, service, version); >> - if (result != CS_OK) { >> - printf ("Could not unload service (error = %d)\n", result); >> - } >> - (void)corosync_cfg_finalize (handle); >> -} >> - >> static void shutdown_do(void) >> { >> cs_error_t result; >> @@ -265,39 +229,22 @@ static void killnode_do(unsigned int nodeid) >> >> static void usage_do (void) >> { >> - printf ("corosync-cfgtool [[-i <interface ip>] -s] [-r] [-l] [-u] [-H] [service_name] [-v] [version] [-k] [nodeid] [-a] [nodeid]\n\n"); >> + printf ("corosync-cfgtool [-i <interface ip>] -s] [-r] [-H] [service_name] [-k] [nodeid] [-a] [nodeid]\n\n"); >> printf ("A tool for displaying and configuring active parameters within corosync.\n"); >> printf ("options:\n"); >> printf ("\t-s\tDisplays the status of the current rings on this node.\n"); >> printf ("\t-r\tReset redundant ring state cluster wide after a fault to\n"); >> printf ("\t\tre-enable redundant ring operation.\n"); >> - printf ("\t-l\tLoad a service identified by name.\n"); >> - printf ("\t-u\tUnload a service identified by name.\n"); >> printf ("\t-a\tDisplay the IP address(es) of a node\n"); >> printf ("\t-c\tSet the cryptography mode of cluster communications\n"); >> printf ("\t-k\tKill a node identified by node id.\n"); >> printf ("\t-H\tShutdown corosync cleanly on this node.\n"); >> } >> >> -static char * >> -xstrdup (char const *s) >> -{ >> - char *p = strdup (s); >> - if (p) >> - return (char *) p; >> - >> - printf ("exhausted virtual memory\n"); >> - exit (1); >> -} >> - >> int main (int argc, char *argv[]) { >> - const char *options = "i:srl:u:v:k:a:c:hH"; >> + const char *options = "i:srk:a:c:hH"; >> int opt; >> - int service_load = 0; >> unsigned int nodeid; >> - int service_unload = 0; >> - char *service = NULL; >> - unsigned int version = 0; >> char interface_name[128] = ""; >> int rc=0; >> >> @@ -315,14 +262,6 @@ int main (int argc, char *argv[]) { >> case 'r': >> ringreenable_do (); >> break; >> - case 'l': >> - service_load = 1; >> - service = xstrdup (optarg); >> - break; >> - case 'u': >> - service_unload = 1; >> - service = xstrdup (optarg); >> - break; >> case 'k': >> nodeid = atoi (optarg); >> killnode_do(nodeid); >> @@ -336,21 +275,11 @@ int main (int argc, char *argv[]) { >> case 'c': >> crypto_do( atoi(optarg) ); >> break; >> - case 'v': >> - version = atoi (optarg); >> - break; >> case 'h': >> usage_do(); >> break; >> } >> } >> >> - if (service_load) { >> - service_load_do (service, version); >> - } else >> - if (service_unload) { >> - service_unload_do (service, version); >> - } >> - >> return (rc); >> } >> diff --git a/tools/corosync-quorumtool.c b/tools/corosync-quorumtool.c >> index 0f37d3e..0a21a3c 100644 >> --- a/tools/corosync-quorumtool.c >> +++ b/tools/corosync-quorumtool.c >> @@ -114,7 +114,6 @@ static votequorum_callbacks_t v_callbacks = { >> */ >> static corosync_cfg_handle_t c_handle; >> static corosync_cfg_callbacks_t c_callbacks = { >> - .corosync_cfg_state_track_callback = NULL, >> .corosync_cfg_shutdown_callback = NULL >> }; >> > > _______________________________________________ > discuss mailing list > discuss@xxxxxxxxxxxx > http://lists.corosync.org/mailman/listinfo/discuss _______________________________________________ discuss mailing list discuss@xxxxxxxxxxxx http://lists.corosync.org/mailman/listinfo/discuss