aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_os.c
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2009-08-25 14:36:20 -0400
committerJames Bottomley <James.Bottomley@suse.de>2009-09-12 10:35:23 -0400
commit67becc0041615651b75e4496204a0835a8c345a8 (patch)
treea03de7a630d47c692196a18cf1e71c4bde282c21 /drivers/scsi/qla2xxx/qla_os.c
parent0d6e61bc6a4f3f54444b088ae6d447f1703a21dd (diff)
[SCSI] qla2xxx: Properly delete rports attached to a vport.
Original code would inadvertently skip the deferred fc_remote_port_delete() call for rports hanging off any vport. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_os.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 210229019588..b79fca7d461b 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -2181,17 +2181,19 @@ qla2x00_schedule_rport_del(struct scsi_qla_host *vha, fc_port_t *fcport,
2181 int defer) 2181 int defer)
2182{ 2182{
2183 struct fc_rport *rport; 2183 struct fc_rport *rport;
2184 scsi_qla_host_t *base_vha;
2184 2185
2185 if (!fcport->rport) 2186 if (!fcport->rport)
2186 return; 2187 return;
2187 2188
2188 rport = fcport->rport; 2189 rport = fcport->rport;
2189 if (defer) { 2190 if (defer) {
2191 base_vha = pci_get_drvdata(vha->hw->pdev);
2190 spin_lock_irq(vha->host->host_lock); 2192 spin_lock_irq(vha->host->host_lock);
2191 fcport->drport = rport; 2193 fcport->drport = rport;
2192 spin_unlock_irq(vha->host->host_lock); 2194 spin_unlock_irq(vha->host->host_lock);
2193 set_bit(FCPORT_UPDATE_NEEDED, &vha->dpc_flags); 2195 set_bit(FCPORT_UPDATE_NEEDED, &base_vha->dpc_flags);
2194 qla2xxx_wake_dpc(vha); 2196 qla2xxx_wake_dpc(base_vha);
2195 } else 2197 } else
2196 fc_remote_port_delete(rport); 2198 fc_remote_port_delete(rport);
2197} 2199}