I pushed this change to main. On Thu, Nov 20, 2025 at 3:00 PM Mark Michelson <[email protected]> wrote: > > Thanks Ales, it looks good to me. > > Acked-by: Mark Michelson <[email protected]> > > On Thu, Nov 20, 2025 at 6:41 AM Ales Musil via dev > <[email protected]> wrote: > > > > Make sure we synchronize the logical flows for incrementally > > processed LRs only after all the logical flows were created. > > This should ensure that we don't process datapath groups multiple > > times during the sync. This significantly shortens the time needed > > to process multiple LRs at the same time. > > > > Fixes: 9ec96d0d85b6 ("northd: Add and delete logical routers in en-lflow > > engine node.") > > Reported-at: https://issues.redhat.com/browse/FDP-2682 > > Signed-off-by: Ales Musil <[email protected]> > > --- > > northd/northd.c | 18 ++++++++++++++---- > > 1 file changed, 14 insertions(+), 4 deletions(-) > > > > diff --git a/northd/northd.c b/northd/northd.c > > index e978b66c2..011f449ec 100644 > > --- a/northd/northd.c > > +++ b/northd/northd.c > > @@ -19301,8 +19301,7 @@ lflow_handle_northd_lr_changes(struct ovsdb_idl_txn > > *ovnsb_txn, > > struct hmapx_node *hmapx_node; > > HMAPX_FOR_EACH (hmapx_node, &tracked_lrs->deleted) { > > struct ovn_datapath *od = hmapx_node->data; > > - lflow_ref_unlink_lflows(od->datapath_lflows); > > - handled = lflow_ref_sync_lflows( > > + handled = lflow_ref_resync_flows( > > od->datapath_lflows, lflows, ovnsb_txn, > > lflow_input->ls_datapaths, > > lflow_input->lr_datapaths, > > lflow_input->ovn_internal_version_changed, > > @@ -19325,17 +19324,28 @@ lflow_handle_northd_lr_changes(struct > > ovsdb_idl_txn *ovnsb_txn, > > }; > > HMAPX_FOR_EACH (hmapx_node, &tracked_lrs->crupdated) { > > struct ovn_datapath *od = hmapx_node->data; > > + > > + lflow_ref_unlink_lflows(od->datapath_lflows); > > build_lswitch_and_lrouter_iterate_by_lr(od, &lsi); > > + } > > + > > + /* We need to make sure that all datapath groups are allocated before > > + * trying to sync logical flows. Otherwise, we would need to recompute > > + * those datapath groups within those flows over and over again. */ > > + HMAPX_FOR_EACH (hmapx_node, &tracked_lrs->crupdated) { > > + struct ovn_datapath *od = hmapx_node->data; > > + > > handled = lflow_ref_sync_lflows( > > od->datapath_lflows, lflows, ovnsb_txn, > > lflow_input->ls_datapaths, > > lflow_input->lr_datapaths, > > lflow_input->ovn_internal_version_changed, > > lflow_input->sbrec_logical_flow_table, > > lflow_input->sbrec_logical_dp_group_table); > > - if (!handled) { > > + if (!handled) { > > break; > > - } > > + } > > } > > + > > ds_destroy(&lsi.actions); > > ds_destroy(&lsi.match); > > return handled; > > -- > > 2.51.1 > > > > _______________________________________________ > > dev mailing list > > [email protected] > > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > >
_______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
