On Fri, 17 Jun 2022 10:42:29 +0800 Yuan Wang <yuanx.w...@intel.com> wrote:
> The virtio-user initialization requires unix socket to receive backend > messages in block mode. However, vhost_user_update_link_state() sets > the same socket to nonblocking via fcntl, which affects all threads. > Enabling the rxq interrupt can causes both of these behaviors to occur > concurrently, with the result that the initialization may fail > because no messages are received in nonblocking socket. > > Thread 1: > virtio_init_device() > --> virtio_user_start_device() > --> vhost_user_set_memory_table() > --> vhost_user_check_reply_ack() > > Thread 2: > virtio_interrupt_handler() > --> vhost_user_update_link_state() > > Fix that by replacing O_NONBLOCK with the recv per-call option > MSG_DONTWAIT. > > Fixes: ef53b6030039 ("net/virtio-user: support LSC") > Cc: sta...@dpdk.org > > Signed-off-by: Yuan Wang <yuanx.w...@intel.com> Looks good and saves a few system calls. Acked-by: Stephen Hemminger <step...@networkplumber.org>