Thanks Paulo!

Acked-by: Mark Michelson <[email protected]>

On Wed, Dec 10, 2025 at 7:28 AM Paulo Guilherme Silva via dev
<[email protected]> wrote:
>
> The run_idl_loop function is shared by ovn-northd and ovn-ic, therefore to 
> avoid
> code duplication, the function is being repositioned in lib/ovn-util.c present
> in the ovn code base.
>
> Signed-off-by: Paulo Guilherme Silva <[email protected]>
>
> ---
>  lib/ovn-util.c           | 33 +++++++++++++++++++++++++++++++++
>  lib/ovn-util.h           |  6 ++++++
>  northd/inc-proc-northd.h |  2 --
>  northd/ovn-northd.c      | 33 ---------------------------------
>  4 files changed, 39 insertions(+), 35 deletions(-)
>
> diff --git a/lib/ovn-util.c b/lib/ovn-util.c
> index cec029e42..71098d478 100644
> --- a/lib/ovn-util.c
> +++ b/lib/ovn-util.c
> @@ -73,6 +73,39 @@ void set_idl_probe_interval(struct ovsdb_idl *idl, const 
> char *remote,
>      ovsdb_idl_set_probe_interval(idl, interval);
>  }
>
> +struct ovsdb_idl_txn *
> +run_idl_loop(struct ovsdb_idl_loop *idl_loop, const char *name,
> +             uint64_t *idl_duration)
> +{
> +    unsigned long long duration, start = time_msec();
> +    unsigned int seqno = UINT_MAX;
> +    struct ovsdb_idl_txn *txn;
> +    int n = 0;
> +
> +    /* Accumulate database changes as long as there are some,
> +     * but no longer than "IDL_LOOP_MAX_DURATION_MS". */
> +    while (seqno != ovsdb_idl_get_seqno(idl_loop->idl)
> +           && time_msec() - start < IDL_LOOP_MAX_DURATION_MS) {
> +        seqno = ovsdb_idl_get_seqno(idl_loop->idl);
> +        ovsdb_idl_run(idl_loop->idl);
> +        n++;
> +    }
> +
> +    txn = ovsdb_idl_loop_run(idl_loop);
> +
> +    duration = time_msec() - start;
> +    *idl_duration = duration;
> +    /* ovsdb_idl_run() is called at least 2 times.  Once directly and
> +     * once in the ovsdb_idl_loop_run().  n > 2 means that we received
> +     * data on at least 2 subsequent calls. */
> +    if (n > 2 || duration > 100) {
> +        VLOG(duration > IDL_LOOP_MAX_DURATION_MS ? VLL_INFO : VLL_DBG,
> +             "%s IDL run: %d iterations in %lld ms", name, n + 1, duration);
> +    }
> +
> +    return txn;
> +}
> +
>  static void
>  add_ipv4_netaddr(struct lport_addresses *laddrs, ovs_be32 addr,
>                   unsigned int plen)
> diff --git a/lib/ovn-util.h b/lib/ovn-util.h
> index 1c9b62ebb..393aaeae7 100644
> --- a/lib/ovn-util.h
> +++ b/lib/ovn-util.h
> @@ -40,6 +40,8 @@
>  #define GENEVE_TUNNEL_OVERHEAD 38
>  #define VXLAN_TUNNEL_OVERHEAD 30
>
> +#define IDL_LOOP_MAX_DURATION_MS 500
> +
>  struct eth_addr;
>  struct nbrec_logical_router;
>  struct nbrec_logical_router_port;
> @@ -160,6 +162,10 @@ void ovn_conn_show(struct unixctl_conn *conn, int argc 
> OVS_UNUSED,
>  void set_idl_probe_interval(struct ovsdb_idl *idl, const char *remote,
>                              int interval);
>
> +struct ovsdb_idl_txn *run_idl_loop(struct ovsdb_idl_loop *idl_loop,
> +                                          const char *name,
> +                                          uint64_t *idl_duration);
> +
>  #define OVN_MAX_DP_KEY ((1u << 24) - 1)
>  #define OVN_MAX_DP_GLOBAL_NUM ((1u << 16) - 1)
>  #define OVN_MIN_DP_KEY_LOCAL 1
> diff --git a/northd/inc-proc-northd.h b/northd/inc-proc-northd.h
> index 0f763d8df..ab2ea3ff4 100644
> --- a/northd/inc-proc-northd.h
> +++ b/northd/inc-proc-northd.h
> @@ -6,8 +6,6 @@
>  #include "northd.h"
>  #include "ovsdb-idl.h"
>
> -#define IDL_LOOP_MAX_DURATION_MS 500
> -
>  struct northd_engine_context {
>      int64_t next_run_ms;
>      uint64_t nb_idl_duration_ms;
> diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c
> index 8f1e8b182..7d7568c6f 100644
> --- a/northd/ovn-northd.c
> +++ b/northd/ovn-northd.c
> @@ -780,39 +780,6 @@ update_ssl_config(void)
>      }
>  }
>
> -static struct ovsdb_idl_txn *
> -run_idl_loop(struct ovsdb_idl_loop *idl_loop, const char *name,
> -             uint64_t *idl_duration)
> -{
> -    unsigned long long duration, start = time_msec();
> -    unsigned int seqno = UINT_MAX;
> -    struct ovsdb_idl_txn *txn;
> -    int n = 0;
> -
> -    /* Accumulate database changes as long as there are some,
> -     * but no longer than "IDL_LOOP_MAX_DURATION_MS". */
> -    while (seqno != ovsdb_idl_get_seqno(idl_loop->idl)
> -           && time_msec() - start < IDL_LOOP_MAX_DURATION_MS) {
> -        seqno = ovsdb_idl_get_seqno(idl_loop->idl);
> -        ovsdb_idl_run(idl_loop->idl);
> -        n++;
> -    }
> -
> -    txn = ovsdb_idl_loop_run(idl_loop);
> -
> -    duration = time_msec() - start;
> -    *idl_duration = duration;
> -    /* ovsdb_idl_run() is called at least 2 times.  Once directly and
> -     * once in the ovsdb_idl_loop_run().  n > 2 means that we received
> -     * data on at least 2 subsequent calls. */
> -    if (n > 2 || duration > 100) {
> -        VLOG(duration > IDL_LOOP_MAX_DURATION_MS ? VLL_INFO : VLL_DBG,
> -             "%s IDL run: %d iterations in %lld ms", name, n + 1, duration);
> -    }
> -
> -    return txn;
> -}
> -
>  #define DEFAULT_NORTHD_TRIM_TO_MS 30000
>
>  static void
> --
> 2.34.1
>
>
> --
>
>
>
>
> _'Esta mensagem é direcionada apenas para os endereços constantes no
> cabeçalho inicial. Se você não está listado nos endereços constantes no
> cabeçalho, pedimos-lhe que desconsidere completamente o conteúdo dessa
> mensagem e cuja cópia, encaminhamento e/ou execução das ações citadas estão
> imediatamente anuladas e proibidas'._
>
>
> * **'Apesar do Magazine Luiza tomar
> todas as precauções razoáveis para assegurar que nenhum vírus esteja
> presente nesse e-mail, a empresa não poderá aceitar a responsabilidade por
> quaisquer perdas ou danos causados por esse e-mail ou por seus anexos'.*
>
>
>
> _______________________________________________
> 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