@@ -984,6 +984,8 @@ static int virtio_scsi_exit_pci(PCIDevice *pci_dev)
}
static Property virtio_scsi_properties[] = {
+ DEFINE_PROP_VHOST_SCSI("vhost-scsi", VirtIOPCIProxy,
+ scsi.vhost_scsi),
DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 2),
DEFINE_VIRTIO_SCSI_PROPERTIES(VirtIOPCIProxy, host_features, scsi),
DEFINE_PROP_END_OF_LIST(),
@@ -15,6 +15,7 @@
#include "qemu-common.h"
#include "qemu-error.h"
+#include "vhost-scsi.h"
#include "virtio-scsi.h"
#include <hw/scsi.h>
#include <hw/scsi-defs.h>
@@ -602,11 +603,7 @@ static void virtio_scsi_set_status(VirtIODevice *vdev, uint8_t val)
if (start) {
int ret;
- if (!vhost_dev_query(&s->vhost_scsi, vdev)) {
- return;
- }
-
- ret = virtio_scsi_vhost_start(s);
+ ret = vhost_scsi_start(s->vhost_scsi, vdev);
if (ret < 0) {
error_report("virtio-scsi: unable to start vhost: %s\n",
strerror(-ret));
@@ -615,7 +612,7 @@ static void virtio_scsi_set_status(VirtIODevice *vdev, uint8_t val)
exit(1);
}
} else {
- virtio_scsi_vhost_stop(s);
+ vhost_scsi_stop(s->vhost_scsi, vdev);
}
s->vhost_started = start;
@@ -670,6 +667,5 @@ void virtio_scsi_exit(VirtIODevice *vdev)
/* This will stop vhost backend if appropriate. */
virtio_scsi_set_status(vdev, 0);
- vhost_dev_cleanup(&s->vhost_scsi);
virtio_cleanup(vdev);
}
@@ -40,9 +40,7 @@ struct vhost_vring_target {
};
typedef struct {
- /* The tcm_vhost wwpn and tpgt */
- char *wwpn;
- uint16_t tpgt;
+ VHostSCSI *vhost_scsi;
} VirtIOSCSIConf;
#endif /* _QEMU_VIRTIO_SCSI_H */