lpfc 8.3.7: Fix SCSI protocol related errors.
Subsystems (2)
PATCH 4/6 lpfc 8.3.7: Fix SCSI protocol related errors.
Fix SCSI protocol related errors:
- Avoid I/O failures during EEH and HBA/CNA reset by correcting when we block the targets on the adapter.
Signed-off-by James Smart <[email protected]>
---
drivers/scsi/lpfc/lpfc_hbadisc.c | 4 ++++ drivers/scsi/lpfc/lpfc_init.c | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-)
drivers/scsi/lpfc/lpfc_hbadisc.c +4 -0
@@ -747,6 +747,10 @@ lpfc_linkdown(struct lpfc_hba *phba)if (phba->link_state ==LPFC_LINK_DOWN )return 0 ; + +/* Block all SCSI stack I/Os */ +lpfc_scsi_dev_block (phba); +spin_lock_irq (&phba->hbalock); phba->fcf.fcf_flag &= ~(FCF_AVAILABLE |FCF_DISCOVERED );if (phba->link_state >LPFC_LINK_DOWN ) {
drivers/scsi/lpfc/lpfc_init.c +3 -2
@@ -7226,8 +7226,6 @@ lpfc_prep_dev_for_perm_failure(struct lpfc_hba *phba) {lpfc_printf_log (phba,KERN_ERR ,LOG_INIT ,"2711 PCI channel permanent disable for failure\n" ); -/* Block all SCSI devices' I/Os on the host */ -lpfc_scsi_dev_block (phba);/* Clean up all driver's outstanding SCSI I/Os */ lpfc_sli_flush_fcp_rings (phba); }
@@ -7256,6 +7254,9 @@ lpfc_io_error_detected_s3(struct pci_dev *pdev, pci_channel_state_t state)struct Scsi_Host *shost =pci_get_drvdata (pdev);struct lpfc_hba *phba = ((struct lpfc_vport *)shost->hostdata)->phba; +/* Block all SCSI devices' I/Os on the host */ +lpfc_scsi_dev_block (phba); +switch (state) {case pci_channel_io_normal:/* Non-fatal error, prepare for recovery */
Signature · 1 line
1.6.5.2