[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