[SCSI] libsas: fixup target_port_protocols for expanders that don't report sata
authorDan Williams <dan.j.williams@intel.com>
Thu, 9 Feb 2012 07:20:41 +0000 (23:20 -0800)
committerJames Bottomley <JBottomley@Parallels.com>
Wed, 29 Feb 2012 21:41:51 +0000 (15:41 -0600)
If discovery returns 0 for target_port_protocols but shows an attached
sata device, just report SAS_PROTOCOL_SATA in the identify data so
userspace can reliably search for sata devices in the domain.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/libsas/sas_expander.c

index 14e3244c1b20768c106bed89710b86ef4dddc164..05acd9e35fc4def9872d8b19debdb2875302b65b 100644 (file)
@@ -251,6 +251,8 @@ static void sas_set_ex_phy(struct domain_device *dev, int phy_id, void *rsp)
        phy->phy->identify.device_type = dr->attached_dev_type;
        phy->phy->identify.initiator_port_protocols = phy->attached_iproto;
        phy->phy->identify.target_port_protocols = phy->attached_tproto;
+       if (!phy->attached_tproto && dr->attached_sata_dev)
+               phy->phy->identify.target_port_protocols = SAS_PROTOCOL_SATA;
        phy->phy->identify.phy_identifier = phy_id;
        phy->phy->minimum_linkrate_hw = dr->hmin_linkrate;
        phy->phy->maximum_linkrate_hw = dr->hmax_linkrate;