[ovs-dev] [PATCH] ofproto: Resubmit statistics improperly account during failover.

Ben Pfaff blp at nicira.com
Tue May 3 23:30:10 UTC 2011

On Tue, May 03, 2011 at 04:24:25PM -0700, Ethan Jackson wrote:
> In some cases, when a facet's actions change because it resubmits
> into a different rule, it will account all packets it as accrued
> in the datapath to the new rule.  Due to the algorithm we are
> using, it is acceptable for a facet to miscount at most 1 second
> worth of packets in this manner.  This patch implements the proper
> behavior.
> Generally speaking, when a facet is facet_put__() into the
> datapath, the kernel returns the old flow's statistics so they may
> be accounted for in user space.  These statistics are generally
> pushed down to the relevant facet's resubmit children.  Before this
> patch, facet_put__() did not compensate for the fact that many of
> the statistics in the datapath may have been already pushed.
> Thus the entire packet count stored in the datapath would be pushed
> to its children instead of simply the packets which have accrued
> since the last accounting.  This patch fixes the behavior by
> subtracting already accounted for packets from the statistics
> returned by the datapath.

The only potential issue I see here is with logging on error paths.
If dpif_flow_put() or dpif_flow_del() returns an error then they will
zero their stats arguments, which will then almost certainly cause an
error to be logged in facet_reset_dp_stats().  That's going to be a
bit confusing, although it won't cause any actual problems.  If you
see a nice way to avoid it, though, I'd think about it.

Looks good.  Thank you.

More information about the dev mailing list