OSDN Git Service

scsi: Fix scsi_req_cancel_async for no aiocb req
authorFam Zheng <famz@redhat.com>
Tue, 27 Jan 2015 09:16:59 +0000 (17:16 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 2 Feb 2015 15:55:11 +0000 (16:55 +0100)
scsi_req_cancel_complete is responsible for releasing the request, so we
shouldn't skip it in any case. This doesn't affect the only existing
caller, virtio-scsi, but is useful for other devices once they use it.

Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
hw/scsi/scsi-bus.c

index 9b740a3..db39ae0 100644 (file)
@@ -1756,6 +1756,8 @@ void scsi_req_cancel_async(SCSIRequest *req, Notifier *notifier)
     req->io_canceled = true;
     if (req->aiocb) {
         blk_aio_cancel_async(req->aiocb);
+    } else {
+        scsi_req_cancel_complete(req);
     }
 }