Hi, On Tue, Feb 28, 2023 at 4:03 PM David Marchand <[email protected]> wrote: > > Hello, > > On Fri, Feb 24, 2023 at 2:55 AM Han Ding <[email protected]> wrote: > > >On 2/23/23 10:35, Han Ding wrote: > > >> > > >> When use ovs-vsctl to delete vhostuserclient port while qemu destroy > > >> virtio, > > >> there is a deadlock between OVS main thread and the vhost-events thread. > > >> > > >> openvswitch is 2.14 and dpdk is 20.11 > > > > > >FWIW, 2.14 supposed to be used with 19.11. > > Indeed. > > > > > > Thanks for reply. > > > > The code flow path of openvswitch 3.0.1 and dpdk 21.11, dpdk 22.11 is same > > for destroying vhostuserclient device. So, I think there is a same bug in > > new version. > > Please double check the dpdk versions you are using, then have a look > at my comment below. > > > > > > > > >> > > >> Main thread: > > >> ofport_remove > > >> -> netdev_unref > > >> -> netdev_dpdk_vhost_destruct > > >> -> rte_vhost_driver_unregister (If fdentry is busy, circle > > >> again until the fdentry is not busy) > > >> -> fdset_try_del (fdentry is busy now, return -1. Goto > > >> again) > > >> > > > > > > > > >> vhost-nets thread: > > >> fdset_event_dispatch (set fdentry to busy. When destroy_device fuction > > >> return set the fdentry to no busy) > > >> -> vhost_user_read_cb > > >> -> vhost_user_msg_handler > > >> -> vhost_user_get_vring_base > > >> ->destroy_device > > >> -> ovsrcu_synchronize (Wait for other threads to quiesce) > > > > > > > > >> The vhost-nets thread wait for main thread to quiesce, but the main > > >> thread now is waiting for fdentry to no busy > > >> and circle all the time. > >
I believe this issue exists in older versions, we have seen it before. When we create and destroy vm concurrently and continuously. This could be reproduced easily. We found a related patch from dpdk which is not accepted. https://patchwork.dpdk.org/project/dpdk/patch/[email protected]/ > > > > >> > > >> Whether the ovsrcu_synchronize is necessary in destrory_device > > > > > >Yes, we have to wait for all threads to stop using this device. > > > > > >> or the rte_vhost_driver_unregister is correct in fdset_try_del ? > > > > > >CC: David and Maxime. > > This could be a different issue, but there was a change for this area > of the vhost library in v21.11: > 451dc0fad83d ("vhost: fix crash on port deletion") > > I don't see it backported to 19.11 stable release, but it got to > v20.11.4 (used in 2.15 and 2.16 ovs branches). > > I would suggest backporting it to your 19.11 dpdk and retest with ovs 2.14. > > > -- > David Marchand > > _______________________________________________ > dev mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
