bacd9b0468
Rebase to qemu-1.7 GA New monitor command blockdev-add for full featured block device hotplug. Performance and functionality improvements for USB 3.0. Many VFIO improvements ACPI tables can be generated by QEMU and can be used by firmware directly. Support creating and writing .vhdx images. qemu-img map: dump detailed image file metadata
113 lines
3.9 KiB
Diff
113 lines
3.9 KiB
Diff
From 18a73436b50ec6c28afde849c6de23ad7ebed459 Mon Sep 17 00:00:00 2001
|
|
From: Paolo Bonzini <pbonzini@redhat.com>
|
|
Date: Fri, 20 Sep 2013 16:57:57 +0200
|
|
Subject: [PATCH] virtio-scsi: switch exit callback to VirtioDeviceClass
|
|
|
|
This ensures hot-unplug is handled properly by the proxy.
|
|
|
|
Cc: qemu-stable@nongnu.org
|
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
---
|
|
hw/scsi/vhost-scsi.c | 11 +++++------
|
|
hw/scsi/virtio-scsi.c | 15 +++++++--------
|
|
include/hw/virtio/virtio-scsi.h | 2 +-
|
|
3 files changed, 13 insertions(+), 15 deletions(-)
|
|
|
|
diff --git a/hw/scsi/vhost-scsi.c b/hw/scsi/vhost-scsi.c
|
|
index 9e770fb..5e3cc61 100644
|
|
--- a/hw/scsi/vhost-scsi.c
|
|
+++ b/hw/scsi/vhost-scsi.c
|
|
@@ -240,11 +240,10 @@ static int vhost_scsi_init(VirtIODevice *vdev)
|
|
return 0;
|
|
}
|
|
|
|
-static int vhost_scsi_exit(DeviceState *qdev)
|
|
+static void vhost_scsi_exit(VirtIODevice *vdev)
|
|
{
|
|
- VirtIODevice *vdev = VIRTIO_DEVICE(qdev);
|
|
- VHostSCSI *s = VHOST_SCSI(qdev);
|
|
- VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(qdev);
|
|
+ VHostSCSI *s = VHOST_SCSI(vdev);
|
|
+ VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(vdev);
|
|
|
|
migrate_del_blocker(s->migration_blocker);
|
|
error_free(s->migration_blocker);
|
|
@@ -253,7 +252,7 @@ static int vhost_scsi_exit(DeviceState *qdev)
|
|
vhost_scsi_set_status(vdev, 0);
|
|
|
|
g_free(s->dev.vqs);
|
|
- return virtio_scsi_common_exit(vs);
|
|
+ virtio_scsi_common_exit(vs);
|
|
}
|
|
|
|
static Property vhost_scsi_properties[] = {
|
|
@@ -265,10 +264,10 @@ static void vhost_scsi_class_init(ObjectClass *klass, void *data)
|
|
{
|
|
DeviceClass *dc = DEVICE_CLASS(klass);
|
|
VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass);
|
|
- dc->exit = vhost_scsi_exit;
|
|
dc->props = vhost_scsi_properties;
|
|
set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
|
|
vdc->init = vhost_scsi_init;
|
|
+ vdc->exit = vhost_scsi_exit;
|
|
vdc->get_features = vhost_scsi_get_features;
|
|
vdc->set_config = vhost_scsi_set_config;
|
|
vdc->set_status = vhost_scsi_set_status;
|
|
diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c
|
|
index 26d95a1..83344ea 100644
|
|
--- a/hw/scsi/virtio-scsi.c
|
|
+++ b/hw/scsi/virtio-scsi.c
|
|
@@ -644,22 +644,21 @@ static int virtio_scsi_device_init(VirtIODevice *vdev)
|
|
return 0;
|
|
}
|
|
|
|
-int virtio_scsi_common_exit(VirtIOSCSICommon *vs)
|
|
+void virtio_scsi_common_exit(VirtIOSCSICommon *vs)
|
|
{
|
|
VirtIODevice *vdev = VIRTIO_DEVICE(vs);
|
|
|
|
g_free(vs->cmd_vqs);
|
|
virtio_cleanup(vdev);
|
|
- return 0;
|
|
}
|
|
|
|
-static int virtio_scsi_device_exit(DeviceState *qdev)
|
|
+static void virtio_scsi_device_exit(VirtIODevice *vdev)
|
|
{
|
|
- VirtIOSCSI *s = VIRTIO_SCSI(qdev);
|
|
- VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(qdev);
|
|
+ VirtIOSCSI *s = VIRTIO_SCSI(vdev);
|
|
+ VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(vdev);
|
|
|
|
- unregister_savevm(qdev, "virtio-scsi", s);
|
|
- return virtio_scsi_common_exit(vs);
|
|
+ unregister_savevm(DEVICE(vdev), "virtio-scsi", s);
|
|
+ virtio_scsi_common_exit(vs);
|
|
}
|
|
|
|
static Property virtio_scsi_properties[] = {
|
|
@@ -680,10 +679,10 @@ static void virtio_scsi_class_init(ObjectClass *klass, void *data)
|
|
{
|
|
DeviceClass *dc = DEVICE_CLASS(klass);
|
|
VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass);
|
|
- dc->exit = virtio_scsi_device_exit;
|
|
dc->props = virtio_scsi_properties;
|
|
set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
|
|
vdc->init = virtio_scsi_device_init;
|
|
+ vdc->exit = virtio_scsi_device_exit;
|
|
vdc->set_config = virtio_scsi_set_config;
|
|
vdc->get_features = virtio_scsi_get_features;
|
|
vdc->reset = virtio_scsi_reset;
|
|
diff --git a/include/hw/virtio/virtio-scsi.h b/include/hw/virtio/virtio-scsi.h
|
|
index 9a98540..206c61d 100644
|
|
--- a/include/hw/virtio/virtio-scsi.h
|
|
+++ b/include/hw/virtio/virtio-scsi.h
|
|
@@ -187,6 +187,6 @@ typedef struct {
|
|
VIRTIO_SCSI_F_CHANGE, true)
|
|
|
|
int virtio_scsi_common_init(VirtIOSCSICommon *vs);
|
|
-int virtio_scsi_common_exit(VirtIOSCSICommon *vs);
|
|
+void virtio_scsi_common_exit(VirtIOSCSICommon *vs);
|
|
|
|
#endif /* _QEMU_VIRTIO_SCSI_H */
|