Commit a88dbb6a authored by James Smart's avatar James Smart Committed by James Bottomley

[SCSI] lpfc 8.3.39: Fixed not returning FAILED status when SCSI invoking host reset handler failed

Signed-off-by: default avatarJames Smart <james.smart@emulex.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent 711ea882
...@@ -470,3 +470,4 @@ int lpfc_sli4_xri_sgl_update(struct lpfc_hba *); ...@@ -470,3 +470,4 @@ int lpfc_sli4_xri_sgl_update(struct lpfc_hba *);
void lpfc_free_sgl_list(struct lpfc_hba *, struct list_head *); void lpfc_free_sgl_list(struct lpfc_hba *, struct list_head *);
uint32_t lpfc_sli_port_speed_get(struct lpfc_hba *); uint32_t lpfc_sli_port_speed_get(struct lpfc_hba *);
int lpfc_sli4_request_firmware_update(struct lpfc_hba *, uint8_t); int lpfc_sli4_request_firmware_update(struct lpfc_hba *, uint8_t);
void lpfc_sli4_offline_eratt(struct lpfc_hba *);
...@@ -1202,7 +1202,7 @@ lpfc_offline_eratt(struct lpfc_hba *phba) ...@@ -1202,7 +1202,7 @@ lpfc_offline_eratt(struct lpfc_hba *phba)
* This routine is called to bring a SLI4 HBA offline when HBA hardware error * This routine is called to bring a SLI4 HBA offline when HBA hardware error
* other than Port Error 6 has been detected. * other than Port Error 6 has been detected.
**/ **/
static void void
lpfc_sli4_offline_eratt(struct lpfc_hba *phba) lpfc_sli4_offline_eratt(struct lpfc_hba *phba)
{ {
lpfc_offline_prep(phba, LPFC_MBX_NO_WAIT); lpfc_offline_prep(phba, LPFC_MBX_NO_WAIT);
......
...@@ -5376,16 +5376,24 @@ lpfc_host_reset_handler(struct scsi_cmnd *cmnd) ...@@ -5376,16 +5376,24 @@ lpfc_host_reset_handler(struct scsi_cmnd *cmnd)
struct lpfc_hba *phba = vport->phba; struct lpfc_hba *phba = vport->phba;
int rc, ret = SUCCESS; int rc, ret = SUCCESS;
lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
"3172 SCSI layer issued Host Reset Data:\n");
lpfc_offline_prep(phba, LPFC_MBX_WAIT); lpfc_offline_prep(phba, LPFC_MBX_WAIT);
lpfc_offline(phba); lpfc_offline(phba);
rc = lpfc_sli_brdrestart(phba); rc = lpfc_sli_brdrestart(phba);
if (rc) if (rc)
ret = FAILED; ret = FAILED;
lpfc_online(phba); rc = lpfc_online(phba);
if (rc)
ret = FAILED;
lpfc_unblock_mgmt_io(phba); lpfc_unblock_mgmt_io(phba);
lpfc_printf_log(phba, KERN_ERR, LOG_FCP, if (ret == FAILED) {
"3172 SCSI layer issued Host Reset Data: x%x\n", ret); lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
"3323 Failed host reset, bring it offline\n");
lpfc_sli4_offline_eratt(phba);
}
return ret; return ret;
} }
......
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