Re: [ovs-dev] [PATCH ovn v2 02/18] northd: Track ovn_datapaths in northd engine track data.
On Thu, Nov 23, 2023 at 6:24 AM Dumitru Ceara wrote: > On 11/15/23 06:30, Han Zhou wrote: > > On Thu, Oct 26, 2023 at 11:14 AM wrote: > >> > >> From: Numan Siddique > >> > >> northd engine tracked data now also stores the logical switches > >> and logical routers that got updated due to the changed load balancers. > >> > >> Eg 1. For this command 'ovn-nbctl ls-lb-add sw0 lb1 -- lr-lb-add lr0 > >> lb1', northd engine tracking data will store 'sw0' and 'lr0'. > >> > >> Eg 2. If load balancer lb1 is already associated with 'sw0' and 'lr0' > >> then for this command 'ovn-nbctl set load_balancer > >> vips:10.0.0.10=20.0.0.20', northd engine tracking data will store > >> 'sw0' and 'lr0'. > >> > >> An upcoming commit will make use of this tracked data. > >> > >> Signed-off-by: Numan Siddique > >> --- > >> northd/northd.c | 34 +- > >> northd/northd.h | 12 > >> 2 files changed, 45 insertions(+), 1 deletion(-) > >> > >> diff --git a/northd/northd.c b/northd/northd.c > >> index df22a9c658..9ce1b2cb5a 100644 > >> --- a/northd/northd.c > >> +++ b/northd/northd.c > >> @@ -5146,6 +5146,8 @@ destroy_northd_data_tracked_changes(struct > > northd_data *nd) > >> struct northd_tracked_data *trk_changes = >trk_northd_changes; > >> destroy_tracked_ovn_ports(_changes->trk_ovn_ports); > >> destroy_tracked_lbs(_changes->trk_lbs); > >> +hmapx_clear(_changes->ls_with_changed_lbs.crupdated); > >> +hmapx_clear(_changes->lr_with_changed_lbs.crupdated); > >> nd->change_tracked = false; > >> } > >> > >> @@ -5158,6 +5160,8 @@ init_northd_tracked_data(struct northd_data *nd) > >> hmapx_init(_changes->trk_ovn_ports.deleted); > >> hmapx_init(_changes->trk_lbs.crupdated); > >> hmapx_init(_changes->trk_lbs.deleted); > >> +hmapx_init(_changes->ls_with_changed_lbs.crupdated); > >> +hmapx_init(_changes->lr_with_changed_lbs.crupdated); > >> } > >> > >> static void > >> @@ -5169,6 +5173,8 @@ destroy_northd_tracked_data(struct northd_data > *nd) > >> hmapx_destroy(_changes->trk_ovn_ports.deleted); > >> hmapx_destroy(_changes->trk_lbs.crupdated); > >> hmapx_destroy(_changes->trk_lbs.deleted); > >> +hmapx_destroy(_changes->ls_with_changed_lbs.crupdated); > >> +hmapx_destroy(_changes->lr_with_changed_lbs.crupdated); > >> } > >> > >> > >> @@ -5179,7 +5185,10 @@ northd_has_tracked_data(struct > northd_tracked_data > > *trk_nd_changes) > >> || !hmapx_is_empty(_nd_changes->trk_ovn_ports.updated) > >> || !hmapx_is_empty(_nd_changes->trk_ovn_ports.deleted) > >> || !hmapx_is_empty(_nd_changes->trk_lbs.crupdated) > >> -|| !hmapx_is_empty(_nd_changes->trk_lbs.deleted)); > >> +|| !hmapx_is_empty(_nd_changes->trk_lbs.deleted) > >> +|| > > !hmapx_is_empty(_nd_changes->ls_with_changed_lbs.crupdated) > >> +|| > > !hmapx_is_empty(_nd_changes->lr_with_changed_lbs.crupdated) > >> +); > >> } > >> > >> bool > >> @@ -5188,6 +5197,8 @@ northd_has_only_ports_in_tracked_data( > >> { > >> return (hmapx_is_empty(_nd_changes->trk_lbs.crupdated) > >> && hmapx_is_empty(_nd_changes->trk_lbs.deleted) > >> +&& > > hmapx_is_empty(_nd_changes->ls_with_changed_lbs.crupdated) > >> +&& > > hmapx_is_empty(_nd_changes->lr_with_changed_lbs.crupdated) > >> && (!hmapx_is_empty(_nd_changes->trk_ovn_ports.created) > >> || !hmapx_is_empty(_nd_changes->trk_ovn_ports.updated) > >> || > !hmapx_is_empty(_nd_changes->trk_ovn_ports.deleted))); > >> @@ -5828,6 +5839,9 @@ northd_handle_lb_data_changes(struct > > tracked_lb_data *trk_lb_data, > >> lb_dps->nb_ls_map) { > >> od = ls_datapaths->array[index]; > >> init_lb_for_datapath(od); > >> + > >> +/* Add the ls datapath to the northd tracked data. */ > >> +hmapx_add(_changes->ls_with_changed_lbs.crupdated, od); > >> } > >> > >> hmap_remove(lb_datapaths_map, _dps->hmap_node); > >> @@ -5909,6 +5923,9 @@ northd_handle_lb_data_changes(struct > > tracked_lb_data *trk_lb_data, > >> > >> /* Re-evaluate 'od->has_lb_vip' */ > >> init_lb_for_datapath(od); > >> + > >> +/* Add the ls datapath to the northd tracked data. */ > >> +hmapx_add(_changes->ls_with_changed_lbs.crupdated, od); > >> } > >> > >> LIST_FOR_EACH (codlb, list_node, _lb_data->crupdated_lr_lbs) { > >> @@ -5954,6 +5971,9 @@ northd_handle_lb_data_changes(struct > > tracked_lb_data *trk_lb_data, > >> > >> /* Re-evaluate 'od->has_lb_vip' */ > >> init_lb_for_datapath(od); > >> + > >> +/* Add the lr datapath to the northd tracked data. */ > >> +hmapx_add(_changes->lr_with_changed_lbs.crupdated, od); > >> } > >> > >> HMAP_FOR_EACH (clb, hmap_node, _lb_data->crupdated_lbs) { > >> @@ -5968,6 +5988,9 @@
Re: [ovs-dev] [PATCH ovn v2 02/18] northd: Track ovn_datapaths in northd engine track data.
On 11/15/23 06:30, Han Zhou wrote: > On Thu, Oct 26, 2023 at 11:14 AM wrote: >> >> From: Numan Siddique >> >> northd engine tracked data now also stores the logical switches >> and logical routers that got updated due to the changed load balancers. >> >> Eg 1. For this command 'ovn-nbctl ls-lb-add sw0 lb1 -- lr-lb-add lr0 >> lb1', northd engine tracking data will store 'sw0' and 'lr0'. >> >> Eg 2. If load balancer lb1 is already associated with 'sw0' and 'lr0' >> then for this command 'ovn-nbctl set load_balancer >> vips:10.0.0.10=20.0.0.20', northd engine tracking data will store >> 'sw0' and 'lr0'. >> >> An upcoming commit will make use of this tracked data. >> >> Signed-off-by: Numan Siddique >> --- >> northd/northd.c | 34 +- >> northd/northd.h | 12 >> 2 files changed, 45 insertions(+), 1 deletion(-) >> >> diff --git a/northd/northd.c b/northd/northd.c >> index df22a9c658..9ce1b2cb5a 100644 >> --- a/northd/northd.c >> +++ b/northd/northd.c >> @@ -5146,6 +5146,8 @@ destroy_northd_data_tracked_changes(struct > northd_data *nd) >> struct northd_tracked_data *trk_changes = >trk_northd_changes; >> destroy_tracked_ovn_ports(_changes->trk_ovn_ports); >> destroy_tracked_lbs(_changes->trk_lbs); >> +hmapx_clear(_changes->ls_with_changed_lbs.crupdated); >> +hmapx_clear(_changes->lr_with_changed_lbs.crupdated); >> nd->change_tracked = false; >> } >> >> @@ -5158,6 +5160,8 @@ init_northd_tracked_data(struct northd_data *nd) >> hmapx_init(_changes->trk_ovn_ports.deleted); >> hmapx_init(_changes->trk_lbs.crupdated); >> hmapx_init(_changes->trk_lbs.deleted); >> +hmapx_init(_changes->ls_with_changed_lbs.crupdated); >> +hmapx_init(_changes->lr_with_changed_lbs.crupdated); >> } >> >> static void >> @@ -5169,6 +5173,8 @@ destroy_northd_tracked_data(struct northd_data *nd) >> hmapx_destroy(_changes->trk_ovn_ports.deleted); >> hmapx_destroy(_changes->trk_lbs.crupdated); >> hmapx_destroy(_changes->trk_lbs.deleted); >> +hmapx_destroy(_changes->ls_with_changed_lbs.crupdated); >> +hmapx_destroy(_changes->lr_with_changed_lbs.crupdated); >> } >> >> >> @@ -5179,7 +5185,10 @@ northd_has_tracked_data(struct northd_tracked_data > *trk_nd_changes) >> || !hmapx_is_empty(_nd_changes->trk_ovn_ports.updated) >> || !hmapx_is_empty(_nd_changes->trk_ovn_ports.deleted) >> || !hmapx_is_empty(_nd_changes->trk_lbs.crupdated) >> -|| !hmapx_is_empty(_nd_changes->trk_lbs.deleted)); >> +|| !hmapx_is_empty(_nd_changes->trk_lbs.deleted) >> +|| > !hmapx_is_empty(_nd_changes->ls_with_changed_lbs.crupdated) >> +|| > !hmapx_is_empty(_nd_changes->lr_with_changed_lbs.crupdated) >> +); >> } >> >> bool >> @@ -5188,6 +5197,8 @@ northd_has_only_ports_in_tracked_data( >> { >> return (hmapx_is_empty(_nd_changes->trk_lbs.crupdated) >> && hmapx_is_empty(_nd_changes->trk_lbs.deleted) >> +&& > hmapx_is_empty(_nd_changes->ls_with_changed_lbs.crupdated) >> +&& > hmapx_is_empty(_nd_changes->lr_with_changed_lbs.crupdated) >> && (!hmapx_is_empty(_nd_changes->trk_ovn_ports.created) >> || !hmapx_is_empty(_nd_changes->trk_ovn_ports.updated) >> || !hmapx_is_empty(_nd_changes->trk_ovn_ports.deleted))); >> @@ -5828,6 +5839,9 @@ northd_handle_lb_data_changes(struct > tracked_lb_data *trk_lb_data, >> lb_dps->nb_ls_map) { >> od = ls_datapaths->array[index]; >> init_lb_for_datapath(od); >> + >> +/* Add the ls datapath to the northd tracked data. */ >> +hmapx_add(_changes->ls_with_changed_lbs.crupdated, od); >> } >> >> hmap_remove(lb_datapaths_map, _dps->hmap_node); >> @@ -5909,6 +5923,9 @@ northd_handle_lb_data_changes(struct > tracked_lb_data *trk_lb_data, >> >> /* Re-evaluate 'od->has_lb_vip' */ >> init_lb_for_datapath(od); >> + >> +/* Add the ls datapath to the northd tracked data. */ >> +hmapx_add(_changes->ls_with_changed_lbs.crupdated, od); >> } >> >> LIST_FOR_EACH (codlb, list_node, _lb_data->crupdated_lr_lbs) { >> @@ -5954,6 +5971,9 @@ northd_handle_lb_data_changes(struct > tracked_lb_data *trk_lb_data, >> >> /* Re-evaluate 'od->has_lb_vip' */ >> init_lb_for_datapath(od); >> + >> +/* Add the lr datapath to the northd tracked data. */ >> +hmapx_add(_changes->lr_with_changed_lbs.crupdated, od); >> } >> >> HMAP_FOR_EACH (clb, hmap_node, _lb_data->crupdated_lbs) { >> @@ -5968,6 +5988,9 @@ northd_handle_lb_data_changes(struct > tracked_lb_data *trk_lb_data, >> od = ls_datapaths->array[index]; >> /* Re-evaluate 'od->has_lb_vip' */ >> init_lb_for_datapath(od); >> + >> +/* Add the ls datapath to the northd tracked data. */ >> +
Re: [ovs-dev] [PATCH ovn v2 02/18] northd: Track ovn_datapaths in northd engine track data.
On Thu, Oct 26, 2023 at 11:14 AM wrote: > > From: Numan Siddique > > northd engine tracked data now also stores the logical switches > and logical routers that got updated due to the changed load balancers. > > Eg 1. For this command 'ovn-nbctl ls-lb-add sw0 lb1 -- lr-lb-add lr0 > lb1', northd engine tracking data will store 'sw0' and 'lr0'. > > Eg 2. If load balancer lb1 is already associated with 'sw0' and 'lr0' > then for this command 'ovn-nbctl set load_balancer > vips:10.0.0.10=20.0.0.20', northd engine tracking data will store > 'sw0' and 'lr0'. > > An upcoming commit will make use of this tracked data. > > Signed-off-by: Numan Siddique > --- > northd/northd.c | 34 +- > northd/northd.h | 12 > 2 files changed, 45 insertions(+), 1 deletion(-) > > diff --git a/northd/northd.c b/northd/northd.c > index df22a9c658..9ce1b2cb5a 100644 > --- a/northd/northd.c > +++ b/northd/northd.c > @@ -5146,6 +5146,8 @@ destroy_northd_data_tracked_changes(struct northd_data *nd) > struct northd_tracked_data *trk_changes = >trk_northd_changes; > destroy_tracked_ovn_ports(_changes->trk_ovn_ports); > destroy_tracked_lbs(_changes->trk_lbs); > +hmapx_clear(_changes->ls_with_changed_lbs.crupdated); > +hmapx_clear(_changes->lr_with_changed_lbs.crupdated); > nd->change_tracked = false; > } > > @@ -5158,6 +5160,8 @@ init_northd_tracked_data(struct northd_data *nd) > hmapx_init(_changes->trk_ovn_ports.deleted); > hmapx_init(_changes->trk_lbs.crupdated); > hmapx_init(_changes->trk_lbs.deleted); > +hmapx_init(_changes->ls_with_changed_lbs.crupdated); > +hmapx_init(_changes->lr_with_changed_lbs.crupdated); > } > > static void > @@ -5169,6 +5173,8 @@ destroy_northd_tracked_data(struct northd_data *nd) > hmapx_destroy(_changes->trk_ovn_ports.deleted); > hmapx_destroy(_changes->trk_lbs.crupdated); > hmapx_destroy(_changes->trk_lbs.deleted); > +hmapx_destroy(_changes->ls_with_changed_lbs.crupdated); > +hmapx_destroy(_changes->lr_with_changed_lbs.crupdated); > } > > > @@ -5179,7 +5185,10 @@ northd_has_tracked_data(struct northd_tracked_data *trk_nd_changes) > || !hmapx_is_empty(_nd_changes->trk_ovn_ports.updated) > || !hmapx_is_empty(_nd_changes->trk_ovn_ports.deleted) > || !hmapx_is_empty(_nd_changes->trk_lbs.crupdated) > -|| !hmapx_is_empty(_nd_changes->trk_lbs.deleted)); > +|| !hmapx_is_empty(_nd_changes->trk_lbs.deleted) > +|| !hmapx_is_empty(_nd_changes->ls_with_changed_lbs.crupdated) > +|| !hmapx_is_empty(_nd_changes->lr_with_changed_lbs.crupdated) > +); > } > > bool > @@ -5188,6 +5197,8 @@ northd_has_only_ports_in_tracked_data( > { > return (hmapx_is_empty(_nd_changes->trk_lbs.crupdated) > && hmapx_is_empty(_nd_changes->trk_lbs.deleted) > +&& hmapx_is_empty(_nd_changes->ls_with_changed_lbs.crupdated) > +&& hmapx_is_empty(_nd_changes->lr_with_changed_lbs.crupdated) > && (!hmapx_is_empty(_nd_changes->trk_ovn_ports.created) > || !hmapx_is_empty(_nd_changes->trk_ovn_ports.updated) > || !hmapx_is_empty(_nd_changes->trk_ovn_ports.deleted))); > @@ -5828,6 +5839,9 @@ northd_handle_lb_data_changes(struct tracked_lb_data *trk_lb_data, > lb_dps->nb_ls_map) { > od = ls_datapaths->array[index]; > init_lb_for_datapath(od); > + > +/* Add the ls datapath to the northd tracked data. */ > +hmapx_add(_changes->ls_with_changed_lbs.crupdated, od); > } > > hmap_remove(lb_datapaths_map, _dps->hmap_node); > @@ -5909,6 +5923,9 @@ northd_handle_lb_data_changes(struct tracked_lb_data *trk_lb_data, > > /* Re-evaluate 'od->has_lb_vip' */ > init_lb_for_datapath(od); > + > +/* Add the ls datapath to the northd tracked data. */ > +hmapx_add(_changes->ls_with_changed_lbs.crupdated, od); > } > > LIST_FOR_EACH (codlb, list_node, _lb_data->crupdated_lr_lbs) { > @@ -5954,6 +5971,9 @@ northd_handle_lb_data_changes(struct tracked_lb_data *trk_lb_data, > > /* Re-evaluate 'od->has_lb_vip' */ > init_lb_for_datapath(od); > + > +/* Add the lr datapath to the northd tracked data. */ > +hmapx_add(_changes->lr_with_changed_lbs.crupdated, od); > } > > HMAP_FOR_EACH (clb, hmap_node, _lb_data->crupdated_lbs) { > @@ -5968,6 +5988,9 @@ northd_handle_lb_data_changes(struct tracked_lb_data *trk_lb_data, > od = ls_datapaths->array[index]; > /* Re-evaluate 'od->has_lb_vip' */ > init_lb_for_datapath(od); > + > +/* Add the ls datapath to the northd tracked data. */ > +hmapx_add(_changes->ls_with_changed_lbs.crupdated, od); > } > > BITMAP_FOR_EACH_1 (index, ods_size(lr_datapaths), > @@ -5991,6 +6014,9 @@
[ovs-dev] [PATCH ovn v2 02/18] northd: Track ovn_datapaths in northd engine track data.
From: Numan Siddique northd engine tracked data now also stores the logical switches and logical routers that got updated due to the changed load balancers. Eg 1. For this command 'ovn-nbctl ls-lb-add sw0 lb1 -- lr-lb-add lr0 lb1', northd engine tracking data will store 'sw0' and 'lr0'. Eg 2. If load balancer lb1 is already associated with 'sw0' and 'lr0' then for this command 'ovn-nbctl set load_balancer vips:10.0.0.10=20.0.0.20', northd engine tracking data will store 'sw0' and 'lr0'. An upcoming commit will make use of this tracked data. Signed-off-by: Numan Siddique --- northd/northd.c | 34 +- northd/northd.h | 12 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/northd/northd.c b/northd/northd.c index df22a9c658..9ce1b2cb5a 100644 --- a/northd/northd.c +++ b/northd/northd.c @@ -5146,6 +5146,8 @@ destroy_northd_data_tracked_changes(struct northd_data *nd) struct northd_tracked_data *trk_changes = >trk_northd_changes; destroy_tracked_ovn_ports(_changes->trk_ovn_ports); destroy_tracked_lbs(_changes->trk_lbs); +hmapx_clear(_changes->ls_with_changed_lbs.crupdated); +hmapx_clear(_changes->lr_with_changed_lbs.crupdated); nd->change_tracked = false; } @@ -5158,6 +5160,8 @@ init_northd_tracked_data(struct northd_data *nd) hmapx_init(_changes->trk_ovn_ports.deleted); hmapx_init(_changes->trk_lbs.crupdated); hmapx_init(_changes->trk_lbs.deleted); +hmapx_init(_changes->ls_with_changed_lbs.crupdated); +hmapx_init(_changes->lr_with_changed_lbs.crupdated); } static void @@ -5169,6 +5173,8 @@ destroy_northd_tracked_data(struct northd_data *nd) hmapx_destroy(_changes->trk_ovn_ports.deleted); hmapx_destroy(_changes->trk_lbs.crupdated); hmapx_destroy(_changes->trk_lbs.deleted); +hmapx_destroy(_changes->ls_with_changed_lbs.crupdated); +hmapx_destroy(_changes->lr_with_changed_lbs.crupdated); } @@ -5179,7 +5185,10 @@ northd_has_tracked_data(struct northd_tracked_data *trk_nd_changes) || !hmapx_is_empty(_nd_changes->trk_ovn_ports.updated) || !hmapx_is_empty(_nd_changes->trk_ovn_ports.deleted) || !hmapx_is_empty(_nd_changes->trk_lbs.crupdated) -|| !hmapx_is_empty(_nd_changes->trk_lbs.deleted)); +|| !hmapx_is_empty(_nd_changes->trk_lbs.deleted) +|| !hmapx_is_empty(_nd_changes->ls_with_changed_lbs.crupdated) +|| !hmapx_is_empty(_nd_changes->lr_with_changed_lbs.crupdated) +); } bool @@ -5188,6 +5197,8 @@ northd_has_only_ports_in_tracked_data( { return (hmapx_is_empty(_nd_changes->trk_lbs.crupdated) && hmapx_is_empty(_nd_changes->trk_lbs.deleted) +&& hmapx_is_empty(_nd_changes->ls_with_changed_lbs.crupdated) +&& hmapx_is_empty(_nd_changes->lr_with_changed_lbs.crupdated) && (!hmapx_is_empty(_nd_changes->trk_ovn_ports.created) || !hmapx_is_empty(_nd_changes->trk_ovn_ports.updated) || !hmapx_is_empty(_nd_changes->trk_ovn_ports.deleted))); @@ -5828,6 +5839,9 @@ northd_handle_lb_data_changes(struct tracked_lb_data *trk_lb_data, lb_dps->nb_ls_map) { od = ls_datapaths->array[index]; init_lb_for_datapath(od); + +/* Add the ls datapath to the northd tracked data. */ +hmapx_add(_changes->ls_with_changed_lbs.crupdated, od); } hmap_remove(lb_datapaths_map, _dps->hmap_node); @@ -5909,6 +5923,9 @@ northd_handle_lb_data_changes(struct tracked_lb_data *trk_lb_data, /* Re-evaluate 'od->has_lb_vip' */ init_lb_for_datapath(od); + +/* Add the ls datapath to the northd tracked data. */ +hmapx_add(_changes->ls_with_changed_lbs.crupdated, od); } LIST_FOR_EACH (codlb, list_node, _lb_data->crupdated_lr_lbs) { @@ -5954,6 +5971,9 @@ northd_handle_lb_data_changes(struct tracked_lb_data *trk_lb_data, /* Re-evaluate 'od->has_lb_vip' */ init_lb_for_datapath(od); + +/* Add the lr datapath to the northd tracked data. */ +hmapx_add(_changes->lr_with_changed_lbs.crupdated, od); } HMAP_FOR_EACH (clb, hmap_node, _lb_data->crupdated_lbs) { @@ -5968,6 +5988,9 @@ northd_handle_lb_data_changes(struct tracked_lb_data *trk_lb_data, od = ls_datapaths->array[index]; /* Re-evaluate 'od->has_lb_vip' */ init_lb_for_datapath(od); + +/* Add the ls datapath to the northd tracked data. */ +hmapx_add(_changes->ls_with_changed_lbs.crupdated, od); } BITMAP_FOR_EACH_1 (index, ods_size(lr_datapaths), @@ -5991,6 +6014,9 @@ northd_handle_lb_data_changes(struct tracked_lb_data *trk_lb_data, add_neigh_ips_to_lrouter(od, lb->neigh_mode, >inserted_vips_v4, >inserted_vips_v6); + +