[SCSI] libsas: disable scanning lun > 0 on ata devices
authorDan Williams <dan.j.williams@intel.com>
Tue, 20 Sep 2011 22:10:19 +0000 (15:10 -0700)
committerJames Bottomley <JBottomley@Parallels.com>
Sun, 2 Oct 2011 17:29:19 +0000 (12:29 -0500)
Currently mvsas and pm8001 have custom ->slave_alloc implementations to
achieve this.  Uplevel it for all libsas drivers as isci encounters problems
with atapi devices when scanning past lun0.

Just do what Darrick suggested [1], and limit the scan for ata devices.

[1] http://marc.info/?l=linux-scsi&m=116604101119861&w=2

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

index c6fcf76..9d9330a 100644 (file)
@@ -1545,8 +1545,14 @@ int sas_rphy_add(struct sas_rphy *rphy)
 
        if (identify->device_type == SAS_END_DEVICE &&
            rphy->scsi_target_id != -1) {
-               scsi_scan_target(&rphy->dev, 0,
-                               rphy->scsi_target_id, SCAN_WILD_CARD, 0);
+               int lun;
+
+               if (identify->target_port_protocols & SAS_PROTOCOL_SSP)
+                       lun = SCAN_WILD_CARD;
+               else
+                       lun = 0;
+
+               scsi_scan_target(&rphy->dev, 0, rphy->scsi_target_id, lun, 0);
        }
 
        return 0;