[ovs-dev] knowing when a kernel flow is really deleted

Ben Pfaff blp at nicira.com
Thu Dec 15 00:23:24 UTC 2011


On Wed, Dec 14, 2011 at 04:21:21PM -0800, Ethan Jackson wrote:
> > ? ? ? ?4. Have the RCU callback for flow deletion send the Netlink
> > ? ? ? ? ? broadcast message that tells userspace that the flow is gone.
> > ? ? ? ? ? The Netlink client that sent the actual deletion request
> > ? ? ? ? ? would still get a synchronous response, but the broadcast
> > ? ? ? ? ? would be delayed until the flow was really gone. ?I think
> > ? ? ? ? ? this might be practical, but I don't know the exact
> > ? ? ? ? ? restrictions on RCU callbacks.
> 
> Assuming this is possible from the kernel's perspective, what do we do
> if the netlink broadcast is dropped for some reason? If we get an
> ENOBUFS, assume that all flows deletions have completed?  This isn't
> particularly satisfying, but is probably so rare it may not matter.

My guess is that it is probably true that all flow deletions have
completed in that case, because RCU causes all of this stuff to happen
in batches: anything queued up to be destroyed before a given grace
period gets destroyed at the same time.

Hmm, that might actually make it more difficult to deal with the
broadcasts since they'd all arrive effectively at once and you could end
up filling up the socket buffer more often than one normally expects.



More information about the dev mailing list