rhashtable: Add comment on choice of elasticity value
authorHerbert Xu <herbert@gondor.apana.org.au>
Tue, 24 Mar 2015 02:37:30 +0000 (13:37 +1100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 24 Mar 2015 18:57:04 +0000 (14:57 -0400)
This patch adds a comment on the choice of the value 16 as the
maximum chain length before we force a rehash.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
lib/rhashtable.c

index e96ad1a..8514f7c 100644 (file)
@@ -736,6 +736,18 @@ int rhashtable_init(struct rhashtable *ht,
 
        ht->p.min_size = max(ht->p.min_size, HASH_MIN_SIZE);
 
+       /* The maximum (not average) chain length grows with the
+        * size of the hash table, at a rate of (log N)/(log log N).
+        * The value of 16 is selected so that even if the hash
+        * table grew to 2^32 you would not expect the maximum
+        * chain length to exceed it unless we are under attack
+        * (or extremely unlucky).
+        *
+        * As this limit is only to detect attacks, we don't need
+        * to set it to a lower value as you'd need the chain
+        * length to vastly exceed 16 to have any real effect
+        * on the system.
+        */
        if (!params->insecure_elasticity)
                ht->elasticity = 16;