If ukey_acquire() returns ENOENT, then it is unable to locate the ukey
corresponding to the flow and the flow has disappeared since it was
dumped. Don't bother deleting the flow in this case, as it will fail.

Signed-off-by: Joe Stringer <joestrin...@nicira.com>
---
 ofproto/ofproto-dpif-upcall.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
index 89de528..f0cd4cc 100644
--- a/ofproto/ofproto-dpif-upcall.c
+++ b/ofproto/ofproto-dpif-upcall.c
@@ -1857,7 +1857,9 @@ revalidate(struct revalidator *revalidator)
                     COVERAGE_INC(upcall_ukey_contention);
                 } else {
                     log_unexpected_flow(f, error);
-                    delete_op_init__(&ops[n_ops++], f);
+                    if (error != ENOENT) {
+                        delete_op_init__(&ops[n_ops++], f);
+                    }
                 }
                 continue;
             }
-- 
1.7.10.4

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to