diff --git a/exec/ckpt.c b/exec/ckpt.c index 0695d0bb..73c526bd 100644 --- a/exec/ckpt.c +++ b/exec/ckpt.c @@ -1527,6 +1527,9 @@ error_exit: if (error == SA_AIS_OK) { checkpoint_cleanup = malloc (sizeof (struct checkpoint_cleanup)); if (checkpoint_cleanup == 0) { + list_del (&ckptCheckpoint->list); + list_del (&ckptCheckpointSection->list); + free (ckptCheckpointSection); free (ckptCheckpoint); error = SA_AIS_ERR_NO_MEMORY; } else { diff --git a/exec/main.c b/exec/main.c index dda570b5..a5bf927c 100644 --- a/exec/main.c +++ b/exec/main.c @@ -100,8 +100,6 @@ struct sync_callbacks sync_callbacks[5]; int sync_callback_count; -totemsrp_handle totemsrp_handle_in; - #define AIS_SERVICE_HANDLERS_COUNT 6 #define AIS_SERVICE_HANDLER_AISEXEC_FUNCTIONS_MAX 50 @@ -755,8 +753,6 @@ error_disconnect: return (res); } -extern void print_stats (totemsrp_handle totemsrp_handle); - void sigintr_handler (int signum) { @@ -775,7 +771,6 @@ void sigintr_handler (int signum) #endif totempg_finalize (); -// print_stats (totemsrp_handle_in); ais_done (AIS_DONE_EXIT); } @@ -832,7 +827,7 @@ void aisexec_sync_fns_build (void) sync_callback_count++; } } - sync_register (totemsrp_handle_in, sync_callbacks, sync_callback_count, sync_completed); + sync_register (sync_callbacks, sync_callback_count, sync_completed); } char delivery_data[MESSAGE_SIZE_MAX]; @@ -1144,7 +1139,6 @@ int main (int argc, char **argv) totempg_initialize ( aisexec_poll_handle, - &totemsrp_handle_in, &openais_config.totem_config, deliver_fn, confchg_fn); diff --git a/exec/sync.c b/exec/sync.c index 9b046b05..b70e4053 100644 --- a/exec/sync.c +++ b/exec/sync.c @@ -53,7 +53,7 @@ #include "main.h" #include "sync.h" #include "totempg.h" -#include "totemsrp.h" +#include "totempg.h" #include "print.h" #define LOG_SERVICE LOG_SERVICE_SYNC @@ -65,8 +65,6 @@ struct barrier_data { static struct memb_ring_id *sync_ring_id; -static totemsrp_handle sync_totemsrp_handle; - static struct sync_callbacks *sync_callbacks; static int sync_callback_count; @@ -123,7 +121,7 @@ static int sync_barrier_send (struct memb_ring_id *ring_id) void sync_start_init (struct memb_ring_id *ring_id) { - totemsrp_callback_token_create (sync_totemsrp_handle, + totempg_callback_token_create ( &sync_callback_token_handle, TOTEM_CALLBACK_TOKEN_SENT, 0, /* don't delete after callback */ @@ -134,13 +132,12 @@ void sync_start_init (struct memb_ring_id *ring_id) static void sync_service_init (struct memb_ring_id *ring_id) { sync_callbacks[sync_recovery_index].sync_init (); - totemsrp_callback_token_destroy (sync_totemsrp_handle, - &sync_callback_token_handle); + totempg_callback_token_destroy (&sync_callback_token_handle); /* * Create the token callback for the processing */ - totemsrp_callback_token_create (sync_totemsrp_handle, + totempg_callback_token_create ( &sync_callback_token_handle, TOTEM_CALLBACK_TOKEN_SENT, 0, /* don't delete after callback */ @@ -158,8 +155,7 @@ static int sync_start_process (enum totem_callback_token_type type, void *data) /* * Delete the token callback for the barrier */ - totemsrp_callback_token_destroy (sync_totemsrp_handle, - &sync_callback_token_handle); + totempg_callback_token_destroy (&sync_callback_token_handle); } return (0); } @@ -182,8 +178,7 @@ static int sync_service_process (enum totem_callback_token_type type, void *data * This sync is complete so activate and start next service sync */ sync_callbacks[sync_recovery_index].sync_activate (); - totemsrp_callback_token_destroy (sync_totemsrp_handle, - &sync_callback_token_handle); + totempg_callback_token_destroy (&sync_callback_token_handle); sync_recovery_index += 1; if (sync_recovery_index > sync_callback_count) { @@ -195,12 +190,10 @@ static int sync_service_process (enum totem_callback_token_type type, void *data } void sync_register ( - totemsrp_handle handle, struct sync_callbacks *callbacks, int callback_count, void (*synchronization_completed) (void)) { - sync_totemsrp_handle = handle; sync_callbacks = callbacks; sync_callback_count = callback_count; sync_synchronization_completed = synchronization_completed; @@ -221,7 +214,7 @@ void sync_confchg_fn ( sync_processing = 1; - totemsrp_callback_token_destroy (sync_totemsrp_handle, &sync_callback_token_handle); + totempg_callback_token_destroy (&sync_callback_token_handle); sync_ring_id = ring_id; diff --git a/exec/sync.h b/exec/sync.h index e4c51478..670c8199 100644 --- a/exec/sync.h +++ b/exec/sync.h @@ -46,7 +46,7 @@ struct sync_callbacks { void (*sync_abort) (void); }; -void sync_register (totemsrp_handle handle, +void sync_register ( struct sync_callbacks *callbacks, int callback_count, void (*synchronization_completed) (void)); diff --git a/exec/totemmrp.c b/exec/totemmrp.c index 46979d6d..8ec2566e 100644 --- a/exec/totemmrp.c +++ b/exec/totemmrp.c @@ -103,7 +103,6 @@ void totemmrp_confchg_fn ( */ int totemmrp_initialize ( poll_handle poll_handle, - totemsrp_handle *totemsrp_handle, struct totem_config *totem_config, void (*deliver_fn) ( @@ -129,8 +128,6 @@ int totemmrp_initialize ( totemmrp_deliver_fn, totemmrp_confchg_fn); - *totemsrp_handle = totemsrp_handle_in; - return (result); } @@ -169,7 +166,7 @@ int totemmrp_callback_token_create ( } void totemmrp_callback_token_destroy ( - void **handle_out) + void *handle_out) { totemsrp_callback_token_destroy (totemsrp_handle_in, handle_out); } diff --git a/exec/totemmrp.h b/exec/totemmrp.h index 25400096..b207d94a 100644 --- a/exec/totemmrp.h +++ b/exec/totemmrp.h @@ -59,7 +59,6 @@ void totemmrp_log_printf_init ( */ int totemmrp_initialize ( poll_handle poll_handle, - totemsrp_handle *totemsrp_handle, struct totem_config *totem_config, void (*deliver_fn) ( @@ -97,7 +96,7 @@ int totemmrp_callback_token_create ( void *data); void totemmrp_callback_token_destroy ( - void **handle_out); + void *handle_out); void totemmrp_new_msg_signal (void); diff --git a/exec/totempg.c b/exec/totempg.c index b29898d2..a92d8f55 100644 --- a/exec/totempg.c +++ b/exec/totempg.c @@ -459,7 +459,6 @@ int callback_token_received_fn (enum totem_callback_token_type type, */ int totempg_initialize ( poll_handle poll_handle, - totemsrp_handle *totemsrp_handle, struct totem_config *totem_config, void (*deliver_fn) ( @@ -489,9 +488,9 @@ int totempg_initialize ( res = totemmrp_initialize ( poll_handle, - totemsrp_handle, totem_config, - totempg_deliver_fn, totempg_confchg_fn); + totempg_deliver_fn, + totempg_confchg_fn); totemmrp_callback_token_create ( &callback_token_received_handle, @@ -682,6 +681,22 @@ int totempg_send_ok ( return (avail >= total); } +int totempg_callback_token_create ( + void **handle_out, + enum totem_callback_token_type type, + int delete, + int (*callback_fn) (enum totem_callback_token_type type, void *), + void *data) +{ + return totemmrp_callback_token_create (handle_out, type, delete, callback_fn, data); +} + +void totempg_callback_token_destroy ( + void *handle_out) +{ + totemmrp_callback_token_destroy (handle_out); +} + /* * vi: set autoindent tabstop=4 shiftwidth=4 : */ diff --git a/exec/totempg.h b/exec/totempg.h index 3832e6ca..d7313ae2 100644 --- a/exec/totempg.h +++ b/exec/totempg.h @@ -53,7 +53,6 @@ */ int totempg_initialize ( poll_handle poll_handle, - totemsrp_handle *totemsrp_handle, struct totem_config *totem_config, void (*deliver_fn) ( @@ -85,9 +84,9 @@ int totempg_mcast ( int totempg_send_ok ( int msg_size); -void totempg_token_callback_destroy (void *handle); +void totempg_callback_token_destroy (void *handle); -int totempg_token_callback_create (void **handle_out, +int totempg_callback_token_create (void **handle_out, enum totem_callback_token_type type, int delete, int (*callback_fn) (enum totem_callback_token_type type, void *),