One thing that isn't entirely clear from the commit message and comment is
whether we believe this message, when it appears, indicates that there is a
bug somewhere. I think the intention is that the message indicates a bug,
I'm just saying this to check that I'm right.

The code change definitely fixes a potential problem and I'm in favor of it.

Thanks,

Ben.
On Jul 12, 2013 5:12 PM, "Justin Pettit" <jpet...@nicira.com> wrote:

> When deleting subfacets, subfacet_uninstall() asserts that the
> subfacet's counters are zero to make sure we don't lose counters.  We
> have seen cases where a subfacet cannot be installed, but the counters
> have values.  This should not happen, since we shouldn't create a
> subfacet if the datapath has a flow.  To prevent asserts, this commit
> zeros out the counters and logs an error, since it's possible for a
> datapath to trigger this.
>
> Bug #18460.
>
> Signed-off-by: Justin Pettit <jpet...@nicira.com>
> ---
>  ofproto/ofproto-dpif.c |   10 ++++++++++
>  1 files changed, 10 insertions(+), 0 deletions(-)
>
> diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
> index 67e6c7a..8b216e5 100644
> --- a/ofproto/ofproto-dpif.c
> +++ b/ofproto/ofproto-dpif.c
> @@ -3760,6 +3760,16 @@ handle_miss_upcalls(struct dpif_backer *backer,
> struct dpif_upcall *upcalls,
>
>              COVERAGE_INC(subfacet_install_fail);
>
> +            /* Zero-out subfacet counters when installation failed, but
> +             * datapath reported hits.  This should not happen, since if
> +             * the datapath flow exists, we should not be attempting to
> +             * create a new subfacet. */
> +            if (subfacet->dp_packet_count || subfacet->dp_byte_count) {
> +                VLOG_ERR_RL(&rl, "failed to install subfacet for which "
> +                            "datapath reported hits");
> +                subfacet->dp_packet_count = subfacet->dp_byte_count = 0;
> +            }
> +
>              subfacet->path = SF_NOT_INSTALLED;
>          }
>
> --
> 1.7.5.4
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to