[ovs-dev] [PATCH 1/2] ofproto-dpif-upcall: Don't delete modified ukeys.
Jarno Rajahalme
jarno at ovn.org
Thu Jan 7 21:49:44 UTC 2016
Acked-by: Jarno Rajahalme <jarno at ovn.org>
> On Jan 7, 2016, at 11:47 AM, Joe Stringer <joe at ovn.org> wrote:
>
> If revalidation returns the result UKEY_DELETE, then both the ukey and
> its corresponding flow should be deleted. However, if revalidation
> returns UKEY_MODIFY, the ukey itself should be modified in-place and
> should not be deleted.
>
> Fix this by only applying the ukey deletion to ukeys whose datapath
> operations delete a flow.
>
> This may fix statistics accounting issues in rare cases involving
> OpenFlow rule modification where actions are updated but flows remain
> the same.
>
> Found by inspection.
>
> Signed-off-by: Joe Stringer <joe at ovn.org>
> ---
> ofproto/ofproto-dpif-upcall.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
> index d1e941a5dcfb..69a04c9a50ca 100644
> --- a/ofproto/ofproto-dpif-upcall.c
> +++ b/ofproto/ofproto-dpif-upcall.c
> @@ -2053,7 +2053,9 @@ push_ukey_ops(struct udpif *udpif, struct umap *umap,
> push_ukey_ops__(udpif, ops, n_ops);
> ovs_mutex_lock(&umap->mutex);
> for (i = 0; i < n_ops; i++) {
> - ukey_delete(umap, ops[i].ukey);
> + if (ops[i].dop.type == DPIF_OP_FLOW_DEL) {
> + ukey_delete(umap, ops[i].ukey);
> + }
> }
> ovs_mutex_unlock(&umap->mutex);
> }
> --
> 2.1.4
>
More information about the dev
mailing list