Russell Bryant <russ...@ovn.org> wrote on 07/29/2016 11:27:49 AM:

> From: Russell Bryant <russ...@ovn.org>
> To: Ryan Moats/Omaha/IBM@IBMUS
> Cc: ovs dev <dev@openvswitch.org>
> Date: 07/29/2016 11:28 AM
> Subject: Re: [ovs-dev] [PATCH v2] ovn-controller: Restore ct zone
assignment.
>
> On Fri, Jul 29, 2016 at 11:59 AM, Ryan Moats <rmo...@us.ibm.com> wrote:
> "dev" <dev-boun...@openvswitch.org> wrote on 07/29/2016 10:18:49 AM:
>
> > From: Russell Bryant <russ...@ovn.org>
> > To: dev@openvswitch.org
> > Date: 07/29/2016 10:19 AM
> > Subject: [ovs-dev] [PATCH v2] ovn-controller: Restore ct zone
assignment.
> > Sent by: "dev" <dev-boun...@openvswitch.org>
> >
> > From: Babu Shanmugam <bscha...@redhat.com>
> >
> > Recent commits reorganizing bindings handling and also moving ct zone
> > assignment to ovn-controller.c caused ct zone assignment to no longer
> > work.  The code relies on an "all_lports" sset that should contain all
> > logical ports that we should be assigning ct zones for.  Prior to this
> > change, all_lports was always empty.
> >
> > Signed-off-by: Babu Shanmugam <bscha...@redhat.com>
> > Co-authored-by: Russell Bryant <russ...@ovn.org>
> > Signed-off-by: Russell Bryant <russ...@ovn.org>
> > ---
>
> <snip>
>
> > @@ -278,6 +303,14 @@ binding_run(struct controller_ctx *ctx, const
> > struct ovsrec_bridge *br_int,
> >              }
> >          }
> >          hmap_destroy(&keep_local_datapath_by_uuid);
> > +
> > +        /* Any remaining entries in removed_lports are logical ports
that
> > +         * have been deleted and should also be removed from
all_ports. */
> > +        const char *cur_id;
> > +        SSET_FOR_EACH(cur_id, &removed_lports) {
> > +            sset_find_and_delete(all_lports, cur_id);
> > +        }
> > +
> >          process_full_binding = false;
> >      } else {
> >          SBREC_PORT_BINDING_FOR_EACH_TRACKED(binding_rec, ctx->
ovnsb_idl) {
> > @@ -292,7 +325,8 @@ binding_run(struct controller_ctx *ctx, const
> > struct ovsrec_bridge *br_int,
> >                  }
> >              } else {
> >                  consider_local_datapath(ctx, chassis_rec, binding_rec,
> > -                                        local_datapaths,
&lport_to_iface);
> > +                                        local_datapaths,
&lport_to_iface,
> > +                                        all_lports);
> >              }
> >          }
> >      }
>
> A quick look at this leads me to ask about cleaning up entries
> derived from binding records that are found to be deleted during
> incremental processing?  The code leads me to believe that they
> will hang around as stale at least until the next full processing
> cycle and I don't think we want that...
> I think it's handled.  See this block.  The immediate full bindings
> refresh will get all_lports cleaned up, as well.
>
>         SBREC_PORT_BINDING_FOR_EACH_TRACKED(binding_rec, ctx->ovnsb_idl)
{
>             if (sbrec_port_binding_is_deleted(binding_rec)) {
>                 /* If a port binding was bound to this chassis and
> removed before
>                  * the ovs interface was removed, we'll catch that
> here and trigger
>                  * a full bindings refresh.  This is to see if we
> need to clear
>                  * an entry out of local_datapaths. */
>                 if (binding_rec->chassis == chassis_rec) {
>                     process_full_binding = true;
>                     poll_immediate_wake();
>                 }
>
> --
> Russell Bryant

Well, I may not entirely like it but yes, it does do it so ...

Begrudgingly-
Acked-by: Ryan Moats <rmo...@us.ibm.com>

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to