]>
Commit | Line | Data |
---|---|---|
2cb7cef9 BS |
1 | From: Gerald Schaefer <geraldsc@de.ibm.com> |
2 | Subject: zfcp: prevent double decrement on host_busy counter | |
3 | References: bnc#445100 | |
4 | ||
5 | Symptom: SCSI host hangs | |
6 | Problem: double finish triggerd for one request | |
7 | Solution: respond, act according to SCSI_mid_low API | |
8 | ||
9 | The zfcp_scsi_queuecommand was not acting according to the standard | |
10 | when respective unit was not available. In this case an -EBUSY was | |
11 | returned, which is not valid in itself, and in addition scsi_done | |
12 | was called. This combination is not allowed and was leading to a | |
13 | double finish of the request and therefor double decrement of the | |
14 | host_busy counter. | |
15 | ||
16 | Signed-off-by: Swen Schillig <swen@vnet.ibm.com> | |
17 | Acked-by: John Jolly <jjolly@suse.de> | |
18 | --- | |
19 | drivers/s390/scsi/zfcp_scsi.c | 2 +- | |
20 | 1 file changed, 1 insertion(+), 1 deletion(-) | |
21 | ||
22 | Index: linux-sles11/drivers/s390/scsi/zfcp_scsi.c | |
23 | =================================================================== | |
24 | --- linux-sles11.orig/drivers/s390/scsi/zfcp_scsi.c | |
25 | +++ linux-sles11/drivers/s390/scsi/zfcp_scsi.c | |
26 | @@ -90,7 +90,7 @@ static int zfcp_scsi_queuecommand(struct | |
27 | ret = zfcp_fsf_send_fcp_command_task(adapter, unit, scpnt, 0, | |
28 | ZFCP_REQ_AUTO_CLEANUP); | |
29 | if (unlikely(ret == -EBUSY)) | |
30 | - zfcp_scsi_command_fail(scpnt, DID_NO_CONNECT); | |
31 | + return SCSI_MLQUEUE_DEVICE_BUSY; | |
32 | else if (unlikely(ret < 0)) | |
33 | return SCSI_MLQUEUE_HOST_BUSY; | |
34 |