vhost-user-blk: Improve error reporting in realize
Now that vhost_user_blk_connect() is not called from an event handler any more, but directly from vhost_user_blk_device_realize(), we can actually make use of Error again instead of calling error_report() in the inner function and setting a more generic and therefore less useful error message in realize() itself. With Error, the callers are responsible for adding context if necessary (such as the "-device" option the error refers to). Additional prefixes are redundant and better omitted. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Acked-by: Raphael Norwitz <raphael.norwitz@nutanix.com> Message-Id: <20210429171316.162022-4-kwolf@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
dabefdd6ab
commit
5b9243d265
@ -311,7 +311,7 @@ static void vhost_user_blk_reset(VirtIODevice *vdev)
|
|||||||
vhost_dev_free_inflight(s->inflight);
|
vhost_dev_free_inflight(s->inflight);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int vhost_user_blk_connect(DeviceState *dev)
|
static int vhost_user_blk_connect(DeviceState *dev, Error **errp)
|
||||||
{
|
{
|
||||||
VirtIODevice *vdev = VIRTIO_DEVICE(dev);
|
VirtIODevice *vdev = VIRTIO_DEVICE(dev);
|
||||||
VHostUserBlk *s = VHOST_USER_BLK(vdev);
|
VHostUserBlk *s = VHOST_USER_BLK(vdev);
|
||||||
@ -331,8 +331,7 @@ static int vhost_user_blk_connect(DeviceState *dev)
|
|||||||
|
|
||||||
ret = vhost_dev_init(&s->dev, &s->vhost_user, VHOST_BACKEND_TYPE_USER, 0);
|
ret = vhost_dev_init(&s->dev, &s->vhost_user, VHOST_BACKEND_TYPE_USER, 0);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
error_report("vhost-user-blk: vhost initialization failed: %s",
|
error_setg_errno(errp, -ret, "vhost initialization failed");
|
||||||
strerror(-ret));
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -340,8 +339,7 @@ static int vhost_user_blk_connect(DeviceState *dev)
|
|||||||
if (virtio_device_started(vdev, vdev->status)) {
|
if (virtio_device_started(vdev, vdev->status)) {
|
||||||
ret = vhost_user_blk_start(vdev);
|
ret = vhost_user_blk_start(vdev);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
error_report("vhost-user-blk: vhost start failed: %s",
|
error_setg_errno(errp, -ret, "vhost start failed");
|
||||||
strerror(-ret));
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -380,10 +378,12 @@ static void vhost_user_blk_event(void *opaque, QEMUChrEvent event)
|
|||||||
DeviceState *dev = opaque;
|
DeviceState *dev = opaque;
|
||||||
VirtIODevice *vdev = VIRTIO_DEVICE(dev);
|
VirtIODevice *vdev = VIRTIO_DEVICE(dev);
|
||||||
VHostUserBlk *s = VHOST_USER_BLK(vdev);
|
VHostUserBlk *s = VHOST_USER_BLK(vdev);
|
||||||
|
Error *local_err = NULL;
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case CHR_EVENT_OPENED:
|
case CHR_EVENT_OPENED:
|
||||||
if (vhost_user_blk_connect(dev) < 0) {
|
if (vhost_user_blk_connect(dev, &local_err) < 0) {
|
||||||
|
error_report_err(local_err);
|
||||||
qemu_chr_fe_disconnect(&s->chardev);
|
qemu_chr_fe_disconnect(&s->chardev);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -426,7 +426,7 @@ static void vhost_user_blk_device_realize(DeviceState *dev, Error **errp)
|
|||||||
int i, ret;
|
int i, ret;
|
||||||
|
|
||||||
if (!s->chardev.chr) {
|
if (!s->chardev.chr) {
|
||||||
error_setg(errp, "vhost-user-blk: chardev is mandatory");
|
error_setg(errp, "chardev is mandatory");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -434,16 +434,16 @@ static void vhost_user_blk_device_realize(DeviceState *dev, Error **errp)
|
|||||||
s->num_queues = 1;
|
s->num_queues = 1;
|
||||||
}
|
}
|
||||||
if (!s->num_queues || s->num_queues > VIRTIO_QUEUE_MAX) {
|
if (!s->num_queues || s->num_queues > VIRTIO_QUEUE_MAX) {
|
||||||
error_setg(errp, "vhost-user-blk: invalid number of IO queues");
|
error_setg(errp, "invalid number of IO queues");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!s->queue_size) {
|
if (!s->queue_size) {
|
||||||
error_setg(errp, "vhost-user-blk: queue size must be non-zero");
|
error_setg(errp, "queue size must be non-zero");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (s->queue_size > VIRTQUEUE_MAX_SIZE) {
|
if (s->queue_size > VIRTQUEUE_MAX_SIZE) {
|
||||||
error_setg(errp, "vhost-user-blk: queue size must not exceed %d",
|
error_setg(errp, "queue size must not exceed %d",
|
||||||
VIRTQUEUE_MAX_SIZE);
|
VIRTQUEUE_MAX_SIZE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -469,8 +469,7 @@ static void vhost_user_blk_device_realize(DeviceState *dev, Error **errp)
|
|||||||
goto virtio_err;
|
goto virtio_err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vhost_user_blk_connect(dev) < 0) {
|
if (vhost_user_blk_connect(dev, errp) < 0) {
|
||||||
error_setg(errp, "vhost-user-blk: could not connect");
|
|
||||||
qemu_chr_fe_disconnect(&s->chardev);
|
qemu_chr_fe_disconnect(&s->chardev);
|
||||||
goto virtio_err;
|
goto virtio_err;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user