diff options
author | Jarek Poplawski <jarkao2@gmail.com> | 2009-07-14 08:33:08 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-07-20 07:39:25 -0700 |
commit | c3059477fce2d956a0bb3e04357324780c5d8eeb (patch) | |
tree | c08cd660873667268132d556c2b66d7f9725a173 /net/ipv4/fib_semantics.c | |
parent | 2e477c9bd2bb6a1606e498adb53ba913378ecdf2 (diff) |
ipv4: Use synchronize_rcu() during trie_rebalance()
During trie_rebalance() we free memory after resizing with call_rcu(),
but large updates, especially with PREEMPT_NONE configs, can cause
memory stresses, so this patch calls synchronize_rcu() in
tnode_free_flush() after each sync_pages to guarantee such freeing
(especially before resizing the root node).
The value of sync_pages = 128 is based on Pawel Staszewski's tests as
the lowest which doesn't hinder updating times. (For testing purposes
there was a sysfs module parameter to change it on demand, but it's
removed until we're sure it could be really useful.)
The patch is based on suggestions by: Paul E. McKenney
<paulmck@linux.vnet.ibm.com>
Reported-by: Pawel Staszewski <pstaszewski@itcare.pl>
Tested-by: Pawel Staszewski <pstaszewski@itcare.pl>
Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/fib_semantics.c')
0 files changed, 0 insertions, 0 deletions