On Fri, Oct 18, 2024 at 4:18 PM Mark Michelson <[email protected]> wrote:
>
> Acked-by: Mark Michelson <[email protected]>

Acked-by: Numan Siddique <[email protected]>

Numan

>
> On 10/18/24 06:09, Ales Musil wrote:
> > The NB Mirror has exactly one corresponding row in SB database.
> > Use the NB UUID for the SB representation which makes the processing easier
> > and the link between the rows is obvious at first glance.
> >
> > Signed-off-by: Ales Musil <[email protected]>
> > ---
> >   northd/northd.c | 41 ++++++++++++++++-------------------------
> >   1 file changed, 16 insertions(+), 25 deletions(-)
> >
> > diff --git a/northd/northd.c b/northd/northd.c
> > index a81defe49..3b9db5b3c 100644
> > --- a/northd/northd.c
> > +++ b/northd/northd.c
> > @@ -18096,23 +18096,21 @@ mirror_needs_update(const struct nbrec_mirror 
> > *nb_mirror,
> >   }
> >
> >   static void
> > -sync_mirrors_iterate_nb_mirror(struct ovsdb_idl_txn *ovnsb_txn,
> > -                               const char *mirror_name,
> > -                               const struct nbrec_mirror *nb_mirror,
> > -                               struct shash *sb_mirrors)
> > +sync_nb_and_sb_mirror(struct ovsdb_idl_txn *ovnsb_txn,
> > +                      const char *mirror_name,
> > +                      const struct nbrec_mirror *nb_mirror,
> > +                      const struct sbrec_mirror_table *sbrec_mirror_table)
> >   {
> > -    const struct sbrec_mirror *sb_mirror;
> > -    bool new_sb_mirror = false;
> > +    const struct uuid *nb_uuid = &nb_mirror->header_.uuid;
> > +    const struct sbrec_mirror *sb_mirror =
> > +        sbrec_mirror_table_get_for_uuid(sbrec_mirror_table, nb_uuid);
> >
> > -    sb_mirror = shash_find_data(sb_mirrors, mirror_name);
> >       if (!sb_mirror) {
> > -        sb_mirror = sbrec_mirror_insert(ovnsb_txn);
> > +        sb_mirror = sbrec_mirror_insert_persist_uuid(ovnsb_txn, nb_uuid);
> >           sbrec_mirror_set_name(sb_mirror, mirror_name);
> > -        shash_add(sb_mirrors, sb_mirror->name, sb_mirror);
> > -        new_sb_mirror = true;
> >       }
> >
> > -    if (new_sb_mirror || mirror_needs_update(nb_mirror, sb_mirror)) {
> > +    if (mirror_needs_update(nb_mirror, sb_mirror)) {
> >           sbrec_mirror_set_filter(sb_mirror, nb_mirror->filter);
> >           sbrec_mirror_set_index(sb_mirror, nb_mirror->index);
> >           sbrec_mirror_set_sink(sb_mirror, nb_mirror->sink);
> > @@ -18125,26 +18123,19 @@ sync_mirrors(struct ovsdb_idl_txn *ovnsb_txn,
> >                const struct nbrec_mirror_table *nbrec_mirror_table,
> >                const struct sbrec_mirror_table *sbrec_mirror_table)
> >   {
> > -    struct shash sb_mirrors = SHASH_INITIALIZER(&sb_mirrors);
> > -
> >       const struct sbrec_mirror *sb_mirror;
> > -    SBREC_MIRROR_TABLE_FOR_EACH (sb_mirror, sbrec_mirror_table) {
> > -        shash_add(&sb_mirrors, sb_mirror->name, sb_mirror);
> > +    SBREC_MIRROR_TABLE_FOR_EACH_SAFE (sb_mirror, sbrec_mirror_table) {
> > +        if (!nbrec_mirror_table_get_for_uuid(nbrec_mirror_table,
> > +                                             &sb_mirror->header_.uuid)) {
> > +            sbrec_mirror_delete(sb_mirror);
> > +        }
> >       }
> >
> >       const struct nbrec_mirror *nb_mirror;
> >       NBREC_MIRROR_TABLE_FOR_EACH (nb_mirror, nbrec_mirror_table) {
> > -        sync_mirrors_iterate_nb_mirror(ovnsb_txn, nb_mirror->name, 
> > nb_mirror,
> > -                                       &sb_mirrors);
> > -        shash_find_and_delete(&sb_mirrors, nb_mirror->name);
> > -    }
> > -
> > -    struct shash_node *node, *next;
> > -    SHASH_FOR_EACH_SAFE (node, next, &sb_mirrors) {
> > -        sbrec_mirror_delete(node->data);
> > -        shash_delete(&sb_mirrors, node);
> > +        sync_nb_and_sb_mirror(ovnsb_txn, nb_mirror->name,
> > +                              nb_mirror, sbrec_mirror_table);
> >       }
> > -    shash_destroy(&sb_mirrors);
> >   }
> >
> >   /*
>
> _______________________________________________
> 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

Reply via email to