[ovs-dev] [PATCH] ovn-controller: Remove flows created for now deleted SB database rows.

Ben Pfaff blp at ovn.org
Thu Jul 28 21:23:57 UTC 2016


On Thu, Jul 28, 2016 at 07:54:30PM +0000, Ryan Moats wrote:
> Ensure that rows created for deleted port binding and
> multicast group rows are cleared when doing full processing.
> 
> Signed-off-by: Ryan Moats <rmoats at us.ibm.com>

I'm choosing to overlook storing UUIDs as strings in a set of strings.

How about this simplification?

--8<--------------------------cut here-------------------------->8--

diff --git a/ovn/controller/physical.c b/ovn/controller/physical.c
index 6bc0095..a4a8fcf 100644
--- a/ovn/controller/physical.c
+++ b/ovn/controller/physical.c
@@ -598,25 +598,22 @@ consider_mc_group(enum mf_field_id mff_ovn_geneve,
     sset_destroy(&remote_chassis);
 }
 
+/* Deletes the flows whose UUIDs are in 'old' but not 'new', and then replaces
+ * 'old' by 'new'. */
 static void
 rationalize_ssets_and_delete_flows(struct sset *old, struct sset *new)
 {
-    const char *uuid_s, *next_uuid;
-    SSET_FOR_EACH_SAFE (uuid_s, next_uuid, old) {
+    const char *uuid_s;
+    SSET_FOR_EACH (uuid_s, old) {
         if (!sset_find(new, uuid_s)) {
             struct uuid uuid;
             if (uuid_from_string(&uuid, uuid_s)) {
                 ofctrl_remove_flows(&uuid);
             }
-            sset_find_and_delete(old, uuid_s);
         }
     }
-    SSET_FOR_EACH_SAFE (uuid_s, next_uuid, new) {
-        if (!sset_find(old, uuid_s)) {
-            sset_add(old, uuid_s);
-        }
-        sset_find_and_delete(new, uuid_s);
-    }
+    sset_swap(old, new);
+    sset_clear(new);
 }
 
 void



More information about the dev mailing list