netns refcounting
Hello, All!
During port of Eric's patches I have noticed an interesting thing. The patch "net: Teach the ipv4 route cache to handle multiple network namespaces" call hold_net for each IPv4 DST cache entry.
Though it is not possible to stop a namespace without stopping all the devices inside. Additionally, the device can't be unregistered if there are dst entries to it. These entries are moved to a namespace loopback and the namespace will block until these entries will gone from a loopback.
So, I do not see a necessity to have an extra atomic on this hot path, i.e. hold_net can re moved away for this. Are there any holes?
Regards,
Den
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 6 lines · Denis V. Lunev
Hello, All!
During port of Eric's patches I have noticed an interesting thing. The patch "net: Teach the ipv4 route cache to handle multiple network namespaces" call
hold_netfor each IPv4 DST cache entry.
Quoted 7 lines
Though it is not possible to stop a namespace without stopping all the devices inside. Additionally, the device can't be unregistered if there are dst entries to it. These entries are moved to a namespace loopback and the namespace will block until these entries will gone from a loopback.
So, I do not see a necessity to have an extra atomic on this hot path, i.e.
hold_netcan re moved away for this. Are there any holes?
That seems reasonable to remove, good catch.
Quoted 6 lines · Denis V. Lunev
Hello, All!
During port of Eric's patches I have noticed an interesting thing. The patch "net: Teach the ipv4 route cache to handle multiple network namespaces" call
hold_netfor each IPv4 DST cache entry.
Quoted 7 lines
Though it is not possible to stop a namespace without stopping all the devices inside. Additionally, the device can't be unregistered if there are dst entries to it. These entries are moved to a namespace loopback and the namespace will block until these entries will gone from a loopback.
So, I do not see a necessity to have an extra atomic on this hot path, i.e.
hold_netcan re moved away for this. Are there any holes?
So all hold_net is good for is to catch logic errors where people are still using a network namespace but have freed it. It is a bit like the device reference count in that regard.
The usage of the dst cache from ipv4 looked complicated enough that making some small mistake easy to have so I included the reference count for good measure.
If the movement to loopback device is sufficient to prevent us from goofing up in this area I am happy to avoid the reference count.
Eric