Thread (22 messages) flat view 22 messages, 2 authors, 2012-02-24

Re: [PATCH 0/4] Fix routing metrics

From: David Miller <davem@davemloft.net>
Date: 2012-02-10 18:26:17

From: Steffen Klassert <steffen.klassert@secunet.com>
Date: Fri, 10 Feb 2012 09:44:25 +0100
On Fri, Feb 10, 2012 at 03:12:11AM -0500, David Miller wrote:
quoted
From: Steffen Klassert <steffen.klassert@secunet.com>
Date: Fri, 10 Feb 2012 08:51:07 +0100
quoted
On Fri, Feb 10, 2012 at 02:38:15AM -0500, David Miller wrote:
quoted
From: Steffen Klassert <steffen.klassert@secunet.com>
quoted
I fully agree with you here. But we check for the genid just in
rt_init_metrics() which is invoked only on route cache entry
creation. There is no check when the metrics are accessed,
because the metrics on the inetpeer are valid on every access.
Every routing cache entry we will use after the flush will be
a newly created one!  All the old ones will be stop being used.
Yes, I know that. All inetpeer metrics are updated once with the
first new routing cache entry that binds that inetpeer to the route.
And after a routing cache flush, that will be all routing cache
entries every used after that point.
Yes, the genid check happens once for every new routing cache entry
we recreate. After that, we'll find maching routes in the cache
and we don't do that check.
quoted
So since this happens, you don't need to check the inetpeer at every
metric access.  The fact that all routing cache entries get recreated
will do it for you.
So if rt_init_metrics() is not the right place to check for genid
changes, where would you suggest to do it?
It is the right place, and since it will happen there for every routing
cache entry we use after a flush, the inetpeer issues will be taken
care of by it.  Therefore you don't need to check anything at metrics
access time.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help