Code Review
/
kvmfornfv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Merge "Adding breaktrace & disabling timer migration"
[kvmfornfv.git]
/
qemu
/
hw
/
scsi
/
vhost-scsi.c
diff --git
a/qemu/hw/scsi/vhost-scsi.c
b/qemu/hw/scsi/vhost-scsi.c
index
a69918b
..
9261d51
100644
(file)
--- a/
qemu/hw/scsi/vhost-scsi.c
+++ b/
qemu/hw/scsi/vhost-scsi.c
@@
-14,8
+14,9
@@
*
*/
*
*/
+#include "qemu/osdep.h"
+#include "qapi/error.h"
#include <sys/ioctl.h>
#include <sys/ioctl.h>
-#include "config.h"
#include "qemu/error-report.h"
#include "qemu/queue.h"
#include "monitor/monitor.h"
#include "qemu/error-report.h"
#include "qemu/queue.h"
#include "monitor/monitor.h"
@@
-26,6
+27,8
@@
#include "hw/virtio/virtio-bus.h"
#include "hw/virtio/virtio-access.h"
#include "hw/fw-path-provider.h"
#include "hw/virtio/virtio-bus.h"
#include "hw/virtio/virtio-access.h"
#include "hw/fw-path-provider.h"
+#include "linux/vhost.h"
+#include "qemu/cutils.h"
/* Features supported by host kernel. */
static const int kernel_feature_bits[] = {
/* Features supported by host kernel. */
static const int kernel_feature_bits[] = {
@@
-45,7
+48,7
@@
static int vhost_scsi_set_endpoint(VHostSCSI *s)
memset(&backend, 0, sizeof(backend));
pstrcpy(backend.vhost_wwpn, sizeof(backend.vhost_wwpn), vs->conf.wwpn);
memset(&backend, 0, sizeof(backend));
pstrcpy(backend.vhost_wwpn, sizeof(backend.vhost_wwpn), vs->conf.wwpn);
- ret = vhost_ops->vhost_
call(&s->dev, VHOST_SCSI_SET_ENDPOINT
, &backend);
+ ret = vhost_ops->vhost_
scsi_set_endpoint(&s->dev
, &backend);
if (ret < 0) {
return -errno;
}
if (ret < 0) {
return -errno;
}
@@
-60,7
+63,7
@@
static void vhost_scsi_clear_endpoint(VHostSCSI *s)
memset(&backend, 0, sizeof(backend));
pstrcpy(backend.vhost_wwpn, sizeof(backend.vhost_wwpn), vs->conf.wwpn);
memset(&backend, 0, sizeof(backend));
pstrcpy(backend.vhost_wwpn, sizeof(backend.vhost_wwpn), vs->conf.wwpn);
- vhost_ops->vhost_
call(&s->dev, VHOST_SCSI_CLEAR_ENDPOINT
, &backend);
+ vhost_ops->vhost_
scsi_clear_endpoint(&s->dev
, &backend);
}
static int vhost_scsi_start(VHostSCSI *s)
}
static int vhost_scsi_start(VHostSCSI *s)
@@
-76,8
+79,7
@@
static int vhost_scsi_start(VHostSCSI *s)
return -ENOSYS;
}
return -ENOSYS;
}
- ret = vhost_ops->vhost_call(&s->dev,
- VHOST_SCSI_GET_ABI_VERSION, &abi_version);
+ ret = vhost_ops->vhost_scsi_get_abi_version(&s->dev, &abi_version);
if (ret < 0) {
return -errno;
}
if (ret < 0) {
return -errno;
}
@@
-118,7
+120,7
@@
static int vhost_scsi_start(VHostSCSI *s)
* enabling/disabling irqfd.
*/
for (i = 0; i < s->dev.nvqs; i++) {
* enabling/disabling irqfd.
*/
for (i = 0; i < s->dev.nvqs; i++) {
- vhost_virtqueue_mask(&s->dev, vdev, i, false);
+ vhost_virtqueue_mask(&s->dev, vdev,
s->dev.vq_index +
i, false);
}
return ret;
}
return ret;
@@
-217,11
+219,9
@@
static void vhost_scsi_realize(DeviceState *dev, Error **errp)
}
if (vs->conf.vhostfd) {
}
if (vs->conf.vhostfd) {
- vhostfd = monitor_fd_param(cur_mon, vs->conf.vhostfd,
&err
);
+ vhostfd = monitor_fd_param(cur_mon, vs->conf.vhostfd,
errp
);
if (vhostfd == -1) {
if (vhostfd == -1) {
- error_setg(errp, "vhost-scsi: unable to parse vhostfd: %s",
- error_get_pretty(err));
- error_free(err);
+ error_prepend(errp, "vhost-scsi: unable to parse vhostfd: ");
return;
}
} else {
return;
}
} else {
@@
-277,6
+277,7
@@
static void vhost_scsi_unrealize(DeviceState *dev, Error **errp)
/* This will stop vhost backend. */
vhost_scsi_set_status(vdev, 0);
/* This will stop vhost backend. */
vhost_scsi_set_status(vdev, 0);
+ vhost_dev_cleanup(&s->dev);
g_free(s->dev.vqs);
virtio_scsi_common_unrealize(dev, errp);
g_free(s->dev.vqs);
virtio_scsi_common_unrealize(dev, errp);
@@
-291,7
+292,7
@@
static char *vhost_scsi_get_fw_dev_path(FWPathProvider *p, BusState *bus,
{
VHostSCSI *s = VHOST_SCSI(dev);
/* format: channel@channel/vhost-scsi@target,lun */
{
VHostSCSI *s = VHOST_SCSI(dev);
/* format: channel@channel/vhost-scsi@target,lun */
- return g_strdup_printf("channel@%x/%s@%x,%x", s->channel,
+ return g_strdup_printf("
/
channel@%x/%s@%x,%x", s->channel,
qdev_fw_name(dev), s->target, s->lun);
}
qdev_fw_name(dev), s->target, s->lun);
}