Hi Mark,

On 6/9/25 7:35 PM, Mark Michelson via dev wrote:
> NOTE: This series is built on top of the datapath binding refactor and
> port binding refactor patches. You're likely to see tests failing on
> these patches if those series are not merged already.
> 

It seems the logical flow sync refactor (this series) doesn't even apply
cleanly on top of main without the datapath binding and port binding
refactor.

https://mail.openvswitch.org/pipermail/ovs-build/2025-June/046904.html

Should we defer it until the binding refactor lands?

> This series refactors how logical flows are synced, accomplishing two
> main goals:
> 
> 1) Syncing of logical flows to the southbound database is handled in a
> new node, rather than in en-lflow. This allows for syncing of logical
> flow tables from en-lflow and other nodes.
> 
> 2) The libraries for building logical flow tables and for syncing
> logical flows no longer relies on ovn-northd constructs such as
> ovn_datapath.
> 
> This series accomplishes the above goals through a series of smaller
> patches rather than a single giant patch like other refactoring series.
> 
> Overall, this series gets the job done, but there are a few things I'm
> not especially happy about:
> 
> 1) The goal of the new en-lflow-sync node is to be able to sync logical
> flows from multiple logical flow tables. However, in current OVN, the
> only logical flow table is the one created by en-lflow. Therefore, while
> the code *should* be able to handle multiple logical flow tables, it's
> not proven with this code change.
> 
> 2) I'm not happy about the non-constness of the inputs to the
> en-lflow-sync node. In particular,
>   * lflow_refs are created/destroyed in various nodes, then all are
>     populated in en-lflow, and then all are synced in en-lflow-sync.
>     This means that en-lflow and en-lflow-sync are modifying lflow_refs
>     beyond the node that manages their lifetimes.
>   * struct ovn_lflow has a datapath group field (dpg) that is modified
>     in en-lflow-sync.
> 
> There are ways to fix (2), but to do so in a performant way would be
> outside the scope of simply trying to refactor when/how logical flows
> are synced.
> 
> Mark Michelson (14):
>   northd: Find ovn_datapath from a single hmap.
>   lflow-mgr: Remove the ovn_datapath from ovn_lflow.
>   lflow-mgr: Use one ovn_datapaths arg for ovn_dp_group_create().
>   lflow-mgr: Pass one ovn_datapaths arg to sync_lflow_to_sb().
>   lflow_mgr: Pass dp_groups to sync_lflow_to_sb().
>   lflows: Create a separate node for lflow syncing.
>   en-lflow-sync: Separate syncing from datapaths and from the lflow
>     table.
>   northd: Convert ovn_stage from an enum to a struct.
>   lflow_ref: Allow multiple datapaths per lflow_ref_node.
>   lflows: Separate lflow_ref building and syncing.
>   lflows: Move dp_groups from lflow_data to lflow_sync_data.
>   datapaths: Add a hashvec of datapath bindings.
>   lflow: Remove northd dependency from en-lflow-sync.
>   lflows: Remove ovn_datapath parameter when adding lflows.
> 
>  northd/datapath_sync.c                       |  52 +++
>  northd/datapath_sync.h                       |  33 +-
>  northd/en-datapath-logical-router.c          |  23 +-
>  northd/en-datapath-logical-router.h          |  10 +-
>  northd/en-datapath-logical-switch.c          |  23 +-
>  northd/en-datapath-logical-switch.h          |  10 +-
>  northd/en-datapath-sync.c                    |  36 +-
>  northd/en-learned-route-sync.c               |   8 +-
>  northd/en-lflow.c                            | 309 +++++++++++---
>  northd/en-lflow.h                            |  32 ++
>  northd/en-multicast.c                        |   3 +-
>  northd/en-northd-output.c                    |  14 +-
>  northd/en-northd-output.h                    |   5 +-
>  northd/en-northd.c                           |   5 +-
>  northd/en-port-binding-chassisredirect.c     |   8 +-
>  northd/en-port-binding-logical-router-port.c |   2 +-
>  northd/en-port-binding-logical-switch-port.c |   2 +-
>  northd/en-port-binding-mirror.c              |   4 +-
>  northd/en-sync-sb.c                          | 104 +++--
>  northd/inc-proc-northd.c                     |  22 +-
>  northd/lflow-mgr.c                           | 419 +++++++++----------
>  northd/lflow-mgr.h                           |  84 ++--
>  northd/northd.c                              | 376 +++++++----------
>  northd/northd.h                              |  92 ++--
>  tests/ovn-northd.at                          | 125 +++++-
>  25 files changed, 1112 insertions(+), 689 deletions(-)
> 

Regards,
Dumitru

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to