diff options
| author | Herbert Xu <herbert@gondor.apana.org.au> | 2026-04-18 04:41:21 +0300 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2026-04-19 18:47:21 +0300 |
| commit | 73bd1227787bfe73eea3d04c63a89cb55db9c23e (patch) | |
| tree | 1e1c5196573a1e1cb3cab5e4fd5fc2e1c34b498f /lib | |
| parent | 3cd8b194bf3428dfa53120fee47e827a7c495815 (diff) | |
| download | linux-73bd1227787bfe73eea3d04c63a89cb55db9c23e.tar.xz | |
rhashtable: Restore insecure_elasticity toggle
Some users of rhashtable cannot handle insertion failures, and
are happy to accept the consequences of a hash table that having
very long chains.
Restore the insecure_elasticity toggle for these users. In
addition to disabling the chain length checks, this also removes
the emergency resize that would otherwise occur when the hash
table occupancy hits 100% (an async resize is still scheduled
at 75%).
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/rhashtable.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/rhashtable.c b/lib/rhashtable.c index 6074ed5f66f3..fb2b7bc137ba 100644 --- a/lib/rhashtable.c +++ b/lib/rhashtable.c @@ -538,7 +538,7 @@ static void *rhashtable_lookup_one(struct rhashtable *ht, return NULL; } - if (elasticity <= 0) + if (elasticity <= 0 && !ht->p.insecure_elasticity) return ERR_PTR(-EAGAIN); return ERR_PTR(-ENOENT); @@ -568,7 +568,8 @@ static struct bucket_table *rhashtable_insert_one( if (unlikely(rht_grow_above_max(ht, tbl))) return ERR_PTR(-E2BIG); - if (unlikely(rht_grow_above_100(ht, tbl))) + if (unlikely(rht_grow_above_100(ht, tbl)) && + !ht->p.insecure_elasticity) return ERR_PTR(-EAGAIN); head = rht_ptr(bkt, tbl, hash); |
