]> git.itanic.dy.fi Git - linux-stable/commit
ipv4: move route garbage collector to work queue
authorMarcelo Ricardo Leitner <mleitner@redhat.com>
Thu, 14 Aug 2014 19:44:52 +0000 (16:44 -0300)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 5 Nov 2014 20:27:46 +0000 (20:27 +0000)
commit6c383b3a565dbf07cf6665e5da535f8668479453
treeff8bf1bb8285e7d6477052d46b1fe774c7f3708d
parentd521f4ba086d707a6e861d46dff2b26db4f549b5
ipv4: move route garbage collector to work queue

Currently the route garbage collector gets called by dst_alloc() if it
have more entries than the threshold. But it's an expensive call, that
don't really need to be done by then.

Another issue with current way is that it allows running the garbage
collector with the same start parameters on multiple CPUs at once, which
is not optimal. A system may even soft lockup if the cache is big enough
as the garbage collectors will be fighting over the hash lock entries.

This patch thus moves the garbage collector to run asynchronously on a
work queue, much similar to how rt_expire_check runs.

There is one condition left that allows multiple executions, which is
handled by the next patch.

Signed-off-by: Marcelo Ricardo Leitner <mleitner@redhat.com>
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
net/ipv4/route.c