On 8/9/23 20:01, Mark Michelson wrote:
> Thanks Mohammad and Ales. I have pushed the change to main and all
> branches back to 22.03.
> 

Hi Mark, Mohammad,

It seems this change broke 22.03:

https://github.com/ovn-org/ovn/actions/runs/5812479357

> On 8/3/23 04:46, Ales Musil wrote:
>> On Mon, Jul 31, 2023 at 7:18 PM Mohammad Heib <mh...@redhat.com> wrote:
>>
>>> Currently when ovs interface ofport is updated
>>> after setting external_ids:iface_id, the ovn-controller
>>> will see this change but will not do much if it handles
>>> this change incrementally.
>>>
>>> This behavior leads to a mismatch between the ovs openflow
>>> flows in table=0 (inaccurate in_port) and the ofport number
>>> that the packet was received at which will lead to packets
>>> drop in table=0.
>>>
>>> This patch will resolve the above issue by triggering
>>> flows recompute during the I-P processing only if the
>>> affected port are associated with lport and has flows
>>> that need to be updated.
>>>
>>> Reported-at: https://issues.redhat.com/browse/FD-3063
>>> Signed-off-by: Mohammad Heib <mh...@redhat.com>
>>> ---
>>>   controller/binding.c    | 15 ++++++++++++++
>>>   tests/ovn-controller.at | 45 +++++++++++++++++++++++++++++++++++++++++
>>>   2 files changed, 60 insertions(+)
>>>
>>> diff --git a/controller/binding.c b/controller/binding.c
>>> index 9aa3fc6c4..cc4c2b0bb 100644
>>> --- a/controller/binding.c
>>> +++ b/controller/binding.c
>>> @@ -2360,6 +2360,21 @@ consider_iface_claim(const struct
>>> ovsrec_interface
>>> *iface_rec,
>>>       /* Get the (updated) b_lport again for the lbinding. */
>>>       b_lport = local_binding_get_primary_lport(lbinding);
>>>
>>> +    /*
>>> +     * Update the tracked_dp_bindings whenever an ofport
>>> +     * on a specific ovs port changes.
>>> +     * This update will trigger flow recomputation during
>>> +     * the incremental processing run which updates the local
>>> +     * flows in_port filed.
>>> +     */
>>> +    if (b_lport && ovsrec_interface_is_updated(iface_rec,
>>> +                                    OVSREC_INTERFACE_COL_OFPORT)) {
>>> +        tracked_datapath_lport_add(b_lport->pb,
>>> TRACKED_RESOURCE_UPDATED,

This part triggers the ct_zones_runtime_data_handler() I-P handler to be
called.  But on 22.03 this aborts on TRACKED_RESOURCE_UPDATED:

https://github.com/ovn-org/ovn/blob/915c556f0c50e81b1dbc05a68d754cf4cb7d4551/controller/ovn-controller.c#L2154

Do you maybe have some time to look into this?  Or should we just revert
the backport on 22.03?  I don't think ofport updates are common.

Thanks,
Dumitru

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to