On 3/17/21 9:25 PM, Ilya Maximets wrote:
> virtio_user_dev_server_reconnect() is typically called from the
> interrupt context while checking the link state:
>
> vhost_user_update_link_state()
> --> virtio_user_dev_server_reconnect()
>
> Under this conditions callback unregistering always fails. This means
> that listenfd is never unregistered and continue to trigger interrupts.
> For example, if second client will try to connect to the same socket,
> the server will receive interrupts infinitely because it will not
> accept them while listen fd is readable and generates epoll events.
>
> Fix that by moving reconfiguration of interrupts out of the
> interrupt context to alarm handler.
>
> 'virtio_user_dev_delayed_handler' renamed to
> 'virtio_user_dev_delayed_disconnect_handler' to better reflect its
> purpose.
>
> Additionally improved error logging around interrupt management.
>
> Fixes: bd8f50a45d0f ("net/virtio-user: support server mode")
> Cc: sta...@dpdk.org
>
> Signed-off-by: Ilya Maximets <i.maxim...@ovn.org>
> ---
>
> CC: Zhiyong Yang <zhiyong.y...@intel.com>
>
> drivers/net/virtio/virtio_user/vhost_user.c | 4 +-
> .../net/virtio/virtio_user/virtio_user_dev.c | 70 ++++++++++++++-----
> .../net/virtio/virtio_user/virtio_user_dev.h | 2 +-
> 3 files changed, 57 insertions(+), 19 deletions(-)
>
Reviewed-by: Maxime Coquelin <maxime.coque...@redhat.com>
Thanks,
Maxime