On Wed, Feb 03, 2016 at 12:33:01PM -0800, Jarno Rajahalme wrote: > From: Ethan Jackson <et...@nicira.com> > > There are certain use cases (such as bond rebalancing) where a > datapath flow's actions may change, while it's wildcard pattern > remains the same. Before this patch, revalidators would note the > change, delete the flow, and wait for the handlers to install an > updated version. This is inefficient, as many packets could get > punted to userspace before the new flow is finally installed. > > To improve the situation, this patch implements in place modification > of datapath flows. If the revalidators detect the only change to a > given ukey is its actions, instead of deleting it, it does a put with > the MODIFY flag set. > > This patch is a backport of commit 43b2f13 to branch-2.3. > > Signed-off-by: Ethan J. Jackson <et...@nicira.com> > Signed-off-by: Jarno Rajahalme <ja...@ovn.org>
The buffer management in modify_op_init() really bothers me. It is brittle and confusing. It has an unstated assumption that, if 'buf' is nonnull, then it contains 'key' and 'mask' and that, if 'buf' is null, then 'key' and 'mask' are elsewhere. I am not sure that this assumption is correct, because in revalidator_sweep__() the 'key' argument to modify_op_init() seems to come from a ukey whereas the 'mask' argument seems to come from an ofpbuf allocated by dpif_flow_get(). Either way, it's really weird and hard to understand and maintain. Can we do it another way? _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev