On 10/1/23 21:26, Han Zhou wrote:
> Use conditional monitor for the FDB for local datapaths.
> 
> Signed-off-by: Han Zhou <[email protected]>
> ---

Hi Han,

This change makes complete sense and I think it should be backported to
all supported stable branches:

Fixes: 6ec3b12590f9 ("MAC learning: Add a new FDB table in southbound db.")

There's however one minor issue (also reported by ovsrobot CI at
https://github.com/ovsrobot/ovn/actions/runs/6373049552).

> v2: remove the accidentally modified OVS commit id of v1.
> 
>  controller/ovn-controller.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c
> index 859d9cab917b..2ff78619a3a7 100644
> --- a/controller/ovn-controller.c
> +++ b/controller/ovn-controller.c
> @@ -211,8 +211,8 @@ update_sb_monitors(struct ovsdb_idl *ovnsb_idl,
>  {
>      /* Monitor Port_Bindings rows for local interfaces and local datapaths.
>       *
> -     * Monitor Logical_Flow, MAC_Binding, Multicast_Group, and DNS tables for
> -     * local datapaths.
> +     * Monitor Logical_Flow, MAC_Binding, FDB, Multicast_Group, and DNS 
> tables
> +     * for local datapaths.
>       *
>       * Monitor Controller_Event rows for local chassis.
>       *
> @@ -230,6 +230,7 @@ update_sb_monitors(struct ovsdb_idl *ovnsb_idl,
>      struct ovsdb_idl_condition lf = OVSDB_IDL_CONDITION_INIT(&lf);
>      struct ovsdb_idl_condition ldpg = OVSDB_IDL_CONDITION_INIT(&ldpg);
>      struct ovsdb_idl_condition mb = OVSDB_IDL_CONDITION_INIT(&mb);
> +    struct ovsdb_idl_condition fdb = OVSDB_IDL_CONDITION_INIT(&fdb);
>      struct ovsdb_idl_condition mg = OVSDB_IDL_CONDITION_INIT(&mg);
>      struct ovsdb_idl_condition dns = OVSDB_IDL_CONDITION_INIT(&dns);
>      struct ovsdb_idl_condition ce =  OVSDB_IDL_CONDITION_INIT(&ce);
> @@ -248,6 +249,7 @@ update_sb_monitors(struct ovsdb_idl *ovnsb_idl,
>          ovsdb_idl_condition_add_clause_true(&pb);
>          ovsdb_idl_condition_add_clause_true(&lf);
>          ovsdb_idl_condition_add_clause_true(&mb);
> +        ovsdb_idl_condition_add_clause_true(&fdb);
>          ovsdb_idl_condition_add_clause_true(&mg);
>          ovsdb_idl_condition_add_clause_true(&dns);
>          ovsdb_idl_condition_add_clause_true(&ce);
> @@ -337,6 +339,8 @@ update_sb_monitors(struct ovsdb_idl *ovnsb_idl,
>              sbrec_logical_flow_add_clause_logical_datapath(&lf, OVSDB_F_EQ,
>                                                             uuid);
>              sbrec_mac_binding_add_clause_datapath(&mb, OVSDB_F_EQ, uuid);
> +            sbrec_fdb_add_clause_dp_key(&fdb, OVSDB_F_EQ,
> +                                        ld->datapath->tunnel_key);
>              sbrec_multicast_group_add_clause_datapath(&mg, OVSDB_F_EQ, uuid);
>              sbrec_dns_add_clause_datapaths(&dns, OVSDB_F_INCLUDES, &uuid, 1);
>              sbrec_ip_multicast_add_clause_datapath(&ip_mcast, OVSDB_F_EQ,
> @@ -360,6 +364,7 @@ out:;
>          sb_table_set_req_mon_condition(ovnsb_idl, logical_flow, &lf),
>          sb_table_set_req_mon_condition(ovnsb_idl, logical_dp_group, &ldpg),
>          sb_table_set_req_mon_condition(ovnsb_idl, mac_binding, &mb),
> +        sb_table_set_req_mon_condition(ovnsb_idl, fdb, &fdb),
>          sb_table_set_req_mon_condition(ovnsb_idl, multicast_group, &mg),
>          sb_table_set_req_mon_condition(ovnsb_idl, dns, &dns),
>          sb_table_set_req_mon_condition(ovnsb_idl, controller_event, &ce),

We're leaking the condition at the end of the function.  We're
missing:

ovsdb_idl_condition_destroy(&fdb);

With that addressed and assuming all the OVN tests pass with
this applied:

Acked-by: Dumitru Ceara <[email protected]>

Thanks,
Dumitru

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to