Il 24/09/2014 10:27, Fam Zheng ha scritto: > 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(-) >
I didn't review 5-7 yet, and they are more complicated so I'll start by applying the nice cleanup part (1-4). Thanks! Paolo