When a command is aborted it might already have the DID_TIME_OUT
status set, so we shouldn't be overwriting that.

Signed-off-by: Hannes Reinecke <h...@suse.com>
Acked-by: Johannes Thumshirn <j...@kernel.org>
---
 drivers/scsi/libfc/fc_fcp.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/libfc/fc_fcp.c b/drivers/scsi/libfc/fc_fcp.c
index 10faca2..0e2a201 100644
--- a/drivers/scsi/libfc/fc_fcp.c
+++ b/drivers/scsi/libfc/fc_fcp.c
@@ -2008,9 +2008,15 @@ static void fc_io_compl(struct fc_fcp_pkt *fsp)
                sc_cmd->result = (DID_ERROR << 16) | fsp->cdb_status;
                break;
        case FC_CMD_ABORTED:
-               FC_FCP_DBG(fsp, "Returning DID_ERROR to scsi-ml "
-                         "due to FC_CMD_ABORTED\n");
-               sc_cmd->result = (DID_ERROR << 16) | fsp->io_status;
+               if (host_byte(sc_cmd->result) == DID_TIME_OUT)
+                       FC_FCP_DBG(fsp, "Returning DID_TIME_OUT to scsi-ml "
+                                  "due to FC_CMD_ABORTED\n");
+               else {
+                       FC_FCP_DBG(fsp, "Returning DID_ERROR to scsi-ml "
+                                  "due to FC_CMD_ABORTED\n");
+                       set_host_byte(sc_cmd, DID_ERROR);
+               }
+               sc_cmd->result |= fsp->io_status;
                break;
        case FC_CMD_RESET:
                FC_FCP_DBG(fsp, "Returning DID_RESET to scsi-ml "
-- 
1.8.5.6

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to