From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42514) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W35JG-0006Dk-WB for qemu-devel@nongnu.org; Tue, 14 Jan 2014 09:49:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W35JB-0008Um-0t for qemu-devel@nongnu.org; Tue, 14 Jan 2014 09:49:42 -0500 Received: from mx1.redhat.com ([209.132.183.28]:38015) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W35J7-0008UN-Qr for qemu-devel@nongnu.org; Tue, 14 Jan 2014 09:49:36 -0500 Message-ID: <52D54E78.9040805@redhat.com> Date: Tue, 14 Jan 2014 15:49:28 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <1389709469-15111-1-git-send-email-farman@linux.vnet.ibm.com> <1389709469-15111-3-git-send-email-farman@linux.vnet.ibm.com> In-Reply-To: <1389709469-15111-3-git-send-email-farman@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 2/3] scsi/virtio-scsi: Cleanup of I/Os that never started List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Farman Cc: qemu-devel@nongnu.org Il 14/01/2014 15:24, Eric Farman ha scritto: > There is still a small window that occurs when a cancel I/O affects > an asynchronous I/O operation that hasn't started. In other words, > when the residual data length equals the expected data length. > > Today, the routine virtio_scsi_command_complete fails because the > VirtIOSCSIReq pointer (from the hba_private field in SCSIRequest) > was cleared earlier when virtio_scsi_complete_req was called by > the virtio_scsi_request_cancelled routine. As a result, the > virtio_scsi_command_complete routine needs to simply return when > it is processing a SCSIRequest block that was marked canceled. > > Signed-off-by: Eric Farman > --- > hw/scsi/virtio-scsi.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c > index a8fde04..49a9576 100644 > --- a/hw/scsi/virtio-scsi.c > +++ b/hw/scsi/virtio-scsi.c > @@ -306,6 +306,10 @@ static void virtio_scsi_command_complete(SCSIRequest *r, uint32_t status, > VirtIOSCSIReq *req = r->hba_private; > uint32_t sense_len; > > + if (r->io_canceled) { > + return; > + } > + > req->resp.cmd->response = VIRTIO_SCSI_S_OK; > req->resp.cmd->status = status; > if (req->resp.cmd->status == GOOD) { > Reviewed-by: Paolo Bonzini Can you please look more closely into whether patch 1 is really necessary, include the small fix I posted into that review, and post v2 of the series? Thanks! Paolo