virtio-scsi: Split virtio_scsi_handle_ctrl_req from virtio_scsi_handle_ctrl

To share with dataplane code.

Signed-off-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Fam Zheng 2014-08-06 13:35:01 +08:00 committed by Paolo Bonzini
parent bf359a445e
commit dc56b7c4fb
2 changed files with 35 additions and 28 deletions

View File

@ -308,18 +308,15 @@ fail:
req->resp.tmf.response = VIRTIO_SCSI_S_BAD_TARGET; req->resp.tmf.response = VIRTIO_SCSI_S_BAD_TARGET;
} }
static void virtio_scsi_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq) void virtio_scsi_handle_ctrl_req(VirtIOSCSI *s, VirtIOSCSIReq *req)
{ {
VirtIOSCSI *s = (VirtIOSCSI *)vdev; VirtIODevice *vdev = (VirtIODevice *)s;
VirtIOSCSIReq *req;
while ((req = virtio_scsi_pop_req(s, vq))) {
int type; int type;
if (iov_to_buf(req->elem.out_sg, req->elem.out_num, 0, if (iov_to_buf(req->elem.out_sg, req->elem.out_num, 0,
&type, sizeof(type)) < sizeof(type)) { &type, sizeof(type)) < sizeof(type)) {
virtio_scsi_bad_req(); virtio_scsi_bad_req();
continue; return;
} }
virtio_tswap32s(vdev, &req->req.tmf.type); virtio_tswap32s(vdev, &req->req.tmf.type);
@ -343,6 +340,15 @@ static void virtio_scsi_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq)
} }
virtio_scsi_complete_req(req); virtio_scsi_complete_req(req);
} }
static void virtio_scsi_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq)
{
VirtIOSCSI *s = (VirtIOSCSI *)vdev;
VirtIOSCSIReq *req;
while ((req = virtio_scsi_pop_req(s, vq))) {
virtio_scsi_handle_ctrl_req(s, req);
}
} }
static void virtio_scsi_complete_cmd_req(VirtIOSCSIReq *req) static void virtio_scsi_complete_cmd_req(VirtIOSCSIReq *req)

View File

@ -227,6 +227,7 @@ void virtio_scsi_common_realize(DeviceState *dev, Error **errp,
HandleOutput cmd); HandleOutput cmd);
void virtio_scsi_common_unrealize(DeviceState *dev, Error **errp); void virtio_scsi_common_unrealize(DeviceState *dev, Error **errp);
void virtio_scsi_handle_ctrl_req(VirtIOSCSI *s, VirtIOSCSIReq *req);
void virtio_scsi_handle_cmd_req(VirtIOSCSI *s, VirtIOSCSIReq *req); void virtio_scsi_handle_cmd_req(VirtIOSCSI *s, VirtIOSCSIReq *req);
#endif /* _QEMU_VIRTIO_SCSI_H */ #endif /* _QEMU_VIRTIO_SCSI_H */