Masatake, even the patch needed some cleanup to make it compile, I've made that changes and committed into upstream git. Thanks for patch! Honza Masatake YAMATO napsal(a): > The reason why memb_state_gather_enter is invoked was printed > in integer code. This patch introduces human readable English > messages for the code. > > Signed-off-by: Masatake YAMATO <yamato@xxxxxxxxxx> > --- > exec/totemsrp.c | 88 ++++++++++++++++++++++++++++++++++++++++++++------------- > 1 file changed, 69 insertions(+), 19 deletions(-) > > diff --git a/exec/totemsrp.c b/exec/totemsrp.c > index 8c7698f..f6e31d7 100644 > --- a/exec/totemsrp.c > +++ b/exec/totemsrp.c > @@ -524,6 +524,55 @@ struct message_handlers { > int endian_conversion_needed); > }; > > +enum gather_state_from { > + TOTEMSRP_GSFROM_CONSENSUS_TIMEOUT = 0, > + TOTEMSRP_GSFROM_GATHER_MISSING1 = 1, > + TOTEMSRP_GSFROM_THE_TOKEN_WAS_LOST_IN_THE_OPERATIONAL_STATE = 2, > + TOTEMSRP_GSFROM_THE_CONSENSUS_TIMEOUT_EXPIRED = 3, > + TOTEMSRP_GSFROM_THE_TOKEN_WAS_LOST_IN_THE_COMMIT_STATE = 4, > + TOTEMSRP_GSFROM_THE_TOKEN_WAS_LOST_IN_THE_RECOVERY_STATE = 5, > + TOTEMSRP_GSFROM_FAILED_TO_RECEIVE = 6, > + TOTEMSRP_GSFROM_FOREIGN_MESSAGE_IN_OPERATIONAL_STATE = 7, > + TOTEMSRP_GSFROM_FOREIGN_MESSAGE_IN_GATHER_STATE = 8, > + TOTEMSRP_GSFROM_MERGE_DURING_OPERATIONAL_STATE = 9, > + TOTEMSRP_GSFROM_MERGE_DURING_GATHER_STATE = 10, > + TOTEMSRP_GSFROM_MERGE_DURING_JOIN = 11, > + TOTEMSRP_GSFROM_JOIN_DURING_OPERATIONAL_STATE = 12, > + TOTEMSRP_GSFROM_JOIN_DURING_COMMIT_STATE = 13, > + TOTEMSRP_GSFROM_JOIN_DURING_RECOVERY = 14, > + TOTEMSRP_GSFROM_INTERFACE_CHANGE = 15, > + TOTEMSRP_GSFROM_MAX = TOTEMSRP_GSFROM_INTERFACE_CHANGE, > +}; > + > +const char* gather_state_from_desc [] = { > + [TOTEMSRP_GSFROM_CONSENSUS_TIMEOUT] = "consensus timeout", > + [TOTEMSRP_GSFROM_GATHER_MISSING1] = "MISSING", > + [TOTEMSRP_GSFROM_THE_TOKEN_WAS_LOST_IN_THE_OPERATIONAL_STATE] = "The token was lost in the OPERATIONAL state.", > + [TOTEMSRP_GSFROM_THE_CONSENSUS_TIMEOUT_EXPIRED] = "The consensus timeout expired.", > + [TOTEMSRP_GSFROM_THE_TOKEN_WAS_LOST_IN_THE_COMMIT_STATE] = "The token was lost in the COMMIT state.", > + [TOTEMSRP_GSFROM_THE_TOKEN_WAS_LOST_IN_THE_RECOVERY_STATE] = "The token was lost in the RECOVERY state.", > + [TOTEMSRP_GSFROM_FAILED_TO_RECEIVE] = "failed to receive", > + [TOTEMSRP_GSFROM_FOREIGN_MESSAGE_IN_OPERATIONAL_STATE] = "foreign message in operational state", > + [TOTEMSRP_GSFROM_FOREIGN_MESSAGE_IN_GATHER_STATE] = "foreign message in gather state", > + [TOTEMSRP_GSFROM_MERGE_DURING_OPERATIONAL_STATE] = "merge during operational state", > + [TOTEMSRP_GSFROM_MERGE_DURING_GATHER_STATE] = "merge during gather state", > + [TOTEMSRP_GSFROM_MERGE_DURING_JOIN] = "merge during join", > + [TOTEMSRP_GSFROM_JOIN_DURING_OPERATIONAL_STATE] = "join during operational state", > + [TOTEMSRP_GSFROM_JOIN_DURING_COMMIT_STATE] = "join during commit state", > + [TOTEMSRP_GSFROM_JOIN_DURING_RECOVERY] = "join during recovery", > + [TOTEMSRP_GSFROM_INTERFACE_CHANGE] = "interface change", > +}; > + > +const char* gsfrom_to_msg(enum gather_state_from gsfrom) > +{ > + if (0 <= gsfrom && gsfrom <= TOTEMSRP_GSFROM_MAX) { > + return gather_state_from_desc[gsfrom]; > + } > + else { > + return "UNKNOWN"; > + } > +} > + > /* > * forward decls > */ > @@ -586,7 +635,7 @@ static void memb_leave_message_send (struct totemsrp_instance *instance); > static void memb_ring_id_create_or_load (struct totemsrp_instance *, struct memb_ring_id *); > > static void token_callbacks_execute (struct totemsrp_instance *instance, enum totem_callback_token_type type); > -static void memb_state_gather_enter (struct totemsrp_instance *instance, int gather_from); > +static void memb_state_gather_enter (struct totemsrp_instance *instance, gather_state_from gather_from); > static void messages_deliver_to_app (struct totemsrp_instance *instance, int skip, unsigned int end_point); > static int orf_token_mcast (struct totemsrp_instance *instance, struct orf_token *oken, > int fcc_mcasts_allowed); > @@ -1601,7 +1650,7 @@ static void memb_state_consensus_timeout_expired ( > > memb_set_merge (no_consensus_list, no_consensus_list_entries, > instance->my_failed_list, &instance->my_failed_list_entries); > - memb_state_gather_enter (instance, 0); > + memb_state_gather_enter (instance, TOTEMSRP_GSFROM_CONSENSUS_TIMEOUT); > } > } > > @@ -1623,7 +1672,7 @@ static void timer_function_pause_timeout (void *data) > static void memb_recovery_state_token_loss (struct totemsrp_instance *instance) > { > old_ring_state_restore (instance); > - memb_state_gather_enter (instance, 5); > + memb_state_gather_enter (instance, TOTEMSRP_GSFROM_THE_TOKEN_WAS_LOST_IN_THE_RECOVERY_STATE); > instance->stats.recovery_token_lost++; > } > > @@ -1638,7 +1687,7 @@ static void timer_function_orf_token_timeout (void *data) > log_printf (instance->totemsrp_log_level_notice, > "A processor failed, forming new configuration."); > totemrrp_iface_check (instance->totemrrp_context); > - memb_state_gather_enter (instance, 2); > + memb_state_gather_enter (instance, TOTEMSRP_GSFROM_THE_TOKEN_WAS_LOST_IN_THE_OPERATIONAL_STATE); > instance->stats.operational_token_lost++; > break; > > @@ -1646,14 +1695,14 @@ static void timer_function_orf_token_timeout (void *data) > log_printf (instance->totemsrp_log_level_debug, > "The consensus timeout expired."); > memb_state_consensus_timeout_expired (instance); > - memb_state_gather_enter (instance, 3); > + memb_state_gather_enter (instance, TOTEMSRP_GSFROM_THE_CONSENSUS_TIMEOUT_EXPIRED); > instance->stats.gather_token_lost++; > break; > > case MEMB_STATE_COMMIT: > log_printf (instance->totemsrp_log_level_debug, > "The token was lost in the COMMIT state."); > - memb_state_gather_enter (instance, 4); > + memb_state_gather_enter (instance, TOTEMSRP_GSFROM_THE_TOKEN_WAS_LOST_IN_THE_COMMIT_STATE); > instance->stats.commit_token_lost++; > break; > > @@ -1986,7 +2035,7 @@ static void memb_state_operational_enter (struct totemsrp_instance *instance) > > static void memb_state_gather_enter ( > struct totemsrp_instance *instance, > - int gather_from) > + gather_state_from gather_from) > { > instance->orf_token_discard = 1; > > @@ -2033,12 +2082,13 @@ static void memb_state_gather_enter ( > memb_consensus_set (instance, &instance->my_id); > > log_printf (instance->totemsrp_log_level_debug, > - "entering GATHER state from %d.", gather_from); > + "entering GATHER state from %d(%s).", > + gather_from, gsfrom_to_msg(gather_from)); > > instance->memb_state = MEMB_STATE_GATHER; > instance->stats.gather_entered++; > > - if (gather_from == 3) { > + if (TOTEMSRP_GSFROM_THE_CONSENSUS_TIMEOUT_EXPIRED == 3) { > /* > * State 3 means gather, so we are continuously gathering. > */ > @@ -3719,7 +3769,7 @@ printf ("token seq %d\n", token->seq); > instance->my_failed_list, > &instance->my_failed_list_entries); > > - memb_state_gather_enter (instance, 6); > + memb_state_gather_enter (instance, TOTEMSRP_GSFROM_FAILED_TO_RECEIVE); > } else { > instance->my_token_seq = token->token_seq; > token->token_seq += 1; > @@ -3974,7 +4024,7 @@ static int message_handler_mcast ( > memb_set_merge ( > &mcast_header.system_from, 1, > instance->my_proc_list, &instance->my_proc_list_entries); > - memb_state_gather_enter (instance, 7); > + memb_state_gather_enter (instance, TOTEMSRP_GSFROM_FOREIGN_MESSAGE_IN_OPERATIONAL_STATE); > break; > > case MEMB_STATE_GATHER: > @@ -3986,7 +4036,7 @@ static int message_handler_mcast ( > > memb_set_merge (&mcast_header.system_from, 1, > instance->my_proc_list, &instance->my_proc_list_entries); > - memb_state_gather_enter (instance, 8); > + memb_state_gather_enter (instance, TOTEMSRP_GSFROM_FOREIGN_MESSAGE_IN_GATHER_STATE); > return (0); > } > break; > @@ -4078,7 +4128,7 @@ static int message_handler_memb_merge_detect ( > case MEMB_STATE_OPERATIONAL: > memb_set_merge (&memb_merge_detect.system_from, 1, > instance->my_proc_list, &instance->my_proc_list_entries); > - memb_state_gather_enter (instance, 9); > + memb_state_gather_enter (instance, TOTEMSRP_GSFROM_MERGE_DURING_OPERATIONAL_STATE); > break; > > case MEMB_STATE_GATHER: > @@ -4090,7 +4140,7 @@ static int message_handler_memb_merge_detect ( > > memb_set_merge (&memb_merge_detect.system_from, 1, > instance->my_proc_list, &instance->my_proc_list_entries); > - memb_state_gather_enter (instance, 10); > + memb_state_gather_enter (instance, TOTEMSRP_GSFROM_MERGE_DURING_GATHER_STATE); > return (0); > } > break; > @@ -4217,7 +4267,7 @@ static void memb_join_process ( > } > } > } > - memb_state_gather_enter (instance, 11); > + memb_state_gather_enter (instance, TOTEMSRP_GSFROM_MERGE_DURING_JOIN); > gather_entered = 1; > } > > @@ -4225,7 +4275,7 @@ out: > if (gather_entered == 0 && > instance->memb_state == MEMB_STATE_OPERATIONAL) { > > - memb_state_gather_enter (instance, 12); > + memb_state_gather_enter (instance, TOTEMSRP_GSFROM_JOIN_DURING_OPERATIONAL_STATE); > } > } > > @@ -4395,7 +4445,7 @@ static int message_handler_memb_join ( > memb_join->ring_seq >= instance->my_ring_id.seq) { > > memb_join_process (instance, memb_join); > - memb_state_gather_enter (instance, 13); > + memb_state_gather_enter (instance, TOTEMSRP_GSFROM_JOIN_DURING_COMMIT_STATE); > } > break; > > @@ -4409,7 +4459,7 @@ static int message_handler_memb_join ( > > memb_join_process (instance, memb_join); > memb_recovery_state_token_loss (instance); > - memb_state_gather_enter (instance, 14); > + memb_state_gather_enter (instance, TOTEMSRP_GSFROM_JOIN_DURING_RECOVERY); > } > break; > } > @@ -4598,7 +4648,7 @@ void main_iface_change_fn ( > } > > if (instance->iface_changes >= instance->totem_config->interface_count) { > - memb_state_gather_enter (instance, 15); > + memb_state_gather_enter (instance, TOTEMSRP_GSFROM_INTERFACE_CHANGE); > } > } > > -- Linux-cluster mailing list Linux-cluster@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/linux-cluster