On Thursday, April 13, 2006 7:04 PM, Christoph Hellwig wrote:
I'll explain the problem.
The sas drivers have a rphy to rphy relationship. An rphy
created on a hba phy points to the expander phy. Then the expander
phy creates a rphy pointing back to the same hba rphy. The expander
phy which contains the rphy pointing back to the hba phy, contains
the attributes device_type = SAS_END_DEVICE, and target_port_protocals =
0.
Hence the recent change in sas_rphy_add() make it drop down to
scsi_scan_target, whereas before there was sepecial handling to
prevent this case from happening. With this change, the mptsas slave
entry
points are called to enumerate the rphy that points back to the hba phy.
The target id in our data structures is the same as a real target device
on another phy. Thus we end up mapping the same target to two different
rphys.
To fix this, I added a check in mptsas_slave_alloc to make sure the
requested rphy is mapped to a true end device.
This needs to be fixed in the transport class again.
Christoph can you help me on this, please?
The original sas_rphy_add() function from three weeks back works for mptsas.
I'm not sure why that change was made, and whether reverting back to its orginal code
would break the other sas driver.
Eric
-
: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html