Subject: Re: udp: break from the lookup when hitting the maximum score value

From: Eric Dumazet <[email-masked]>
Date: Fri, 23 Oct 2009 18:57:32 +0200

Lucian Adrian Grijincu a écrit :
> Before udp hashes were converted to rcu in
> 	udp: introduce struct udp_table and multiple spinlocks
> 	645ca708f936b2fbeb79e52d7823e3eb2c0905f8
> we stopped searching in list upon hitting the maximum score value (which is 
> 9).
> 
> This got removed in the conversion to rcu.
> I'm not sure whether this was intentional or it just slipped by.
> 
> As far as I understand it this does not interfere with the lockless rcu: there 
> is another score check the result will have to pass and if it doesn't have a 
> score of 9 (which will be the value of badness) we'll just restart the lookup.
> 
> Even if the node was deleted from the chain and reclaimed at a later time, if 
> at the second score test we have value 9 again, we can still return with this 
> result.
> 
> Am I missing something?
> 
> 

This was intentional.

This never happens in practice and slowdown lookups.

(To reach score 9, your UDP socket must be connected, and bound to a device)
Most developpers dont even know UDP socket can be connected...

We added large hashtables in commit f86dcc5aa8c7908f2c287e7a211228df599e3e71
(udp: dynamically size hash tables at boot time), so average chain length should
be small anyway...