aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx
diff options
context:
space:
mode:
authorGiridhar Malavali <giridhar.malavali@qlogic.com>2010-09-03 18:20:55 -0400
committerJames Bottomley <James.Bottomley@suse.de>2010-09-05 14:36:21 -0400
commit3fadb80b0f39b193caafeed615a219aae57279fe (patch)
tree875f9bbc7011147845be457c7cd7c6fa42101c5e /drivers/scsi/qla2xxx
parentb1d46989c12ec4d93f274ca8378bb1a6014d244a (diff)
[SCSI] qla2xxx: Clear local references of rport on device loss timeout notification from FC transport.
The clearing of local references to rport was blocked when abort is active. This code clears the local references unconditionaly upon device loss timeout callback from FC transport. Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/qla2xxx')
-rw-r--r--drivers/scsi/qla2xxx/qla_attr.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
index 560641aa3a5c..c9781050c9ed 100644
--- a/drivers/scsi/qla2xxx/qla_attr.c
+++ b/drivers/scsi/qla2xxx/qla_attr.c
@@ -1547,22 +1547,22 @@ qla2x00_dev_loss_tmo_callbk(struct fc_rport *rport)
1547 if (!fcport) 1547 if (!fcport)
1548 return; 1548 return;
1549 1549
1550 if (test_bit(ABORT_ISP_ACTIVE, &fcport->vha->dpc_flags))
1551 return;
1552
1553 if (unlikely(pci_channel_offline(fcport->vha->hw->pdev))) {
1554 qla2x00_abort_all_cmds(fcport->vha, DID_NO_CONNECT << 16);
1555 return;
1556 }
1557
1558 /* 1550 /*
1559 * Transport has effectively 'deleted' the rport, clear 1551 * Transport has effectively 'deleted' the rport, clear
1560 * all local references. 1552 * all local references.
1561 */ 1553 */
1562 spin_lock_irq(host->host_lock); 1554 spin_lock_irq(host->host_lock);
1563 fcport->rport = NULL; 1555 fcport->rport = fcport->drport = NULL;
1564 *((fc_port_t **)rport->dd_data) = NULL; 1556 *((fc_port_t **)rport->dd_data) = NULL;
1565 spin_unlock_irq(host->host_lock); 1557 spin_unlock_irq(host->host_lock);
1558
1559 if (test_bit(ABORT_ISP_ACTIVE, &fcport->vha->dpc_flags))
1560 return;
1561
1562 if (unlikely(pci_channel_offline(fcport->vha->hw->pdev))) {
1563 qla2x00_abort_all_cmds(fcport->vha, DID_NO_CONNECT << 16);
1564 return;
1565 }
1566} 1566}
1567 1567
1568static void 1568static void