On 8/4/25 10:22 PM, Jacob Tanenbaum wrote: > en_northd engine nodes provides the created or updated logical routers > in its tracked data and en_lr_stateful node handles those changes. > > This is built on Mark Michelson's patch series located here > > https://patchwork.ozlabs.org/project/ovn/list/?series=465828 > > this is required because the datapath refactor was required in order to > accomplish incremental processing of the logical routers > > also built with the first two patches of this series by Lorenzo Bianconi > located https://patchwork.ozlabs.org/project/ovn/list/?series=466579. > He brought in some changes required to dynamically allocate the sizes of > the datapaths array. > > Reported-by: Dumitru Ceara <dce...@redhat.com> > Reported-at: https://issues.redhat.com/browse/FDP-757 > Signed-off-by: Jacob Tanenbaum <jtane...@redhat.com> >
Hi Jacob, Thanks for the patch! I know you're working to rebase it but in the meantime I had a peek at this version of the series too. > diff --git a/northd/en-lr-stateful.c b/northd/en-lr-stateful.c > index 3b1dec0b1..872f29106 100644 > --- a/northd/en-lr-stateful.c > +++ b/northd/en-lr-stateful.c > @@ -132,14 +132,23 @@ en_lr_stateful_run(struct engine_node *node, void > *data_) > } > > enum engine_input_handler_result > -lr_stateful_northd_handler(struct engine_node *node, void *data OVS_UNUSED) > +lr_stateful_northd_handler(struct engine_node *node, void *data_ ) > { > struct northd_data *northd_data = engine_get_input_data("northd", node); > if (!northd_has_tracked_data(&northd_data->trk_data)) { > return EN_UNHANDLED; > } > if (northd_has_lr_new_in_tracked_data(&northd_data->trk_data)) { > - return EN_UNHANDLED; > + struct lr_stateful_input input_data = > lr_stateful_get_input_data(node); > + struct ed_type_lr_stateful *data = data_; > + > + struct lr_stateful_table *table = &data->table; > + const struct ovn_datapaths *lr_datapaths = input_data.lr_datapaths; > + > + table->array = xrealloc(table->array, > + ods_size(lr_datapaths) * sizeof *table->array); > + This just leaves the last part of the table->array unitialized. I'm not sure I understand how this is supposed to work. I'd expect calls to lr_stateful_record_create() for each of the new routers. > + return EN_HANDLED_UPDATED; > } > > /* This node uses the below data from the en_northd engine node. > @@ -147,7 +156,7 @@ lr_stateful_northd_handler(struct engine_node *node, void > *data OVS_UNUSED) > * 1. northd_data->lr_datapaths > * This data gets updated when a logical router is created or > deleted. > * northd engine node presently falls back to full recompute when > - * this happens and so does this node. > + * a router is deleted and so does this node. > * Note: When we add I-P to the created/deleted logical routers, we > * need to revisit this handler. > * > diff --git a/tests/ovn-northd.at b/tests/ovn-northd.at > index ff00bedf1..18ac13a92 100644 > --- a/tests/ovn-northd.at > +++ b/tests/ovn-northd.at > @@ -12598,7 +12598,7 @@ check as northd ovn-appctl -t ovn-northd > inc-engine/clear-stats > check ovn-nbctl --wait=sb lr-add lr0 > check_engine_stats northd norecompute compute > check_engine_stats lr_nat norecompute compute > -check_engine_stats lr_stateful recompute nocompute > +check_engine_stats lr_stateful norecompute compute > check_engine_stats sync_to_sb_pb recompute nocompute > check_engine_stats sync_to_sb_lb norecompute compute > check_engine_stats lflow recompute nocompute Regards, Dumitru _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev