diff options
author | Laurence Oberman <loberman@redhat.com> | 2014-11-25 09:16:42 -0500 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2014-12-15 13:34:23 +0100 |
commit | b9f85b1d32cc55b20984149eacb2e6f4c3aedca3 (patch) | |
tree | 618cc33cdac5df9dbea453183126102078dd9360 /drivers/scsi | |
parent | 2311ce4d9c91ed63a46e18f0378f3e406e7e888e (diff) |
qla2xxx: fix race in handling rport deletion during recovery causes panic
When we have an rport disconnect we race during rport deletion and
re-connection resulting in a panic. When we do this, we call
fc_remote_port_del() just before we do the calls to re-establish the
session with the FC transport with fc_remote_port_add() and then
fc_remote_port_rolechg().
If we remove the call to fc_remote_port_del() before re-establishing
the connection this prevents the race. This patch has resolved this
for multiple customers via test kernels.
Suggested by Chad Dupuis, implemented and tested by Laurence Oberman.
Signed-off-by: Laurence Oberman <loberman@redhat.com>
Acked-by: Chad Dupuis <chad.dupuis@qlogic.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_init.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index a4dde7e80dbd..e59f25bff7ab 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c @@ -3237,8 +3237,6 @@ qla2x00_reg_remote_port(scsi_qla_host_t *vha, fc_port_t *fcport) struct fc_rport *rport; unsigned long flags; - qla2x00_rport_del(fcport); - rport_ids.node_name = wwn_to_u64(fcport->node_name); rport_ids.port_name = wwn_to_u64(fcport->port_name); rport_ids.port_id = fcport->d_id.b.domain << 16 | |