From: Michal Kubecek <mkube...@suse.cz> Date: Tue, 8 Mar 2016 14:44:15 +0100 (CET)
> Commit 2ac3ac8f86f2 ("ipv6: prevent fib6_run_gc() contention") reduced > the risk of contention on FIB6 garbage collector lock on systems with > many CPUs. However, one of our customers can still observe heavy > contention on fib6_gc_lock which can even trigger the soft lockup > detector. > > This is caused by garbage collector running in forced mode from a timer. > While there is one timer per network namespace, the instances of > fib6_run_gc() running from them are protected by one global spinlock so > that only one garbage collector can run at any moment and other > namespaces have to wait. As most relevant data structures are separated > per netns, there is little reason for garbage collectors blocking each > other. > > Similar problem exists for walkers: changes in one tree do not need to > adjust (and block) walkers traversing FIB trees in other namespaces. > > This series separates both the walkers infrastructure and garbage > collector so that they work independently in network namespaces. > > v2: get rid of ifdef in ipv6_route_seq_setup_walk(), pass net from > callers instead Series applied, thanks.