> On Apr 12, 2019, at 23:07, Bart Van Assche <bvanass...@acm.org> wrote:
> 
> On Fri, 2019-04-12 at 17:07 +-0800, Li Zhong wrote:
>> commit 84961f28e9d1 ("[SCSI] Don't add scsi_device for devices that
>> return PQ=1, PDT=0x1f") returns SCSI_SCAN_TARGET_PRESENT if inquiry returns
>> PQ=1, and PDT = 0x1f. However, from the scsi spec, it seemed setting PQ=1,
>> and PDT to the type it is capable to support, can also mean the device
>> is not connected. E.g. we see an IBM/2145 returns PQ=1 and PDT=0
>> for a non mapped lun (details attached at the end).
>> 
>> This patch changes the check condition a bit, so the check don't require
>> PTD to be 0x1f when PQ=1.
>> 
>> $ echo 0 0 1 > /sys/class/scsi_host/host1/scan
>> [ 2483.722186] scsi 1:0:0:1: scsi scan: INQUIRY pass 1 length 36
>> [ 2483.725687] scsi 1:0:0:1: scsi scan: INQUIRY successful with code 0x0
>> [ 2483.729171] scsi 1:0:0:1: scsi scan: INQUIRY pass 2 length 109
>> [ 2483.732481] scsi 1:0:0:1: scsi scan: INQUIRY successful with code 0x0
>> [ 2483.735911] scsi 1:0:0:1: Direct-Access     IBM      2145             
>> 0000 PQ: 1 ANSI: 6
>> [ 2483.741282] scsi 1:0:0:1: Attached scsi generic sg2 type 0
>> 
>> $ tail /proc/scsi/scsi
>> Attached devices:
>> Host: scsi1 Channel: 00 Id: 00 Lun: 00
>>  Vendor: IBM      Model: 2145             Rev: 0000
>>  Type:   Direct-Access                    ANSI  SCSI revision: 06
>> Host: scsi0 Channel: 00 Id: 00 Lun: 00
>>  Vendor: IBM      Model: 2145             Rev: 0000
>>  Type:   Direct-Access                    ANSI  SCSI revision: 06
>> Host: scsi1 Channel: 00 Id: 00 Lun: 01
>>  Vendor: IBM      Model: 2145             Rev: 0000
>>  Type:   Direct-Access                    ANSI  SCSI revision: 06
>> 
>> $ lsscsi
>> [0:0:0:0]    disk    IBM      2145             0000  /dev/sdb
>> [1:0:0:0]    disk    IBM      2145             0000  /dev/sda
>> [1:0:0:1]    disk    IBM      2145             0000  -
>> 
>> Signed-off-by: Li Zhong <lizhon...@gmail.com>
>> ---
>> drivers/scsi/scsi_scan.c | 4 ++1filechanged2insertions(), 2 deletions(-)
>> 
>> diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
>> index 53380e07b40e..eb72644e7915 100644
>> --- a/drivers/scsi/scsi_scan.c
>> +++b/drivers/scsi/scsiscanc11438+11438static int 
>> scsi_probe_and_add_lun(struct scsi_target *starget,
>>       * PDT=00h Direct-access device (floppy)
>>       * PDT=1Fh none (no FDD connected to the requested logical unit)
>>       */
>> -    if (((result[0] >> 5) == 1 || starget->pdt_1f_for_no_lun) &&
>> -        (result[0] & 0x1f) == 0x1f &&
>>      if (((result[0] >> 5) == 1 ||
>>          (starget->pdt_1f_for_no_lun && (result[0] & 0x1f) == 0x1f)) &&
>>          !scsi_is_wlun(lun)) {
>>              SCSI_LOG_SCAN_BUS(3, sdev_printk(KERN_INFO, sdev,
>>                                      "scsi scan: peripheral device type"
> 
> Should the comment above that if-statement be updated?

Thank you for the review. Will add it to the comments in v2. 

Thanks, Zhong
> 
> Thanks,
> 
> Bart.

Reply via email to