vhost-user: fix the reconnect error
If the error occurs in vhost_dev_init, the value of s->connected is set to true in advance, and there is no chance to enter this function execution again in the future. Signed-off-by: Li Feng <fengli@smartx.com> Message-Id: <20231123055431.217792-2-fengli@smartx.com> Reviewed-by: Raphael Norwitz <raphael.norwitz@nutanix.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
2d37fe9e5e
commit
298d4f892e
@ -326,7 +326,6 @@ static int vhost_user_blk_connect(DeviceState *dev, Error **errp)
|
||||
if (s->connected) {
|
||||
return 0;
|
||||
}
|
||||
s->connected = true;
|
||||
|
||||
s->dev.num_queues = s->num_queues;
|
||||
s->dev.nvqs = s->num_queues;
|
||||
@ -343,15 +342,14 @@ static int vhost_user_blk_connect(DeviceState *dev, Error **errp)
|
||||
return ret;
|
||||
}
|
||||
|
||||
s->connected = true;
|
||||
|
||||
/* restore vhost state */
|
||||
if (virtio_device_started(vdev, vdev->status)) {
|
||||
ret = vhost_user_blk_start(vdev, errp);
|
||||
if (ret < 0) {
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void vhost_user_blk_disconnect(DeviceState *dev)
|
||||
|
@ -147,7 +147,6 @@ static int vhost_user_scsi_connect(DeviceState *dev, Error **errp)
|
||||
if (s->connected) {
|
||||
return 0;
|
||||
}
|
||||
s->connected = true;
|
||||
|
||||
vsc->dev.num_queues = vs->conf.num_queues;
|
||||
vsc->dev.nvqs = VIRTIO_SCSI_VQ_NUM_FIXED + vs->conf.num_queues;
|
||||
@ -161,6 +160,8 @@ static int vhost_user_scsi_connect(DeviceState *dev, Error **errp)
|
||||
return ret;
|
||||
}
|
||||
|
||||
s->connected = true;
|
||||
|
||||
/* restore vhost state */
|
||||
if (virtio_device_started(vdev, vdev->status)) {
|
||||
ret = vhost_user_scsi_start(s, errp);
|
||||
|
@ -229,7 +229,6 @@ static int vu_gpio_connect(DeviceState *dev, Error **errp)
|
||||
if (gpio->connected) {
|
||||
return 0;
|
||||
}
|
||||
gpio->connected = true;
|
||||
|
||||
vhost_dev_set_config_notifier(vhost_dev, &gpio_ops);
|
||||
gpio->vhost_user.supports_config = true;
|
||||
@ -243,6 +242,8 @@ static int vu_gpio_connect(DeviceState *dev, Error **errp)
|
||||
return ret;
|
||||
}
|
||||
|
||||
gpio->connected = true;
|
||||
|
||||
/* restore vhost state */
|
||||
if (virtio_device_started(vdev, vdev->status)) {
|
||||
vu_gpio_start(vdev);
|
||||
|
Loading…
Reference in New Issue
Block a user