[ovs-dev] [PATCH v7 4/6] [ovn-controller] Persist ports simap in logical_datapath

Ryan Moats rmoats at us.ibm.com
Fri Feb 19 17:25:10 UTC 2016


From: RYAN D. MOATS <rmoats at us.ibm.com>

Persist across runs so that a change to this simap can be used
as a trigger for resetting incremental processing.

Signed-off-by: RYAN D. MOATS <rmoats at us.ibm.com>
---
 ovn/controller/lflow.c |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/ovn/controller/lflow.c b/ovn/controller/lflow.c
index d53213c..18f0970 100644
--- a/ovn/controller/lflow.c
+++ b/ovn/controller/lflow.c
@@ -231,21 +231,27 @@ static void
 ldp_run(struct controller_ctx *ctx)
 {
     struct logical_datapath *ldp;
-    HMAP_FOR_EACH (ldp, hmap_node, &logical_datapaths) {
-        simap_clear(&ldp->ports);
-    }
+//    HMAP_FOR_EACH (ldp, hmap_node, &logical_datapaths) {
+//        simap_clear(&ldp->ports);
+//    }
 
     const struct sbrec_port_binding *binding;
     SBREC_PORT_BINDING_FOR_EACH (binding, ctx->ovnsb_idl) {
         struct logical_datapath *ldp = ldp_lookup_or_create(binding->datapath);
-
-        simap_put(&ldp->ports, binding->logical_port, binding->tunnel_key);
+        struct simap_node *old = simap_find(&ldp->ports,
+                                            binding->logical_port);
+        if (!old || old->data != binding->tunnel_key) {
+            simap_put(&ldp->ports, binding->logical_port, binding->tunnel_key);
+        }
     }
 
     const struct sbrec_multicast_group *mc;
     SBREC_MULTICAST_GROUP_FOR_EACH (mc, ctx->ovnsb_idl) {
         struct logical_datapath *ldp = ldp_lookup_or_create(mc->datapath);
-        simap_put(&ldp->ports, mc->name, mc->tunnel_key);
+        struct simap_node *old = simap_find(&ldp->ports, mc->name);
+        if (!old || old->data != mc->tunnel_key) {
+            simap_put(&ldp->ports, mc->name, mc->tunnel_key);
+        }
     }
 
     struct logical_datapath *next_ldp;
-- 
1.7.1




More information about the dev mailing list