[SCSI] mpt2sas: Fix to use sas device list instead of enclosure list for _transpor_get_enclosure_identifier.
Enclosure_identifier not being returned by mpt2sas The driver exports callback function to the sas transport layer for obtaining the enclosure logical id. This function is called _transport_get_enclosure_identifier. The driver was searching the wrong list for the enclosure_identifier. The driver should be searching the sas device list instead of enclosure list. The sas address that is passed to the driver is for the end device, not enclosure. Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
593d572074
commit
ab6ce92541
|
@ -1007,18 +1007,18 @@ static int
|
||||||
_transport_get_enclosure_identifier(struct sas_rphy *rphy, u64 *identifier)
|
_transport_get_enclosure_identifier(struct sas_rphy *rphy, u64 *identifier)
|
||||||
{
|
{
|
||||||
struct MPT2SAS_ADAPTER *ioc = rphy_to_ioc(rphy);
|
struct MPT2SAS_ADAPTER *ioc = rphy_to_ioc(rphy);
|
||||||
struct _sas_node *sas_expander;
|
struct _sas_device *sas_device;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
spin_lock_irqsave(&ioc->sas_node_lock, flags);
|
spin_lock_irqsave(&ioc->sas_device_lock, flags);
|
||||||
sas_expander = mpt2sas_scsih_expander_find_by_sas_address(ioc,
|
sas_device = mpt2sas_scsih_sas_device_find_by_sas_address(ioc,
|
||||||
rphy->identify.sas_address);
|
rphy->identify.sas_address);
|
||||||
spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
|
spin_unlock_irqrestore(&ioc->sas_device_lock, flags);
|
||||||
|
|
||||||
if (!sas_expander)
|
if (!sas_device)
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
|
|
||||||
*identifier = sas_expander->enclosure_logical_id;
|
*identifier = sas_device->enclosure_logical_id;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue