The commit is pushed to "branch-rh7-3.10.0-1160.114.2.vz7.222.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh7-3.10.0-1160.114.2.vz7.222.1 ------> commit bfbb42a6e0b98b59d0c36435e8fe33001c8dae02 Author: Alexander Atanasov <alexander.atana...@virtuozzo.com> Date: Thu Jun 6 14:50:51 2024 +0300
neighbour: restore hashtable size limit With counters fro neigh entries per VE introduced in https://virtuozzo.atlassian.net/browse/PSBM-87155 tbl->entries, which served as limit of hashtable size, become unlimited, so the table can grow very large. Table is allocated via __get_free_pages which allocates continuous regions of phys mem and large order allocations are very likely to fail - which was observed in the issue. To address this limit the allocation order to 5. Fixes: 019712d0d37d (ve/net/neighbour: per-ct limit for neighbour entries) https://virtuozzo.atlassian.net/browse/PSBM-153199 Signed-off-by: Alexander Atanasov <alexander.atana...@virtuozzo.com> --- net/core/neighbour.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/net/core/neighbour.c b/net/core/neighbour.c index 9e53bb3d1c81..f622e5298019 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c @@ -641,8 +641,16 @@ struct neighbour *__neigh_create(struct neigh_table *tbl, const void *pkey, nht = rcu_dereference_protected(tbl->nht, lockdep_is_held(&tbl->lock)); - if (atomic_read(&tbl->entries) > (1 << nht->hash_shift)) + /* Since entries can grow unlimited we limit the size of the hash table + * here. __get_free_pages allocates continuous regions of phys mem + * and orders above 10 are very hard to satisfy. + * We limit the size to 5 as it is the middle ground. + */ + #define NEIGH_HASH_SHIFT_MAX 5 + if (nht->hash_shift < NEIGH_HASH_SHIFT_MAX && + atomic_read(&tbl->entries) > (1 << nht->hash_shift)) nht = neigh_hash_grow(tbl, nht->hash_shift + 1); + #undef NEIGH_HASH_SHIFT_MAX hash_val = tbl->hash(pkey, dev, nht->hash_rnd) >> (32 - nht->hash_shift); _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel