Eric Dumazet wrote: > Le jeudi 01 avril 2010 à 13:03 +0200, Patrick McHardy a écrit : >>> -/* allocate dsthash_ent, initialize dst, put in htable and lock it */ >>> -static struct dsthash_ent * >>> -dsthash_alloc_init(struct xt_hashlimit_htable *ht, >>> - const struct dsthash_dst *dst) >> Is there a reason for moving this function downwards in the file? >> That unnecessarily increases the diff and makes the patch harder to >> review. For review purposes I moved it back up, resulting in 42 >> lines less diff. >> -- > > Well, this is because I had to move inside this function various > initializations and these inits use user2credits() which was defined > after dsthash_alloc_init(). I thought I also tried to compile it after my change, but apparently I made some mistake :) > But we can avoid this since we hold the entry spinlock, and before hash > insertion. > > Only the lookup fields and the spinlock MUST be committed to memory > before the insert. Other fields can be initialized later by caller. > > Here is V2 of patch, I added locking as well in dl_seq_real_show() > because we call rateinfo_recalc(). htable main lock doesnt anymore > protects each entry rateinfo. > > Thanks > > [PATCH nf-next-2.6] xt_hashlimit: RCU conversion > > xt_hashlimit uses a central lock per hash table and suffers from > contention on some workloads. (Multiqueue NIC or if RPS is enabled) > > After RCU conversion, central lock is only used when a writer wants to > add or delete an entry. > > For 'readers', updating an existing entry, they use an individual lock > per entry. Applied, thanks a lot Eric. -- 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