From: Ni Xun <richar...@tencent.com> when reconnecting to vhost server, it doesn't send slave fd to vhost as the slave fd is only sent in vhost_user_init. also resend the slave fd in vhost reconnect.
Signed-off-by: Ni Xun <richar...@tencent.com> Signed-off-by: Lu Zhigang <tonn...@tencent.com> Signed-off-by: Yan Miao <leom...@tencent.com> Signed-off-by: lucascye <lucas...@tencent.com> --- hw/block/vhost-user-blk.c | 6 ++++++ hw/virtio/vhost-user.c | 2 +- include/hw/virtio/vhost.h | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index 17df5338e7..59650a570b 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -138,6 +138,12 @@ static int vhost_user_blk_start(VirtIODevice *vdev) error_report("Error get inflight: %d", -ret); goto err_guest_notifiers; } + } else { + ret = vhost_setup_slave_channel(&s->dev); + if (ret < 0) { + error_report("Error setting vhost slave channel: %d", -ret); + return ret; + } } ret = vhost_dev_set_inflight(&s->dev, s->inflight); diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index 08e7e63790..0da4a12787 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -1115,7 +1115,7 @@ err: return; } -static int vhost_setup_slave_channel(struct vhost_dev *dev) +int vhost_setup_slave_channel(struct vhost_dev *dev) { VhostUserMsg msg = { .hdr.request = VHOST_USER_SET_SLAVE_REQ_FD, diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h index 085450c6f8..cad60ad521 100644 --- a/include/hw/virtio/vhost.h +++ b/include/hw/virtio/vhost.h @@ -100,6 +100,7 @@ int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev); void vhost_dev_stop(struct vhost_dev *hdev, VirtIODevice *vdev); int vhost_dev_enable_notifiers(struct vhost_dev *hdev, VirtIODevice *vdev); void vhost_dev_disable_notifiers(struct vhost_dev *hdev, VirtIODevice *vdev); +int vhost_setup_slave_channel(struct vhost_dev *hdev); /* Test and clear masked event pending status. * Should be called after unmask to avoid losing events. -- 2.24.1 (Apple Git-126)