Hi! On 05.07.2017 19:00, Eric Dumazet wrote: > From: Eric Dumazet <edumazet@xxxxxxxxxx> > > As discussed in Faro during Netfilter Workshop 2017, RB trees can be > used with RCU, using a seqlock. > > Note that net/rxrpc/conn_service.c is already using this. > > This patch converts inetpeer from AVL tree to RB tree, since it allows > to remove private AVL code in favor of shared RB code. > > $ size net/ipv4/inetpeer.before net/ipv4/inetpeer.after > text data bss dec hex filename > 3195 40 128 3363 d23 net/ipv4/inetpeer.before > 1562 24 0 1586 632 net/ipv4/inetpeer.after > > The same technique can be used to speed up > net/netfilter/nft_set_rbtree.c > > Signed-off-by: Eric Dumazet <edumazet@xxxxxxxxxx> > --- > > return p; > @@ -467,8 +231,9 @@ EXPORT_SYMBOL_GPL(inet_getpeer); > void inet_putpeer(struct inet_peer *p) > { > p->dtime = (__u32)jiffies; > - smp_mb__before_atomic(); > - refcount_dec(&p->refcnt); > + > + if (refcount_dec_and_test(&p->refcnt)) Missing rb_erase() here... > + call_rcu(&p->rcu, inetpeer_free_rcu); > } > EXPORT_SYMBOL_GPL(inet_putpeer); > > --Mika -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html