diff options
Diffstat (limited to 'drivers/scsi/scsi_scan.c')
-rw-r--r-- | drivers/scsi/scsi_scan.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index d6fe756eb371..0949145304ea 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c | |||
@@ -385,6 +385,7 @@ static struct scsi_target *scsi_alloc_target(struct device *parent, | |||
385 | INIT_LIST_HEAD(&starget->siblings); | 385 | INIT_LIST_HEAD(&starget->siblings); |
386 | INIT_LIST_HEAD(&starget->devices); | 386 | INIT_LIST_HEAD(&starget->devices); |
387 | starget->state = STARGET_RUNNING; | 387 | starget->state = STARGET_RUNNING; |
388 | starget->scsi_level = SCSI_2; | ||
388 | retry: | 389 | retry: |
389 | spin_lock_irqsave(shost->host_lock, flags); | 390 | spin_lock_irqsave(shost->host_lock, flags); |
390 | 391 | ||
@@ -654,6 +655,19 @@ static int scsi_probe_lun(struct scsi_device *sdev, unsigned char *inq_result, | |||
654 | * short INQUIRY), an abort here prevents any further use of the | 655 | * short INQUIRY), an abort here prevents any further use of the |
655 | * device, including spin up. | 656 | * device, including spin up. |
656 | * | 657 | * |
658 | * On the whole, the best approach seems to be to assume the first | ||
659 | * 36 bytes are valid no matter what the device says. That's | ||
660 | * better than copying < 36 bytes to the inquiry-result buffer | ||
661 | * and displaying garbage for the Vendor, Product, or Revision | ||
662 | * strings. | ||
663 | */ | ||
664 | if (sdev->inquiry_len < 36) { | ||
665 | printk(KERN_INFO "scsi scan: INQUIRY result too short (%d)," | ||
666 | " using 36\n", sdev->inquiry_len); | ||
667 | sdev->inquiry_len = 36; | ||
668 | } | ||
669 | |||
670 | /* | ||
657 | * Related to the above issue: | 671 | * Related to the above issue: |
658 | * | 672 | * |
659 | * XXX Devices (disk or all?) should be sent a TEST UNIT READY, | 673 | * XXX Devices (disk or all?) should be sent a TEST UNIT READY, |