[SCSI] fix target scanning oops with fc transport class
authorJames.Smart@Emulex.Com <James.Smart@Emulex.Com>
Sat, 11 Jun 2005 02:24:30 +0000 (22:24 -0400)
committerJames Bottomley <jejb@mulgrave.(none)>
Mon, 8 Aug 2005 22:14:55 +0000 (17:14 -0500)
commit5c44cd2afad3f7b015542187e147a820600172f1
treeef4b63ee55d0481569b1bd680e376b0d94b2b6f0
parent9c472dd9197429a37691e91c938660a062bf20b0
[SCSI] fix target scanning oops with fc transport class

We have some nasty issues with 2.6.12-rc6. Any request to scan on
the lpfc or qla2xxx FC adapters will oops. What is happening is the
system is defaulting to non-transport registered targets, which
inherit the parent of the scan. On this second scan, performed by
the attribute, the parent becomes the shost instead of the rport.
The slave functions in the 2 FC adapters use starget_to_rport()
routines, which incorrectly map the shost as an rport pointer.

Additionally, this pointed out other weaknesses:
- If the target structure is torn down outside of the transport,
  we have no method for it to be regenerated at the proper parent.
- We have race conditions on the target being allocated by both
  the midlayer scan (parent=shost) and by the fc transport
  (parent=rport).

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/scsi_scan.c
drivers/scsi/scsi_transport_fc.c
include/scsi/scsi_transport.h