[ovs-dev] [PATCH v4 04/28] datapath: backport: net: add dst_cache support
pravin shelar
pshelar at ovn.org
Fri Jul 8 01:38:21 UTC 2016
On Thu, Jul 7, 2016 at 6:04 PM, Jesse Gross <jesse at kernel.org> wrote:
> On Thu, Jul 7, 2016 at 5:23 PM, Pravin B Shelar <pshelar at ovn.org> wrote:
>> This backports dst-cache implementation from upstream implementation.
>>
>> commit 911362c70df5b766c243dc297fadeaced786ffd8
>> Author: Paolo Abeni <pabeni at redhat.com>
>>
>> net: add dst_cache support
>> This patch add a generic, lockless dst cache implementation.
>> The need for lock is avoided updating the dst cache fields
>> only in per cpu scope, and requiring that the cache manipulation
>> functions are invoked with the local bh disabled.
>>
>> The refresh_ts and reset_ts fields are used to ensure the cache
>> consistency in case of cuncurrent cache update (dst_cache_set*) and
>> reset operation (dst_cache_reset).
>>
>> Consider the following scenario:
>>
>> CPU1: CPU2:
>> <cache lookup with emtpy cache: it fails>
>> <get dst via uncached route lookup>
>> <related configuration changes>
>> dst_cache_reset()
>> dst_cache_set()
>>
>> The dst entry set passed to dst_cache_set() should not be used
>> for later dst cache lookup, because it's obtained using old
>> configuration values.
>>
>> Since the refresh_ts is updated only on dst_cache lookup, the
>> cached value in the above scenario will be discarded on the next
>> lookup.
>>
>> Signed-off-by: Paolo Abeni <pabeni at redhat.com>
>> Suggested-and-acked-by: Hannes Frederic Sowa <hannes at stressinduktion.org>
>> Signed-off-by: David S. Miller <davem at davemloft.net>
>>
>> Signed-off-by: Pravin B Shelar <pshelar at ovn.org>
>> Acked-by: Jesse Gross <jesse at kernel.org>
>
> I saw in the big Geneve/VXLAN backport patch that USE_UPSTREAM_TUNNEL
> becomes dependent on having the dst cache. That's fine but I couldn't
> find anywhere that prevents the reverse - continuing to use our
> version of the dst cache when we have upstream tunnels (the functions
> here look like unconditional replacements). It seems like that will
> create a problem in a couple weeks when 4.7 is released.
As discussed I am planing on doing it later when I add support for new
kernel. I can not test it without compiling it with new kernel.
More information about the dev
mailing list