aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi/zfcp_fsf.c
diff options
context:
space:
mode:
authorAndreas Herrmann <aherrman@de.ibm.com>2006-09-18 16:29:20 -0400
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2006-09-23 19:00:56 -0400
commit4eff4a36516d72e4f6ede901141214a7e05607e7 (patch)
treeb6a775ee5acbfdc91a349fc69580031e17276768 /drivers/s390/scsi/zfcp_fsf.c
parentdd52e0eaf891cd85bf2ca057c15ed6bfd76db4e6 (diff)
[SCSI] zfcp: fix: use correct req_id in eh_abort_handler
zfcp's eh_abort_handler used the wrong request ID to identify the request to be aborted. The bug was introduced with commit fea9d6c7bcd8ff1d60ff74f27ba483b3820b18a3 for improved management of request IDs. The bug is fixed with this patch. Signed-off-by: Andreas Herrmann <aherrman@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/s390/scsi/zfcp_fsf.c')
-rw-r--r--drivers/s390/scsi/zfcp_fsf.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c
index 4913ffbb2fc..a66b5193b70 100644
--- a/drivers/s390/scsi/zfcp_fsf.c
+++ b/drivers/s390/scsi/zfcp_fsf.c
@@ -3527,7 +3527,7 @@ zfcp_fsf_send_fcp_command_task(struct zfcp_adapter *adapter,
3527 fsf_req->unit = unit; 3527 fsf_req->unit = unit;
3528 3528
3529 /* associate FSF request with SCSI request (for look up on abort) */ 3529 /* associate FSF request with SCSI request (for look up on abort) */
3530 scsi_cmnd->host_scribble = (char *) fsf_req; 3530 scsi_cmnd->host_scribble = (unsigned char *) fsf_req->req_id;
3531 3531
3532 /* associate SCSI command with FSF request */ 3532 /* associate SCSI command with FSF request */
3533 fsf_req->data = (unsigned long) scsi_cmnd; 3533 fsf_req->data = (unsigned long) scsi_cmnd;
@@ -4667,7 +4667,6 @@ zfcp_fsf_req_create(struct zfcp_adapter *adapter, u32 fsf_cmd, int req_flags,
4667{ 4667{
4668 volatile struct qdio_buffer_element *sbale; 4668 volatile struct qdio_buffer_element *sbale;
4669 struct zfcp_fsf_req *fsf_req = NULL; 4669 struct zfcp_fsf_req *fsf_req = NULL;
4670 unsigned long flags;
4671 int ret = 0; 4670 int ret = 0;
4672 struct zfcp_qdio_queue *req_queue = &adapter->request_queue; 4671 struct zfcp_qdio_queue *req_queue = &adapter->request_queue;
4673 4672
@@ -4684,10 +4683,10 @@ zfcp_fsf_req_create(struct zfcp_adapter *adapter, u32 fsf_cmd, int req_flags,
4684 fsf_req->fsf_command = fsf_cmd; 4683 fsf_req->fsf_command = fsf_cmd;
4685 INIT_LIST_HEAD(&fsf_req->list); 4684 INIT_LIST_HEAD(&fsf_req->list);
4686 4685
4687 /* unique request id */ 4686 /* this is serialized (we are holding req_queue-lock of adapter */
4688 spin_lock_irqsave(&adapter->req_list_lock, flags); 4687 if (adapter->req_no == 0)
4688 adapter->req_no++;
4689 fsf_req->req_id = adapter->req_no++; 4689 fsf_req->req_id = adapter->req_no++;
4690 spin_unlock_irqrestore(&adapter->req_list_lock, flags);
4691 4690
4692 zfcp_fsf_req_qtcb_init(fsf_req); 4691 zfcp_fsf_req_qtcb_init(fsf_req);
4693 4692