There were a few cases where container ports was not removed from related ports
when the parent was deleted.
For instance, when a vif is bound to chassis 1 becomes claimed by chassis 2 and
is deleted before it's postponed on chassis 1.

Signed-off-by: Xavier Simonart <[email protected]>
---
 controller/binding.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/controller/binding.c b/controller/binding.c
index 492aef530..f749f74c9 100644
--- a/controller/binding.c
+++ b/controller/binding.c
@@ -2794,15 +2794,15 @@ handle_deleted_vif_lport(const struct 
sbrec_port_binding *pb,
          binding_lport_delete(binding_lports, b_lport);
     }
 
-    if ((lbinding && lport_type == LP_VIF) &&
-        (bound || sset_find_and_delete(b_ctx_out->postponed_ports,
-                                       pb->logical_port))) {
+    if (lbinding && lport_type == LP_VIF) {
+        sset_find_and_delete(b_ctx_out->postponed_ports, pb->logical_port);
         /* We need to release the container/virtual binding lports (if any) if
          * deleted 'pb' type is LP_VIF. */
         struct binding_lport *c_lport;
         LIST_FOR_EACH (c_lport, list_node, &lbinding->binding_lports) {
             sset_find_and_delete(b_ctx_out->postponed_ports, c_lport->name);
             remove_local_lports(c_lport->pb->logical_port, b_ctx_out);
+            remove_related_lport(c_lport->pb, b_ctx_out);
             if (!release_binding_lport(b_ctx_in->chassis_rec, c_lport,
                                        !b_ctx_in->ovnsb_idl_txn,
                                        b_ctx_out)) {
-- 
2.31.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to