Reviewed-by: Steven Dake <sd...@redhat.com>

On 07/15/2011 09:31 AM, Jan Friesse wrote:
> Signed-off-by: Jan Friesse <jfrie...@redhat.com>
> ---
>  exec/totemrrp.c |   24 +++++++++++++++++++++++-
>  1 files changed, 23 insertions(+), 1 deletions(-)
> 
> diff --git a/exec/totemrrp.c b/exec/totemrrp.c
> index 6fb5772..eb9b788 100644
> --- a/exec/totemrrp.c
> +++ b/exec/totemrrp.c
> @@ -468,6 +468,22 @@ static void active_timer_problem_decrementer_cancel (
>  
>  #define ENDIAN_LOCAL                         0xff22
>  
> +/*
> + * Rollover handling:
> + *
> + * ARR_SEQNO_START_TOKEN is the starting sequence number of last seen 
> sequence
> + * for a token for active redundand ring.  This should remain zero, unless 
> testing
> + * overflow in which case 07fffff00 or 0xffffff00 are good starting values.
> + * It should be same as on defined in totemsrp.c
> + */
> +
> +#define ARR_SEQNO_START_TOKEN 0x0
> +
> +/*
> + * These can be used ot test different rollover points
> + * #define ARR_SEQNO_START_MSG 0xfffffe00
> + */
> +
>  struct message_header {
>       char type;
>       char encapsulated;
> @@ -1154,6 +1170,8 @@ void *active_instance_initialize (
>  
>       instance->rrp_instance = rrp_instance;
>  
> +     instance->last_token_seq = ARR_SEQNO_START_TOKEN - 1;
> +
>  error_exit:
>       return ((void *)instance);
>  }
> @@ -1342,7 +1360,7 @@ static void active_token_recv (
>       struct active_instance *active_instance = (struct active_instance 
> *)rrp_instance->rrp_algo_instance;
>  
>       active_instance->totemrrp_context = context;
> -     if (token_seq > active_instance->last_token_seq) {
> +     if (sq_lt_compare (active_instance->last_token_seq, token_seq)) {
>               memcpy (active_instance->token, msg, msg_len);
>               active_instance->token_len = msg_len;
>               for (i = 0; i < rrp_instance->interface_count; i++) {
> @@ -1353,6 +1371,10 @@ static void active_token_recv (
>               active_timer_expired_token_start (active_instance);
>       }
>  
> +     /*
> +      * This doesn't follow spec because the spec assumes we will know
> +      * when token resets occur.
> +      */
>       active_instance->last_token_seq = token_seq;
>  
>       if (token_seq == active_instance->last_token_seq) {

_______________________________________________
Openais mailing list
Openais@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to