* Lai Jiangshan ([email protected]) wrote:
> Signed-off-by: Lai Jiangshan <[email protected]>
> ---
>  rculfhash.c |    8 ++------
>  1 files changed, 2 insertions(+), 6 deletions(-)
> 
> diff --git a/rculfhash.c b/rculfhash.c
> index 1c859ed..f901ded 100644
> --- a/rculfhash.c
> +++ b/rculfhash.c
> @@ -850,7 +850,7 @@ struct cds_lfht_node *_cds_lfht_add(struct cds_lfht *ht,
>                               enum add_mode mode, int dummy)
>  {
>       struct cds_lfht_node *iter_prev, *iter, *next, *new_node, *new_next,
> -                     *dummy_node, *return_node;
> +                     *return_node;
>       struct _cds_lfht_node *lookup;
>  
>       assert(!is_dummy(node));
> @@ -919,7 +919,7 @@ struct cds_lfht_node *_cds_lfht_add(struct cds_lfht *ht,
>                               return_node = NULL;
>                       else    /* ADD_DEFAULT and ADD_UNIQUE */
>                               return_node = node;
> -                     goto gc_end;
> +                     goto end;
>               }
>  
>       replace:
> @@ -941,10 +941,6 @@ struct cds_lfht_node *_cds_lfht_add(struct cds_lfht *ht,
>               (void) uatomic_cmpxchg(&iter_prev->p.next, iter, new_next);
>               /* retry */
>       }
> -gc_end:
> -     /* Garbage collect logically removed nodes in the bucket */
> -     dummy_node = (struct cds_lfht_node *) lookup;
> -     _cds_lfht_gc_bucket(dummy_node, node);

See my comment in reply to the previous patch which explains that this
gc_end is needed to deal with concurrent removals+resizes.

Thanks,

Mathieu

>  end:
>       return return_node;
>  }
> -- 
> 1.7.4.4
> 

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com

_______________________________________________
ltt-dev mailing list
[email protected]
http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev

Reply via email to