dataplane: Support VIRTIO_BLK_T_SCSI_CMD
Signed-off-by: Fam Zheng <famz@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
5a05cbeeaa
commit
c9f87b20b9
@ -204,6 +204,15 @@ static void do_flush_cmd(VirtIOBlockDataPlane *s, VirtQueueElement *elem,
|
|||||||
bdrv_aio_flush(s->blk->conf.bs, complete_flush, req);
|
bdrv_aio_flush(s->blk->conf.bs, complete_flush, req);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void do_scsi_cmd(VirtIOBlockDataPlane *s, VirtQueueElement *elem,
|
||||||
|
QEMUIOVector *inhdr)
|
||||||
|
{
|
||||||
|
int status;
|
||||||
|
|
||||||
|
status = virtio_blk_handle_scsi_req(VIRTIO_BLK(s->vdev), elem);
|
||||||
|
complete_request_early(s, elem, inhdr, status);
|
||||||
|
}
|
||||||
|
|
||||||
static int process_request(VirtIOBlockDataPlane *s, VirtQueueElement *elem)
|
static int process_request(VirtIOBlockDataPlane *s, VirtQueueElement *elem)
|
||||||
{
|
{
|
||||||
struct iovec *iov = elem->out_sg;
|
struct iovec *iov = elem->out_sg;
|
||||||
@ -252,8 +261,7 @@ static int process_request(VirtIOBlockDataPlane *s, VirtQueueElement *elem)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case VIRTIO_BLK_T_SCSI_CMD:
|
case VIRTIO_BLK_T_SCSI_CMD:
|
||||||
/* TODO support SCSI commands */
|
do_scsi_cmd(s, elem, inhdr);
|
||||||
complete_request_early(s, elem, inhdr, VIRTIO_BLK_S_UNSUPP);
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case VIRTIO_BLK_T_FLUSH:
|
case VIRTIO_BLK_T_FLUSH:
|
||||||
@ -330,12 +338,6 @@ void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *blk,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (blk->scsi) {
|
|
||||||
error_setg(errp,
|
|
||||||
"device is incompatible with x-data-plane, use scsi=off");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If dataplane is (re-)enabled while the guest is running there could be
|
/* If dataplane is (re-)enabled while the guest is running there could be
|
||||||
* block jobs that can conflict.
|
* block jobs that can conflict.
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user