[ovs-dev] [PATCH 1/3] revalidator: Re-fix a flow duplication bug.

Joe Stringer joestringer at nicira.com
Wed May 21 03:45:00 UTC 2014


Commit 73a3c4757e59 (revalidator: Prevent handling the same flow twice.)
fixed a bug where duplicated flows could be deleted twice. Commit
7d1700980b5d (ofproto-dpif-upcall: Remove the flow_dumper thread.)
partially re-introduced this bug.

The bug would cause the logs to show messages such as
"failed to flow_get (No such file or directory) skb_priority(0),..."
"failed to flow_del (No such file or directory) skb_priority(0),..."

This patch fixes the issue again.

Signed-off-by: Joe Stringer <joestringer at nicira.com>
---
 ofproto/ofproto-dpif-upcall.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
index 03b1332..3e8dda5 100644
--- a/ofproto/ofproto-dpif-upcall.c
+++ b/ofproto/ofproto-dpif-upcall.c
@@ -1482,12 +1482,14 @@ revalidate(struct revalidator *revalidator)
                                                  hash);
             bool mark;
 
-            if (!used && ukey) {
+            if (ukey) {
                 bool already_dumped;
 
                 ovs_mutex_lock(&ukey->mutex);
                 already_dumped = ukey->mark || !ukey->flow_exists;
-                used = ukey->created;
+                if (!used) {
+                    used = ukey->created;
+                }
                 ovs_mutex_unlock(&ukey->mutex);
 
                 if (already_dumped) {
-- 
1.7.10.4




More information about the dev mailing list