[ovs-dev] [4745 2/2] ofproto: facet_execute() stats changes.
Ethan Jackson
ethan at nicira.com
Fri Mar 4 00:14:34 UTC 2011
facet_execute() should rely on facet_update_stats() to update the
relevant facet's used parameter.
Before this patch, in very rare cases, the current practice could
lead to assertion failures. The used value of a facet could be
slightly in the future due to the clocks being out of sync between
the kernel and user space. Thus manually setting the used
parameter of a facet could put it slightly behind an already pushed
used value causing an assertion failure.
Bug #4745.
---
ofproto/ofproto.c | 4 +---
1 files changed, 1 insertions(+), 3 deletions(-)
diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
index 590b792..49f99cb 100644
--- a/ofproto/ofproto.c
+++ b/ofproto/ofproto.c
@@ -2161,12 +2161,10 @@ facet_execute(struct ofproto *ofproto, struct facet *facet,
assert(ofpbuf_headroom(packet) >= sizeof(struct ofp_packet_in));
flow_extract_stats(&facet->flow, packet, &stats);
+ stats.used = time_msec();
if (execute_odp_actions(ofproto, &facet->flow,
facet->actions, facet->actions_len, packet)) {
- facet->used = time_msec();
facet_update_stats(ofproto, facet, &stats);
- netflow_flow_update_time(ofproto->netflow,
- &facet->nf_flow, facet->used);
}
}
--
1.7.4.1
More information about the dev
mailing list