[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 31/39] scsi: Drop scsi_req_abort
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 31/39] scsi: Drop scsi_req_abort |
Date: |
Tue, 30 Sep 2014 14:25:11 +0200 |
From: Fam Zheng <address@hidden>
The only user of this function is spapr_vscsi.c. We can convert to
scsi_req_cancel plus adding a check in vscsi_request_cancelled.
Suggested-by: Paolo Bonzini <address@hidden>
Signed-off-by: Fam Zheng <address@hidden>
[Drop prototype. - Paolo]
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/scsi/scsi-bus.c | 15 ---------------
hw/scsi/spapr_vscsi.c | 13 ++++++++++---
include/hw/scsi/scsi.h | 1 -
3 files changed, 10 insertions(+), 19 deletions(-)
diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c
index af293b5..f90a204 100644
--- a/hw/scsi/scsi-bus.c
+++ b/hw/scsi/scsi-bus.c
@@ -1736,21 +1736,6 @@ void scsi_req_cancel(SCSIRequest *req)
scsi_req_unref(req);
}
-void scsi_req_abort(SCSIRequest *req, int status)
-{
- if (!req->enqueued) {
- return;
- }
- scsi_req_ref(req);
- scsi_req_dequeue(req);
- req->io_canceled = true;
- if (req->ops->cancel_io) {
- req->ops->cancel_io(req);
- }
- scsi_req_complete(req, status);
- scsi_req_unref(req);
-}
-
static int scsi_ua_precedence(SCSISense sense)
{
if (sense.key != UNIT_ATTENTION) {
diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c
index 048cfc7..20b20f0 100644
--- a/hw/scsi/spapr_vscsi.c
+++ b/hw/scsi/spapr_vscsi.c
@@ -77,8 +77,9 @@ typedef struct vscsi_req {
SCSIRequest *sreq;
uint32_t qtag; /* qemu tag != srp tag */
bool active;
- uint32_t data_len;
bool writing;
+ bool dma_error;
+ uint32_t data_len;
uint32_t senselen;
uint8_t sense[SCSI_SENSE_BUF_SIZE];
@@ -536,8 +537,8 @@ static void vscsi_transfer_data(SCSIRequest *sreq, uint32_t
len)
}
if (rc < 0) {
fprintf(stderr, "VSCSI: RDMA error rc=%d!\n", rc);
- vscsi_makeup_sense(s, req, HARDWARE_ERROR, 0, 0);
- scsi_req_abort(req->sreq, CHECK_CONDITION);
+ req->dma_error = true;
+ scsi_req_cancel(req->sreq);
return;
}
@@ -591,6 +592,12 @@ static void vscsi_request_cancelled(SCSIRequest *sreq)
{
vscsi_req *req = sreq->hba_private;
+ if (req->dma_error) {
+ VSCSIState *s = VIO_SPAPR_VSCSI_DEVICE(sreq->bus->qbus.parent);
+
+ vscsi_makeup_sense(s, req, HARDWARE_ERROR, 0, 0);
+ vscsi_send_rsp(s, req, CHECK_CONDITION, 0, 0);
+ }
vscsi_put_req(req);
}
diff --git a/include/hw/scsi/scsi.h b/include/hw/scsi/scsi.h
index 6271ad3..169e8df 100644
--- a/include/hw/scsi/scsi.h
+++ b/include/hw/scsi/scsi.h
@@ -265,7 +265,6 @@ void scsi_req_data(SCSIRequest *req, int len);
void scsi_req_complete(SCSIRequest *req, int status);
uint8_t *scsi_req_get_buf(SCSIRequest *req);
int scsi_req_get_sense(SCSIRequest *req, uint8_t *buf, int len);
-void scsi_req_abort(SCSIRequest *req, int status);
void scsi_req_cancel(SCSIRequest *req);
void scsi_req_retry(SCSIRequest *req);
void scsi_device_purge_requests(SCSIDevice *sdev, SCSISense sense);
--
1.8.3.1
- [Qemu-devel] [PULL 21/39] virtio: add a wrapper for virtio-backend initialization, (continued)
- [Qemu-devel] [PULL 21/39] virtio: add a wrapper for virtio-backend initialization, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 23/39] virtio-scsi: Add VirtIOSCSIVring in VirtIOSCSIReq, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 22/39] virtio-scsi: Add 'iothread' property to virtio-scsi, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 24/39] virtio-scsi-dataplane: Code to run virtio-scsi on iothread, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 25/39] virtio-scsi: Hook up with dataplane, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 26/39] virtio-scsi: Add migration state notifier for dataplane code, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 27/39] virtio-scsi: Two stages processing of cmd request, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 28/39] virtio-scsi: Batched prepare for cmd reqs, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 29/39] virtio-scsi: Call bdrv_io_plug/bdrv_io_unplug in cmd request handling, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 30/39] virtio-scsi: Process ".iothread" property, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 31/39] scsi: Drop scsi_req_abort,
Paolo Bonzini <=
- [Qemu-devel] [PULL 33/39] scsi: Unify request unref in scsi_req_cancel, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 32/39] scsi-generic: Handle canceled request in scsi_command_complete, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 34/39] scsi: Drop SCSIReqOps.cancel_io, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 35/39] scsi: Introduce scsi_req_cancel_complete, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 38/39] util: introduce bitmap_try_new, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 39/39] block/iscsi: handle failure on malloc of the allocationmap, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 36/39] scsi: Introduce scsi_req_cancel_async, Paolo Bonzini, 2014/09/30
- [Qemu-devel] [PULL 37/39] virtio-scsi: Handle TMF request cancellation asynchronously, Paolo Bonzini, 2014/09/30
- Re: [Qemu-devel] [PULL 00/39] SCSI changes for 2014-09-23, Peter Maydell, 2014/09/30