Commit 50119dad authored by Brian King's avatar Brian King Committed by James Bottomley

[SCSI] ibmvfc: Fix error reporting for some FC errors

If either a "transport fault" or a "general transport" error is received
and no other error information is available, the command is improperly
returned as successful. Fix this to return DID_ERROR in this case.
Signed-off-by: default avatarBrian King <brking@linux.vnet.ibm.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
parent 596891ac
...@@ -278,13 +278,6 @@ static int ibmvfc_get_err_result(struct ibmvfc_cmd *vfc_cmd) ...@@ -278,13 +278,6 @@ static int ibmvfc_get_err_result(struct ibmvfc_cmd *vfc_cmd)
rsp->data.info.rsp_code)) rsp->data.info.rsp_code))
return DID_ERROR << 16; return DID_ERROR << 16;
if (!vfc_cmd->status) {
if (rsp->flags & FCP_RESID_OVER)
return rsp->scsi_status | (DID_ERROR << 16);
else
return rsp->scsi_status | (DID_OK << 16);
}
err = ibmvfc_get_err_index(vfc_cmd->status, vfc_cmd->error); err = ibmvfc_get_err_index(vfc_cmd->status, vfc_cmd->error);
if (err >= 0) if (err >= 0)
return rsp->scsi_status | (cmd_status[err].result << 16); return rsp->scsi_status | (cmd_status[err].result << 16);
...@@ -1478,6 +1471,9 @@ static void ibmvfc_scsi_done(struct ibmvfc_event *evt) ...@@ -1478,6 +1471,9 @@ static void ibmvfc_scsi_done(struct ibmvfc_event *evt)
if ((rsp->flags & FCP_SNS_LEN_VALID) && rsp->fcp_sense_len && rsp_len <= 8) if ((rsp->flags & FCP_SNS_LEN_VALID) && rsp->fcp_sense_len && rsp_len <= 8)
memcpy(cmnd->sense_buffer, rsp->data.sense + rsp_len, sense_len); memcpy(cmnd->sense_buffer, rsp->data.sense + rsp_len, sense_len);
if (!cmnd->result && (!scsi_get_resid(cmnd) || (rsp->flags & FCP_RESID_OVER)))
cmnd->result = (DID_ERROR << 16);
ibmvfc_log_error(evt); ibmvfc_log_error(evt);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment