]>
Commit | Line | Data |
---|---|---|
2cb7cef9 BS |
1 | Subject: Fixup command response translation |
2 | From: Brian King <brking@linux.vnet.ibm.com> | |
3 | References: 459383 - LTC50695 | |
4 | ||
5 | If a link down event is received, outstanding commands may get | |
6 | returned to the ibmvfc driver with a "transaction cancelled implicit" | |
7 | response. This is currently translated to DID_ABORT, which does | |
8 | not get retried by SCSI core, but rather passes the failure up | |
9 | the stack. This can result in I/O errors at the filesystem level. | |
10 | Fix up this response a well as a few other error responses. | |
11 | ||
12 | Signed-off-by: Brian King <brking@linux.vnet.ibm.com> | |
13 | Signed-off-by: Olaf Hering <olh@suse.de> | |
14 | --- | |
15 | ||
16 | drivers/scsi/ibmvscsi/ibmvfc.c | 10 +++++----- | |
17 | 1 file changed, 5 insertions(+), 5 deletions(-) | |
18 | ||
19 | --- a/drivers/scsi/ibmvscsi/ibmvfc.c | |
20 | +++ b/drivers/scsi/ibmvscsi/ibmvfc.c | |
21 | @@ -101,7 +101,7 @@ static const struct { | |
22 | { IBMVFC_FABRIC_MAPPED, IBMVFC_UNABLE_TO_ESTABLISH, DID_ERROR, 1, 1, "unable to establish" }, | |
23 | { IBMVFC_FABRIC_MAPPED, IBMVFC_XPORT_FAULT, DID_OK, 1, 0, "transport fault" }, | |
24 | { IBMVFC_FABRIC_MAPPED, IBMVFC_CMD_TIMEOUT, DID_TIME_OUT, 1, 1, "command timeout" }, | |
25 | - { IBMVFC_FABRIC_MAPPED, IBMVFC_ENETDOWN, DID_NO_CONNECT, 1, 1, "network down" }, | |
26 | + { IBMVFC_FABRIC_MAPPED, IBMVFC_ENETDOWN, DID_TRANSPORT_DISRUPTED, 1, 1, "network down" }, | |
27 | { IBMVFC_FABRIC_MAPPED, IBMVFC_HW_FAILURE, DID_ERROR, 1, 1, "hardware failure" }, | |
28 | { IBMVFC_FABRIC_MAPPED, IBMVFC_LINK_DOWN_ERR, DID_REQUEUE, 0, 0, "link down" }, | |
29 | { IBMVFC_FABRIC_MAPPED, IBMVFC_LINK_DEAD_ERR, DID_ERROR, 0, 0, "link dead" }, | |
30 | @@ -115,11 +115,11 @@ static const struct { | |
31 | ||
32 | { IBMVFC_VIOS_FAILURE, IBMVFC_CRQ_FAILURE, DID_REQUEUE, 1, 1, "CRQ failure" }, | |
33 | { IBMVFC_VIOS_FAILURE, IBMVFC_SW_FAILURE, DID_ERROR, 0, 1, "software failure" }, | |
34 | - { IBMVFC_VIOS_FAILURE, IBMVFC_INVALID_PARAMETER, DID_ABORT, 0, 1, "invalid parameter" }, | |
35 | - { IBMVFC_VIOS_FAILURE, IBMVFC_MISSING_PARAMETER, DID_ABORT, 0, 1, "missing parameter" }, | |
36 | + { IBMVFC_VIOS_FAILURE, IBMVFC_INVALID_PARAMETER, DID_ERROR, 0, 1, "invalid parameter" }, | |
37 | + { IBMVFC_VIOS_FAILURE, IBMVFC_MISSING_PARAMETER, DID_ERROR, 0, 1, "missing parameter" }, | |
38 | { IBMVFC_VIOS_FAILURE, IBMVFC_HOST_IO_BUS, DID_ERROR, 1, 1, "host I/O bus failure" }, | |
39 | - { IBMVFC_VIOS_FAILURE, IBMVFC_TRANS_CANCELLED, DID_ABORT, 0, 1, "transaction cancelled" }, | |
40 | - { IBMVFC_VIOS_FAILURE, IBMVFC_TRANS_CANCELLED_IMPLICIT, DID_ABORT, 0, 1, "transaction cancelled implicit" }, | |
41 | + { IBMVFC_VIOS_FAILURE, IBMVFC_TRANS_CANCELLED, DID_ERROR, 0, 1, "transaction cancelled" }, | |
42 | + { IBMVFC_VIOS_FAILURE, IBMVFC_TRANS_CANCELLED_IMPLICIT, DID_ERROR, 0, 1, "transaction cancelled implicit" }, | |
43 | { IBMVFC_VIOS_FAILURE, IBMVFC_INSUFFICIENT_RESOURCE, DID_REQUEUE, 1, 1, "insufficient resources" }, | |
44 | { IBMVFC_VIOS_FAILURE, IBMVFC_PLOGI_REQUIRED, DID_ERROR, 0, 1, "port login required" }, | |
45 | { IBMVFC_VIOS_FAILURE, IBMVFC_COMMAND_FAILED, DID_ERROR, 1, 1, "command failed" }, |