[ovs-dev] [PATCH ovn] binding: Do not clear container lbinding->pb when parent is deleted.

Numan Siddique numans at ovn.org
Wed Jan 6 14:09:39 UTC 2021


On Wed, Jan 6, 2021 at 4:23 PM Dumitru Ceara <dceara at redhat.com> wrote:
>
> When a parent Port_Binding is deleted we shouldn't clear the children's
> 'pb' field.  Container port bindings have their own Port_Binding SB
> record so the child_lbinding->pb field should be cleared only when
> their corresponding SB record is deleted.
>
> Whithout this fix when a parent Port_Binding "remove" followed by "add"
> operations are received in the same iteration in ovn-controller,
> consider_container_lport() can be called with "pb == NULL" causing a
> crash.
>
> Fixes: 354bdba51abf ("ovn-controller: I-P for SB port binding and OVS interface in runtime_data.")
> Signed-off-by: Dumitru Ceara <dceara at redhat.com>

Thanks Dumitru for finding this issue. I applied this patch to master
and backported upto branch 20.06.

Numan

> ---
>  controller/binding.c | 3 +--
>  tests/ovn.at         | 7 +++++++
>  2 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/controller/binding.c b/controller/binding.c
> index cb60c5d..e632203 100644
> --- a/controller/binding.c
> +++ b/controller/binding.c
> @@ -958,8 +958,7 @@ release_local_binding_children(const struct sbrec_chassis *chassis_rec,
>              }
>          }
>
> -        /* Clear the local bindings' 'pb' and 'iface'. */
> -        l->pb = NULL;
> +        /* Clear the local bindings' 'iface'. */
>          l->iface = NULL;
>      }
>
> diff --git a/tests/ovn.at b/tests/ovn.at
> index 66b1d73..55dcea4 100644
> --- a/tests/ovn.at
> +++ b/tests/ovn.at
> @@ -9126,6 +9126,13 @@ OVS_WAIT_UNTIL([test xup = x$(ovn-nbctl lsp-get-up vm1)])
>  OVS_WAIT_UNTIL([test xup = x$(ovn-nbctl lsp-get-up foo1)])
>  OVS_WAIT_UNTIL([test xup = x$(ovn-nbctl lsp-get-up bar1)])
>
> +# Move VM1 to a new logical switch.
> +ovn-nbctl ls-add mgmt2
> +ovn-nbctl lsp-del vm1 -- lsp-add mgmt2 vm1
> +OVS_WAIT_UNTIL([test xup = x$(ovn-nbctl lsp-get-up vm1)])
> +OVS_WAIT_UNTIL([test xup = x$(ovn-nbctl lsp-get-up foo1)])
> +OVS_WAIT_UNTIL([test xup = x$(ovn-nbctl lsp-get-up bar1)])
> +
>  as hv1 ovs-vsctl del-port vm1
>  OVS_WAIT_UNTIL([test xdown = x$(ovn-nbctl lsp-get-up vm1)])
>  OVS_WAIT_UNTIL([test xdown = x$(ovn-nbctl lsp-get-up foo1)])
> --
> 1.8.3.1
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>


More information about the dev mailing list