> On Apr 12, 2019, at 23:07, Bart Van Assche <bvanassche@xxxxxxx> 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 <lizhongfs@xxxxxxxxx> >> --- >> 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.