[PATCH] IPV4 : Move ip route cache flush (secret_rebuild) from softirq to workqueue
authorEric Dumazet <dada1@cosmosbay.com>
Tue, 20 Nov 2007 06:43:37 +0000 (22:43 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Jan 2008 22:54:33 +0000 (14:54 -0800)
commitbeb659bd8c9f2ccc8195779383f71088f936bf6e
tree0d07cc0a6e4525720537d08e7f905245f016136a
parent42a73808ed4f30b739eb52bcbb33a02fe62ceef5
[PATCH] IPV4 : Move ip route cache flush (secret_rebuild) from softirq to workqueue

Every 600 seconds (ip_rt_secret_interval), a softirq flush of the
whole ip route cache is triggered. On loaded machines, this can starve
softirq for many seconds and can eventually crash.

This patch moves this flush to a workqueue context, using the worker
we intoduced in commit 39c90ece7565f5c47110c2fa77409d7a9478bd5b (IPV4:
Convert rt_check_expire() from softirq processing to workqueue.)

Also, immediate flushes (echo 0 >/proc/sys/net/ipv4/route/flush) are
using rt_do_flush() helper function, wich take attention to
rescheduling.

Next step will be to handle delayed flushes
("echo -1 >/proc/sys/net/ipv4/route/flush" or "ip route flush cache")

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/route.c