From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34256) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W36gC-0003le-Hi for qemu-devel@nongnu.org; Tue, 14 Jan 2014 11:17:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W36g3-0001IB-KR for qemu-devel@nongnu.org; Tue, 14 Jan 2014 11:17:28 -0500 Received: from e35.co.us.ibm.com ([32.97.110.153]:55332) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W36g3-0001Hv-6b for qemu-devel@nongnu.org; Tue, 14 Jan 2014 11:17:19 -0500 Received: from /spool/local by e35.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 14 Jan 2014 09:17:18 -0700 Received: from b03cxnp08025.gho.boulder.ibm.com (b03cxnp08025.gho.boulder.ibm.com [9.17.130.17]) by d03dlp03.boulder.ibm.com (Postfix) with ESMTP id B044619D8042 for ; Tue, 14 Jan 2014 09:17:06 -0700 (MST) Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by b03cxnp08025.gho.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id s0EGFc8O7733700 for ; Tue, 14 Jan 2014 17:17:15 +0100 Received: from d03av02.boulder.ibm.com (localhost [127.0.0.1]) by d03av02.boulder.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id s0EG82Aa009376 for ; Tue, 14 Jan 2014 09:08:02 -0700 Message-ID: <52D560E0.8070600@linux.vnet.ibm.com> Date: Tue, 14 Jan 2014 11:08:00 -0500 From: Eric Farman 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> <52D54E78.9040805@redhat.com> In-Reply-To: <52D54E78.9040805@redhat.com> Content-Type: text/plain; charset=ISO-8859-15; format=flowed 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: Paolo Bonzini Cc: qemu-devel@nongnu.org On 01/14/2014 09:49 AM, Paolo Bonzini wrote: > 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? Heh, that's fantastic. I pulled patch 1 out, ran the tests that hit into these problems, didn't see anything. Pulled out patch 2, reran the tests, hit them almost immediately. Did this a few times, with the same results. So I'll fix up another series, and post shortly. Thanks for the feedback and the review! - Eric > > Thanks! > > Paolo >