+ iter_prev = rcu_dereference(t->tbl[node->hash & (t->size - 1)]);
+ /* We can always skip the dummy node initially */
+ iter = rcu_dereference(iter_prev->next);
+ assert(iter_prev->reverse_hash <= node->reverse_hash);
+ for (;;) {
+ if (unlikely(!iter))
+ goto insert;
+ if (clear_flag(iter)->reverse_hash > node->reverse_hash)
+ goto insert;
+ next = rcu_dereference(clear_flag(iter)->next);
+ if (is_removed(next))
+ goto gc;
+ /* Only account for identical reverse hash once */
+ if (iter_prev->reverse_hash != clear_flag(iter)->reverse_hash)
+ check_resize(ht, t, ++chain_len);
+ iter_prev = clear_flag(iter);
+ iter = next;
+ }
+ insert:
+ assert(node != clear_flag(iter));
+ assert(!is_removed(iter_prev));