[SCSI] qla2xxx: Correct synchronization issues during rport addition/deletion.
authorandrew.vasquez@qlogic.com <andrew.vasquez@qlogic.com>
Fri, 20 Jan 2006 22:53:13 +0000 (14:53 -0800)
committerJames Bottomley <jejb@mulgrave.(none)>
Thu, 26 Jan 2006 13:16:50 +0000 (08:16 -0500)
commitd97994dc1fddcbb8212b745d9c9c9ce96262155c
tree860d0034485f06dc8cb52c23efb6fe5252a25c99
parent1d12d98d284665c37b75b9538916b5fbb8fcde37
[SCSI] qla2xxx: Correct synchronization issues during rport addition/deletion.

The driver can typically detect port-loss during an
interrupt context (i.e. via interrogation of a status IOCB's
completion status [CS_PORT_LOGGED_OUT].  Due to the calling
requirements of the fc_rport APIs, the driver would defer
removal of the device to the default workqueue.  If the
work-item was preceded by an event which caused the port to
obtain visibility (relogin successful, target re-logged into
the topology), deferred removal could inadvertently drop the
rport.  The code also no longer defers removal via the
default workqueue, instead opting for use of the driver's
own DPC thread.

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/qla2xxx/qla_def.h
drivers/scsi/qla2xxx/qla_gbl.h
drivers/scsi/qla2xxx/qla_init.c
drivers/scsi/qla2xxx/qla_isr.c
drivers/scsi/qla2xxx/qla_os.c