Skip to contentSkip to conversation

netns refcounting

DISCUSSION Denis V. Lunev 3 participants 3 messages Nov 16, 2007 1 message not in the archive

lore
Share & tools
lore
#0 lore raw

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]

#2 lore raw
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_net for 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_net can re moved away for this. Are there any holes?

That seems reasonable to remove, good catch.

#3 lore raw
In reply to a message not in the archive
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_net for 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_net can 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