Commit 488eef2f authored by Paolo Bonzini's avatar Paolo Bonzini
Browse files

scsi: fix cancellation when I/O was completed but DMA was not.



Commit d5776465 (scsi: Introduce scsi_req_cancel_complete, 2014-09-25)
was supposed to have no semantic change, but it missed a case.  When
r->aiocb has already been NULLed, but DMA was not complete and the
SCSI layer was waiting for scsi_req_continue, after the patch the
SCSI layer will not call the .cancel callback of SCSIBusInfo.

Fixes: d5776465
Cc: qemu-stable@nongnu.org
Reported-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
Tested-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: default avatarFam Zheng <famz@redhat.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent c88f68ec
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1770,6 +1770,8 @@ void scsi_req_cancel(SCSIRequest *req)
    req->io_canceled = true;
    if (req->aiocb) {
        blk_aio_cancel(req->aiocb);
    } else {
        scsi_req_cancel_complete(req);
    }
}