[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