[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1343291278.2626.11188.camel@edumazet-glaptop>
Date: Thu, 26 Jul 2012 10:27:58 +0200
From: Eric Dumazet <eric.dumazet@...il.com>
To: David Miller <davem@...emloft.net>
Cc: alexander.duyck@...il.com, netdev@...r.kernel.org
Subject: Re: [PATCH 00/16] Remove the ipv4 routing cache
On Thu, 2012-07-26 at 01:18 -0700, David Miller wrote:
> From: Eric Dumazet <eric.dumazet@...il.com>
> Date: Thu, 26 Jul 2012 10:13:34 +0200
>
> > On Wed, 2012-07-25 at 17:54 -0700, David Miller wrote:
> >> @@ -1216,9 +1215,15 @@ static void rt_cache_route(struct fib_nh *nh, struct rtable *rt)
> >>
> >> prev = cmpxchg(p, orig, rt);
> >> if (prev == orig) {
> >> - dst_clone(&rt->dst);
> >> if (orig)
> >> - call_rcu_bh(&orig->dst.rcu_head, rt_release_rcu);
> >> + rt_free(orig);
> >> + } else {
> >> + /* Routes we intend to cache in the FIB nexthop have
> >> + * the DST_NOCACHE bit set. However, if we are
> >> + * unsuccessful at storing this route into the cache
> >> + * we really need to clear that bit.
> >> + */
> >> + rt->dst.flags &= ~DST_NOCACHE;
> >> }
> >> }
> >>
> >
> > Not sure why you removed the dst_clone(&rt->dst) ?
>
> Because "cached" dst objects have no reference count. When such a
> cached dst is "released", it is dst_free()'d instead of
> dst_release()'d.
>
> > If it is not needed, we might need to release a reference in the else {}
> > clause, no ?
>
> Nope. 'rt' has a reference count of one, which is for the caller, not
> for this cached location.
But isnt DST_NOCACHE intent reverted then ?
like you meant :
+ } else {
+ /* Routes we intend to cache in the FIB nexthop have
+ * the DST_NOCACHE bit unset. However, if we are
+ * unsuccessful at storing this route into the cache
+ * we really need to set that bit.
+ */
+ rt->dst.flags |= DST_NOCACHE;
}
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists