> 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.