qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v2 0/7] virtio-scsi: Asynchronous cancellation


From: Fam Zheng
Subject: [Qemu-devel] [PATCH v2 0/7] virtio-scsi: Asynchronous cancellation
Date: Wed, 24 Sep 2014 16:27:51 +0800

v2: Address Paolo's comments:
    - Drop scsi_req_abort.
    - Split patch 1.
    - Use NotifierList.
    - Track the number of cancelled requests in virtio-scsi.

This series changes VIRTIO_SCSI_T_TMF_ABORT_TASK and
VIRTIO_SCSI_T_TMF_ABORT_TASK_SET emulation to asynchronous by making use of
bdrv_aio_cancel_async.

Before, when guest cancels a SCSI command, we use a nested poll loop to wait
until the request is cancelled or completed before returning. This blocks the
whole vm and makes the guest unresponsive if the backend block device takes
time to complete it, possibly because of slow IO, throttling, network issue,
etc..

Now we return to the guest to allow vcpus to run before completing the TMF, and
only after all the requests have been canceled, we notify the guest about the
completing of the TMF command.



Fam Zheng (7):
  scsi: Drop scsi_req_abort
  scsi-generic: Handle canceled request in scsi_command_complete
  scsi-bus: Unify request unref in scsi_req_cancel
  scsi: Drop SCSIReqOps.cancel_io
  scsi: Introduce scsi_req_canceled
  scsi: Introduce scsi_req_cancel_async
  virtio-scsi: Handle TMF request cancellation asynchronously

 hw/scsi/scsi-bus.c     | 48 +++++++++++++++++++----------
 hw/scsi/scsi-disk.c    | 59 ++++++++++-------------------------
 hw/scsi/scsi-generic.c | 37 ++++++----------------
 hw/scsi/spapr_vscsi.c  | 11 +++++--
 hw/scsi/virtio-scsi.c  | 84 +++++++++++++++++++++++++++++++++++++++++++++-----
 include/hw/scsi/scsi.h |  5 ++-
 6 files changed, 146 insertions(+), 98 deletions(-)

-- 
1.9.3




reply via email to

[Prev in Thread] Current Thread [Next in Thread]