[ovs-git] [ovn-org/ovn] 8242db: ovn-controller: Fix I-P for SB Port_Binding and OV...
noreply at github.com
Wed Jun 10 18:00:48 UTC 2020
Author: Dumitru Ceara <dceara at redhat.com>
Date: 2020-06-10 (Wed, 10 Jun 2020)
ovn-controller: Fix I-P for SB Port_Binding and OVS Interface.
The commit that introduced incremental processing for Port_Binding and
OVS Interface in the I-P runtime_data node covered most cases but two
1. If a Port_Binding was already claimed by the local hypervisor when
ovn-controller starts, binding_handle_port_binding_changes doesn't
correctly set the "changed" variable causing en_runtime_data node to
go to EN_VALID instead of EN_UPDATED. Due to this update_sb_monitors()
is skipped in that run and ovn-controller does not register for
updates regarding the datapath containing the Port_Binding.
2. If a Port_Binding was already claimed by the local hypervisor when
ovn-controller starts, but the underlying OVS interface was removed in
the meantime, handle_updated_vif_lport() would fail the assertion that a
local_binding should exist in memory.
To address the first issue, we now explicitly track changes to the binding
context local_lport and local_lport_ids sets. If these change during
incremental processing of the runtime_data OVS_Interface and
SB_Port_Binding input nodes then the runtime_data node should change
state to EN_UPDATED.
For the second issue, we now allow the case when a stale port_binding is
Also, added an explicit non_vif_ports_changed variable to
binding_ctx_out to track if other types of Port_Bindings
have been changed in the current run. This kind of update should also
cause runtime_data to move to EN_UPDATED such that update_sb_monitors()
The commit also adds two test cases to cover the above scenarios and
changes the way unit tests attach hypervisors in such way that a unit
test can first configure br-int interfaces, even if ovn-controller
hasn't started yet.
CC: Numan Siddique <numans at ovn.org>
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>
Signed-off-by: Numan Siddique <numans at ovn.org>
(cherry-picked from master commit b6b3823d467941d65cb2f9e28d5572566bb87540)
More information about the git