Re: [6/6]: jenkins hash for neigh
From: "David S. Miller" <davem@davemloft.net>
Date: 2004-10-03 21:55:52
From: "David S. Miller" <davem@davemloft.net>
Date: 2004-10-03 21:55:52
On Sat, 2 Oct 2004 17:50:51 +1000 Herbert Xu [off-list ref] wrote:
On Mon, Sep 27, 2004 at 11:15:20AM -0700, David S. Miller wrote:quoted
On Mon, 27 Sep 2004 21:48:33 +1000 Herbert Xu [off-list ref] wrote:quoted
quoted
- if (tbl->entries > (tbl->hash_mask + 1)) + if (tbl->entries > (tbl->hash_mask + 1)) { + write_lock_bh(&tbl->lock); neigh_hash_grow(tbl, (tbl->hash_mask + 1) << 1); + write_unlock_bh(&tbl->lock); + }The locking should be outside the if block as otherwise you may grow unnecessarily or grow into the same size :)I'm not going to do that, because then we're grabbing that lock twice on every neigh create operation and I was trying hard to avoid that overhead.Actually, why don't we just move the expansion into the locked section? Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Works for me, patch applied. Thanks Herbert.