• Marcelo Ricardo Leitner's avatar
    ipv4: move route garbage collector to work queue · 6c383b3a
    Marcelo Ricardo Leitner authored
    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: default avatarMarcelo Ricardo Leitner <mleitner@redhat.com>
    Acked-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
    6c383b3a
route.c 86.7 KB