This patch series is the rebase of previous patch series [1] on top of master where a series of changes that avoided passing ovsdb IDL (eaa4ead5) has been merged. The major concern of the previous patches are the maintainability of the dependencies. This patch series, thanks for the removal of passing IDL directly, eliminates the access to any tables within any engine node processing, and all dependencies are naturally exposed because otherwise the code will either not pass compile or abort in the very first iteration, except for one case - accessing data of other tables through references.
For exposing the dependencies introduced by reference access, it is a big TODO item and it is the major reason this patch series is RFC only. Other than this, there is another problem found while using ovsdb IDL index to query chassis: current ovsdb IDL index is not updated for the changes made in current transaction. It would be better if we fix the index implementation, although this patch series worked around this problem by postpone some processing to next iterations in such circumstances. [1] https://mail.openvswitch.org/pipermail/ovs-dev/2018-June/347808.html Han Zhou (14): ovsdb-idlc.in: Support more interfaces for passing pointers of individual tables. ovn-controller: Incremental processing engine ovn-controller: Track OVSDB changes ovn-controller: Initial use of incremental engine. ovn-controller: Incremental logical flow processing ovn-controller: runtime_data change handler for SB port-binding ovn-controller: port-binding incremental processing for physical flows ovn-controller: incremental processing for multicast group changes ovsdb-idl: Tracking - preserve data for deleted rows. ovn-controller: Split addr_sets from runtime_data. ovn-controller: Maintain resource references for logical flows. ovn-controller: Incremental processing for address-set changes. ovn-controller: Split port_groups from runtime_data. ovn-controller: Incremental processing for port-group changes. include/ovn/actions.h | 3 + include/ovn/expr.h | 5 +- lib/ovsdb-idl-provider.h | 2 + lib/ovsdb-idl.c | 36 +- ovn/controller/bfd.c | 4 +- ovn/controller/binding.c | 108 ++- ovn/controller/binding.h | 7 + ovn/controller/encaps.c | 12 +- ovn/controller/lflow.c | 428 +++++++++++- ovn/controller/lflow.h | 100 ++- ovn/controller/ofctrl.c | 262 +++++--- ovn/controller/ofctrl.h | 32 +- ovn/controller/ovn-controller.c | 1398 +++++++++++++++++++++++++++++++++------ ovn/controller/physical.c | 232 +++++-- ovn/controller/physical.h | 20 +- ovn/lib/actions.c | 8 +- ovn/lib/automake.mk | 4 +- ovn/lib/expr.c | 21 +- ovn/lib/extend-table.c | 60 +- ovn/lib/extend-table.h | 16 +- ovn/lib/inc-proc-eng.c | 201 ++++++ ovn/lib/inc-proc-eng.h | 240 +++++++ ovn/utilities/ovn-trace.c | 2 +- ovsdb/ovsdb-idlc.in | 25 + tests/ovn.at | 75 +++ tests/test-ovn.c | 7 +- 26 files changed, 2877 insertions(+), 431 deletions(-) create mode 100644 ovn/lib/inc-proc-eng.c create mode 100644 ovn/lib/inc-proc-eng.h -- 2.1.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
