From: David Ahern <dsah...@kernel.org>
Date: Fri,  7 Dec 2018 12:24:57 -0800

> From: David Ahern <dsah...@gmail.com>
> 
> The existing garbage collection algorithm has a number of problems:
 ...
> This patch addresses these problems as follows:
> 
> 1. Use of a separate list_head to track entries that can be garbage
>    collected along with a separate counter. PERMANENT entries are not
>    added to this list.
> 
>    The gc_thresh parameters are only compared to the new counter, not the
>    total entries in the table. The forced_gc function is updated to only
>    walk this new gc_list looking for entries to evict.
> 
> 2. Entries are added to the list head at the tail and removed from the
>    front.
> 
> 3. Entries are only evicted if they were last updated more than 5 seconds
>    ago, adhering to the original intent of gc_thresh2.
> 
> 4. Forced gc is stopped once the number of gc_entries drops below
>    gc_thresh2.
> 
> 5. Since gc checks do not apply to PERMANENT entries, gc levels are skipped
>    when allocating a new neighbor for a PERMANENT entry. By extension this
>    means there are no explicit limits on the number of PERMANENT entries
>    that can be created, but this is no different than FIB entries or FDB
>    entries.
> 
> Signed-off-by: David Ahern <dsah...@gmail.com>
> ---
> v2
> - remove on_gc_list boolean in favor of !list_empty
> - fix neigh_alloc to add new entry to tail of list_head

Again, looks great, applied.

Reply via email to