[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-stable] [PATCH 44/51] virtio-scsi: Cleanup of I/Os that never star
From: |
Michael Roth |
Subject: |
[Qemu-stable] [PATCH 44/51] virtio-scsi: Cleanup of I/Os that never started |
Date: |
Fri, 21 Feb 2014 02:17:20 -0600 |
From: Eric Farman <address@hidden>
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 <address@hidden>
Cc: address@hidden
Signed-off-by: Paolo Bonzini <address@hidden>
(cherry picked from commit e9c0f0f58ad0a41c3c4b19e1911cfe095afc09ca)
Signed-off-by: Michael Roth <address@hidden>
---
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 83344ea..5e524b2 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) {
--
1.7.9.5
- [Qemu-stable] [PATCH 33/51] hpet: fix build with CONFIG_HPET off, (continued)
- [Qemu-stable] [PATCH 33/51] hpet: fix build with CONFIG_HPET off, Michael Roth, 2014/02/21
- [Qemu-stable] [PATCH 35/51] qemu_opts_parse(): always check return value, Michael Roth, 2014/02/21
- [Qemu-stable] [PATCH 38/51] mainstone: Fix duplicate array values for key 'space', Michael Roth, 2014/02/21
- [Qemu-stable] [PATCH 36/51] s390x/kvm: Fix diagnose handling., Michael Roth, 2014/02/21
- [Qemu-stable] [PATCH 37/51] seccomp: exit if seccomp_init() fails, Michael Roth, 2014/02/21
- [Qemu-stable] [PATCH 39/51] migration: qmp_migrate(): keep working after syntax error, Michael Roth, 2014/02/21
- [Qemu-stable] [PATCH 40/51] vfio-pci: Release all MSI-X vectors when disabled, Michael Roth, 2014/02/21
- [Qemu-stable] [PATCH 41/51] block/curl: Implement the libcurl timer callback interface, Michael Roth, 2014/02/21
- [Qemu-stable] [PATCH 43/51] scsi: Assign cancel_io vector for scsi_disk_emulate_ops, Michael Roth, 2014/02/21
- [Qemu-stable] [PATCH 42/51] scsi: Support TEST UNIT READY in the dummy LUN0, Michael Roth, 2014/02/21
- [Qemu-stable] [PATCH 44/51] virtio-scsi: Cleanup of I/Os that never started,
Michael Roth <=
- [Qemu-stable] [PATCH 45/51] virtio-scsi: Prevent assertion on missed events, Michael Roth, 2014/02/21
- [Qemu-stable] [PATCH 47/51] i386: Add missing include file for QEMU_PACKED, Michael Roth, 2014/02/21
- [Qemu-stable] [PATCH 46/51] KVM: Retry KVM_CREATE_VM on EINTR, Michael Roth, 2014/02/21
- [Qemu-stable] [PATCH 48/51] linux-user: Fix trampoline code for CRIS, Michael Roth, 2014/02/21
- [Qemu-stable] [PATCH 50/51] memory: fix limiting of translation at a page boundary, Michael Roth, 2014/02/21
- [Qemu-stable] [PATCH 51/51] tcg-arm: The shift count of op_rotl_i32 is in args[2] not args[1]., Michael Roth, 2014/02/21
- Re: [Qemu-stable] Patch Round-up for stable 1.7.1, freeze on 2013-02-27, Paolo Bonzini, 2014/02/21
- Re: [Qemu-stable] Patch Round-up for stable 1.7.1, freeze on 2013-02-27, Legorol, 2014/02/21
- [Qemu-stable] [PATCH 30/51] linux-user: create target_structs header to place ipc_perm and shmid_ds, Michael Roth, 2014/02/21