-int _ht_add(struct rcu_ht *ht, struct rcu_table *t, struct rcu_ht_node *node,
- int unique)
+struct rcu_ht_node *_ht_add(struct rcu_ht *ht, struct rcu_table *t,
+ struct rcu_ht_node *node, int unique)
{
struct rcu_ht_node *iter_prev, *dummy, *iter, *next;
unsigned long hash;
{
struct rcu_ht_node *iter_prev, *dummy, *iter, *next;
unsigned long hash;
&& !ht->compare_fct(node->key, node->key_len,
clear_flag(iter)->key,
clear_flag(iter)->key_len))
&& !ht->compare_fct(node->key, node->key_len,
clear_flag(iter)->key,
clear_flag(iter)->key_len))
/* Only account for identical reverse hash once */
if (iter_prev->reverse_hash != clear_flag(iter)->reverse_hash)
check_resize(ht, t, ++chain_len);
/* Only account for identical reverse hash once */
if (iter_prev->reverse_hash != clear_flag(iter)->reverse_hash)
check_resize(ht, t, ++chain_len);
/* Garbage collect logically removed nodes in the bucket */
dummy = rcu_dereference(t->tbl[hash & (t->size - 1)]);
_ht_gc_bucket(dummy, node);
/* Garbage collect logically removed nodes in the bucket */
dummy = rcu_dereference(t->tbl[hash & (t->size - 1)]);
_ht_gc_bucket(dummy, node);
(void) _ht_add(ht, t, node, 0);
}
(void) _ht_add(ht, t, node, 0);
}