Flows which are deleted during the revalidator "dump" phase have their corresponding dump seq updated, which leads to such ukeys being handled by the "UKEY_KEEP" logic in revalidator_sweep__() here:
} else if (!seq_mismatch) { result = UKEY_KEEP; } In practice, this has allowed the flow to be deleted in revalidate(), then skip the flow deletion step in revalidator_sweep__(), and finally delete the ukey itself at the end of revalidator_sweep__(). However, this is also misleading because the ukeys which are being deleted are considered under the "UKEY_KEEP" logic. Since commit 83b03fe05e7a ("ofproto-dpif-upcall: Avoid double-delete of ukeys."), this logic is no longer required to prevent double-deletion of such flows, so we can now make this codepath more straightforward. Signed-off-by: Joe Stringer <j...@ovn.org> --- ofproto/ofproto-dpif-upcall.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c index 69a04c9a50ca..d61113176842 100644 --- a/ofproto/ofproto-dpif-upcall.c +++ b/ofproto/ofproto-dpif-upcall.c @@ -2253,7 +2253,7 @@ revalidator_sweep__(struct revalidator *revalidator, bool purge) seq_mismatch = (ukey->dump_seq != dump_seq && ukey->reval_seq != reval_seq); - if (purge) { + if (purge || !flow_exists) { result = UKEY_DELETE; } else if (!seq_mismatch) { result = UKEY_KEEP; -- 2.1.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev