On 19 March 2017 at 07:28, Paul Blakey <[email protected]> wrote: > Hi all, > > While using out patches for HW offload we've noticed we get a ovs assertion > at transition ukey, which tries to > transition the ukey state from EVICTED back to OPERATIONAL. > With furthur investigation it seem that this can happen without our HW > offload patches as there might be a race between handle_upcalls and > revalidate. > > The procedure is as such: > > handle_upcalls receives a new upcall and creates a new ukey, its state is > VISIBLE, it then it installs a flow (FLOW_PUT) to the datapat and > upon success wants to set the ukey state to OPERATIONAL (line 1408). for > that the handler running handle_upcalls wants to reaquirce the ukey lock, > but in the meantime revalidators dump (line 2261) the already inserted flow > and want to delete this flow (line 2328, say because of openflow db changes, > or aging). The revalidator deletes the flow and moves the ukey from > VISIBLE -> OPERATIONAL (line 2320) -> EVICTING (line 2220) -> EVICTED (line > 2134) > > finally handler succesfuly acquires the flow and now set the state to > OPERERTIONAL which will cause the assert in transition_ukey. > > Line numbers in question are from ofproto/ofproto-dpif-upcall.c > > I can provide a test the could show this happening, basicly adding a sleep > before (writing it now).
Thanks for the report Paul, I've sent a patch - would you mind reviewing and testing it? https://mail.openvswitch.org/pipermail/ovs-dev/2017-March/330029.html _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
