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 ﭗ橸ṷ梧뇪觬(), 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
> ﯦカ뢯窻㾱쬢ﻇⲊ윚鷍痣缾흞㟲쭚똧 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?

Thanks,

Bart.

Reply via email to