mirror of https://gitee.com/openkylin/qemu.git
vhost-user-blk: convert to new virtio_delete_queue
use the new virtio_delete_queue function to cleanup. Signed-off-by: Pan Nengyuan <pannengyuan@huawei.com> Message-Id: <20200224041336.30790-3-pannengyuan@huawei.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
13e5468127
commit
38e245a42c
|
@ -306,7 +306,7 @@ static int vhost_user_blk_connect(DeviceState *dev)
|
|||
s->connected = true;
|
||||
|
||||
s->dev.nvqs = s->num_queues;
|
||||
s->dev.vqs = s->vqs;
|
||||
s->dev.vqs = s->vhost_vqs;
|
||||
s->dev.vq_index = 0;
|
||||
s->dev.backend_features = 0;
|
||||
|
||||
|
@ -420,13 +420,14 @@ static void vhost_user_blk_device_realize(DeviceState *dev, Error **errp)
|
|||
virtio_init(vdev, "virtio-blk", VIRTIO_ID_BLOCK,
|
||||
sizeof(struct virtio_blk_config));
|
||||
|
||||
s->virtqs = g_new(VirtQueue *, s->num_queues);
|
||||
for (i = 0; i < s->num_queues; i++) {
|
||||
virtio_add_queue(vdev, s->queue_size,
|
||||
vhost_user_blk_handle_output);
|
||||
s->virtqs[i] = virtio_add_queue(vdev, s->queue_size,
|
||||
vhost_user_blk_handle_output);
|
||||
}
|
||||
|
||||
s->inflight = g_new0(struct vhost_inflight, 1);
|
||||
s->vqs = g_new0(struct vhost_virtqueue, s->num_queues);
|
||||
s->vhost_vqs = g_new0(struct vhost_virtqueue, s->num_queues);
|
||||
s->watch = 0;
|
||||
s->connected = false;
|
||||
|
||||
|
@ -458,11 +459,12 @@ reconnect:
|
|||
return;
|
||||
|
||||
virtio_err:
|
||||
g_free(s->vqs);
|
||||
g_free(s->vhost_vqs);
|
||||
g_free(s->inflight);
|
||||
for (i = 0; i < s->num_queues; i++) {
|
||||
virtio_del_queue(vdev, i);
|
||||
virtio_delete_queue(s->virtqs[i]);
|
||||
}
|
||||
g_free(s->virtqs);
|
||||
virtio_cleanup(vdev);
|
||||
vhost_user_cleanup(&s->vhost_user);
|
||||
}
|
||||
|
@ -478,12 +480,13 @@ static void vhost_user_blk_device_unrealize(DeviceState *dev, Error **errp)
|
|||
NULL, NULL, NULL, false);
|
||||
vhost_dev_cleanup(&s->dev);
|
||||
vhost_dev_free_inflight(s->inflight);
|
||||
g_free(s->vqs);
|
||||
g_free(s->vhost_vqs);
|
||||
g_free(s->inflight);
|
||||
|
||||
for (i = 0; i < s->num_queues; i++) {
|
||||
virtio_del_queue(vdev, i);
|
||||
virtio_delete_queue(s->virtqs[i]);
|
||||
}
|
||||
g_free(s->virtqs);
|
||||
virtio_cleanup(vdev);
|
||||
vhost_user_cleanup(&s->vhost_user);
|
||||
}
|
||||
|
|
|
@ -36,7 +36,8 @@ typedef struct VHostUserBlk {
|
|||
struct vhost_dev dev;
|
||||
struct vhost_inflight *inflight;
|
||||
VhostUserState vhost_user;
|
||||
struct vhost_virtqueue *vqs;
|
||||
struct vhost_virtqueue *vhost_vqs;
|
||||
VirtQueue **virtqs;
|
||||
guint watch;
|
||||
bool connected;
|
||||
} VHostUserBlk;
|
||||
|
|
Loading…
Reference in New Issue