Hi Han Sorry for not replying earlier - I wanted to give a last chance for Dumitru or others to comment Thanks for applying the patch and all you feedback
Thanks Xavier On Thu, Aug 25, 2022 at 10:42 AM Dumitru Ceara <dce...@redhat.com> wrote: > On 8/25/22 08:35, Han Zhou wrote: > > On Mon, Aug 22, 2022 at 9:41 AM Han Zhou <hz...@ovn.org> wrote: > >> > >> > >> > >> On Fri, Aug 19, 2022 at 8:40 AM Xavier Simonart <xsimo...@redhat.com> > > wrote: > >>> > >>> When VIF ports are claimed on a chassis, SBDB Port_Binding table is > > updated. > >>> If the SBDB IDL is still is read-only ("in transaction") when such a > > update > >>> is required, the update is not possible and recompute is triggered > > through > >>> I+P failure. > >>> > >>> This situation can happen: > >>> - after updating Port_Binding->chassis to SBDB for one port, in a > > following > >>> iteration, ovn-controller handles > Interface:external_ids:ovn-installed > >>> (for the same port) while SBDB is still read-only. > >>> - after updating Port_Binding->chassis to SBDB for one port, in a > > following > >>> iteration, ovn-controller updates Port_Binding->chassis for another > > port, > >>> while SBDB is still read-only. > >>> > >>> This patch prevent the recompute, by having the if-status module > >>> updating the Port_Binding chassis (if needed) when possible. > >>> This does not delay Port_Binding chassis update compared to before this > > patch. > >>> - With the patch, Port_Binding chassis will be updated as soon as SBDB > > is > >>> again writable, without recompute. > >>> - Without the patch, Port_Binding chassis was updated as soon as SBDB > > was > >>> again writable, through a recompute. > >>> > >>> As part of this patch, ovn-installed will not be updated for additional > > chassis; > >>> it will only be updated when the migration is completed. > >>> > >>> Note that this patch also fixes an issue where port was not always > > properly > >>> reported up for virtual ports (causing flaky failures in "virtual > ports" > >>> test case). > >>> > >>> Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2059253 > >>> Signed-off-by: Xavier Simonart <xsimo...@redhat.com> > >>> > >>> --- > >>> v2: - handled Dumitru's comments. > >>> - handled Han's comments, mainly ensure we moved out of CLAIMED > > state > >>> only after updating pb->chassis to guarentee physical flows are > > installed > >>> when ovn-installed is updated in OVS. > >>> - slighly reorganize the code to isolate 'notify_up = false' cases > > in > >>> claim_port (i.e. ports such as virtual ports), in the idea of > > making > >>> future patch preventing recomputes when virtual ports are > > claimed. > >>> - updated test case to cause more race conditions. > >>> - rebased on origin/main > >>> - note that "additional chassis" as now supported by > >>> "Support LSP:options:requested-chassis as a list" might still > > cause > >>> recomputes. > >>> - fixed missing flows when Port_Binding chassis was updated by > > mgr_update > >>> w/o any lflow recalculation. > >>> v3: - handled Dumitru's comments on v2, mainly have runtime_data > > handler > >>> handling pb_claims when sb becomes writable (instead of a lflow > > handler). > >>> - fixed test as it was not checking recomputes on all hv, as well > > as a flaky > >>> v4: - handled Han's comments, mainly update pb->chassis until it's > > confirmed. > >>> - updated doc to reflect that pb->chassis update can happen at any > > state, and > >>> the CLAIMED state is only for the initial attempt. > >> > >> Thanks Xavier. All looks good to me except that it seems you updated the > > diagram but forgot to update the description, I have the below small > > incremental change, and if you are ok, I can merge it without the need > for > > v6: > >> > >> diff --git a/controller/if-status.c b/controller/if-status.c > >> index 2590ec27f..d1c14ac30 100644 > >> --- a/controller/if-status.c > >> +++ b/controller/if-status.c > >> @@ -54,11 +54,12 @@ VLOG_DEFINE_THIS_MODULE(if_status); > >> */ > >> > >> enum if_state { > >> - OIF_CLAIMED, /* Newly claimed interface. pb->chassis not yet > > updated. > >> - */ > >> - OIF_INSTALL_FLOWS, /* Claimed interface with pb->chassis > successfully > >> - * updated in SB and for which flows are still > > being > >> - * installed. > >> + OIF_CLAIMED, /* Newly claimed interface. pb->chassis update > > not yet > >> + initiated. */ > >> + OIF_INSTALL_FLOWS, /* Claimed interface with pb->chassis update > sent > > to > >> + * SB (but update notification not confirmed, so > > the > >> + * update may be resent in any of the following > > states) > >> + * and for which flows are still being > installed. > >> */ > >> OIF_MARK_UP, /* Interface with flows successfully installed > in > > OVS > >> * but not yet marked "up" in the binding module > > (in > >> > >> Thanks, > >> Han > > > > I heard no objection to the above and this is really minor, so applied it > > to main. Thanks Xavier! > > Thanks Xavier and Han! I'm glad to see the if-status/ovn-installed code > getting in better shape. > > > (Just realized after pushing, Dumitru had Acked one of the previous > > versions but I forgot to add his name. I apologize!) > > No problem whatsoever. :) > > Regards, > Dumitru > > _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev