On Mon, Jun 03, 2019 at 05:18:11PM -0600, David Ahern wrote: > On 6/3/19 5:05 PM, Wei Wang wrote: > > On Mon, Jun 3, 2019 at 3:35 PM David Ahern <dsah...@gmail.com> wrote: > >> > >> On 6/3/19 3:58 PM, Wei Wang wrote: > >>> Hmm... I am still a bit concerned with the ip6_create_rt_rcu() call. > >>> If we have a blackholed nexthop, the lookup code here always tries to > >>> create an rt cache entry for every lookup. > >>> Maybe we could reuse the pcpu cache logic for this? So we only create > >>> new dst cache on the CPU if there is no cache created before. > >> > >> I'll take a look. > >> > > BTW, I am only updating ip6_pol_route to use pcpu routes for blackhole > nexthops. > > ip6_pol_route_lookup will continue as is. That function does not use > pcpu routes and will stay as is. > I have concern on calling ip6_create_rt_rcu() in general which seems to trace back to this commit dec9b0e295f6 ("net/ipv6: Add rt6_info create function for ip6_pol_route_lookup")
This rt is not tracked in pcpu_rt, rt6_uncached_list or exception bucket. In particular, how to react to NETDEV_UNREGISTER/DOWN like the rt6_uncached_list_flush_dev() does and calls dev_put()? The existing callers seem to do dst_release() immediately without caching it, but still concerning.