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

Jesse Gross jesse at nicira.com
Thu Dec 15 02:39:18 UTC 2011


On Wed, Dec 14, 2011 at 4:23 PM, Ben Pfaff <blp at nicira.com> wrote:
> 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.

I think that's mostly true but not completely reliable.  If you delete
multiple flows it's possible for a grace period to end in between
them, in which case what you saw as a single set of flow deletions
would be broken into multiple baches.



More information about the dev mailing list