On Wed, Oct 08, 2014 at 01:18:04AM +0200, Paolo Bonzini wrote:
> Does this work:
> 
> diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c
> index 203e624..c6d4f2e 100644
> --- a/hw/scsi/virtio-scsi.c
> +++ b/hw/scsi/virtio-scsi.c
> @@ -545,11 +545,12 @@ bool virtio_scsi_handle_cmd_req_prepare(VirtIOSCSI *s, 
> VirtIOSCSIReq *req)
>  
>  void virtio_scsi_handle_cmd_req_submit(VirtIOSCSI *s, VirtIOSCSIReq *req)
>  {
> -    if (scsi_req_enqueue(req->sreq)) {
> -        scsi_req_continue(req->sreq);
> +    SCSIRequest *sreq = req->sreq;
> +    bdrv_io_unplug(sreq->dev->conf.bs);
> +    if (scsi_req_enqueue(sreq)) {
> +        scsi_req_continue(sreq);
>      }
> -    bdrv_io_unplug(req->sreq->dev->conf.bs);
> -    scsi_req_unref(req->sreq);
> +    scsi_req_unref(sreq);
>  }
>  
>  static void virtio_scsi_handle_cmd(VirtIODevice *vdev, VirtQueue *vq)
> 
> ?

Yes, that fixes it.

Tested-by: Richard W.M. Jones <rjo...@redhat.com>

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW

Reply via email to