* scsi_free_sdev and slave destroy @ 2003-11-25 15:07 Krishna Murthy 2003-11-25 15:23 ` James Bottomley 0 siblings, 1 reply; 8+ messages in thread From: Krishna Murthy @ 2003-11-25 15:07 UTC (permalink / raw) To: SCSI Mailing List; +Cc: davmyers Hi, I was going through the function scsi_probe_and_add_lun(). It does scsi_alloc_sdev probe for the lun If lun does not exist call scsi_free_sdev. scsi_alloc_sdev calls slave_alloc of the HBA driver where as scsi_free_sdev does not seem to call slave_destroy. Please let me know if this is a bug or I am missing something. Thanx N.C.Krishna Murthy ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: scsi_free_sdev and slave destroy 2003-11-25 15:07 scsi_free_sdev and slave destroy Krishna Murthy @ 2003-11-25 15:23 ` James Bottomley 2003-11-27 13:19 ` scsi_scan_target and SCSI_2 Krishna Murthy 0 siblings, 1 reply; 8+ messages in thread From: James Bottomley @ 2003-11-25 15:23 UTC (permalink / raw) To: Krishna Murthy; +Cc: SCSI Mailing List, davmyers On Tue, 2003-11-25 at 09:07, Krishna Murthy wrote: > scsi_alloc_sdev > probe for the lun > If lun does not exist call scsi_free_sdev. > > scsi_alloc_sdev calls slave_alloc of the HBA driver where as > scsi_free_sdev does not seem to call slave_destroy. > Please let me know if this is a bug or I am missing something. This is a current bug and is fixed in the latest scsi patch set. James ^ permalink raw reply [flat|nested] 8+ messages in thread
* scsi_scan_target and SCSI_2 2003-11-25 15:23 ` James Bottomley @ 2003-11-27 13:19 ` Krishna Murthy 2003-11-27 14:56 ` Peripheral qualifier 1 not considered in scsi_probe_and_add_lun Krishna Murthy 2003-11-27 15:37 ` scsi_scan_target and SCSI_2 James Bottomley 0 siblings, 2 replies; 8+ messages in thread From: Krishna Murthy @ 2003-11-27 13:19 UTC (permalink / raw) To: SCSI Mailing List; +Cc: davmyers Hi, scsi_probe_lun() does find out whether a target is SCSI_2 or SCSI_3. The follg is the code from the function which does that. ------------------------------------------- sdev->scsi_level = inq_result[2] & 0x07; if (sdev->scsi_level >= 2 || (sdev->scsi_level == 1 && (inq_result[3] & 0x0f) == 1)) sdev->scsi_level++; --------------------------------------------- Looks like this information is not preserved long enough to be used properly in case LUN 0 is offline. The follg is the call sequence scsi_scan_host_selected() | scsi_scan_channel() | scsi_scan_target() -> res = scsi_probe_and_add_lun ( lun 0) if res == SCSI_SCAN_TARGET_PRESENT scsi_sequential_lun_scan scsi_probe_and_add_lun() calls scsi_probe_lun(). In case there is no lun 0 then the information about scsi_level is lost. ---------------------------------------------------------------------- /* * result contains valid SCSI INQUIRY data. */ if ((result[0] >> 5) == 3) { /* * For a Peripheral qualifier 3 (011b), the SCSI * spec says: The device server is not capable of * supporting a physical device on this logical * unit. * * For disks, this implies that there is no * logical disk configured at sdev->lun, but there * is a target id responding. */ SCSI_LOG_SCAN_BUS(3, printk(KERN_INFO "scsi scan: peripheral qualifier of 3," " no device added\n")); res = SCSI_SCAN_TARGET_PRESENT; goto out_free_result; } ------------------------------------------------------------------------------ We now call scsi_sequential_lun_scan() with BLIST_SPARSELUN,SCSI_2 as parameters, which instead should have been bflags,scsi_level as determined by scsi_probe_lun. Isn't this is a bug? Please let me know if I am missing something. Thanx N.C.Krishna Murthy ^ permalink raw reply [flat|nested] 8+ messages in thread
* Peripheral qualifier 1 not considered in scsi_probe_and_add_lun 2003-11-27 13:19 ` scsi_scan_target and SCSI_2 Krishna Murthy @ 2003-11-27 14:56 ` Krishna Murthy 2003-11-27 15:55 ` James Bottomley 2003-11-27 15:37 ` scsi_scan_target and SCSI_2 James Bottomley 1 sibling, 1 reply; 8+ messages in thread From: Krishna Murthy @ 2003-11-27 14:56 UTC (permalink / raw) To: SCSI Mailing List; +Cc: davmyers Hi, In scsi_probe_and_add_lun we check for Peripheral qualifier 3 (011b). ---------------------------------------------------------------------- /* * result contains valid SCSI INQUIRY data. */ if ((result[0] >> 5) == 3) { /* * For a Peripheral qualifier 3 (011b), the SCSI * spec says: The device server is not capable of * supporting a physical device on this logical * unit. * * For disks, this implies that there is no * logical disk configured at sdev->lun, but there * is a target id responding. */ SCSI_LOG_SCAN_BUS(3, printk(KERN_INFO "scsi scan: peripheral qualifier of 3," " no device added\n")); res = SCSI_SCAN_TARGET_PRESENT; goto out_free_result; } ------------------------------------------------------------------------------ Shouldn't the same apply for peripheral qualifier 1. This is what the SCSI spec has to say about 1: The device server is capable of supporting specified peripheral device type on this logical unit. However the physical device is currently not connected to this logical unit. Thanx N.C.Krishna Murthy ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Peripheral qualifier 1 not considered in scsi_probe_and_add_lun 2003-11-27 14:56 ` Peripheral qualifier 1 not considered in scsi_probe_and_add_lun Krishna Murthy @ 2003-11-27 15:55 ` James Bottomley 0 siblings, 0 replies; 8+ messages in thread From: James Bottomley @ 2003-11-27 15:55 UTC (permalink / raw) To: Krishna Murthy; +Cc: SCSI Mailing List, davmyers On Thu, 2003-11-27 at 08:56, Krishna Murthy wrote: > Shouldn't the same apply for peripheral qualifier 1. This is what the SCSI > spec has to say about 1: > The device server is capable of supporting specified peripheral device type > on this logical unit. However the physical device is currently not connected > to this logical unit. We handle PQ 1 later, because it indicates a transient connection condition. See scsi_add_lun(). James ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: scsi_scan_target and SCSI_2 2003-11-27 13:19 ` scsi_scan_target and SCSI_2 Krishna Murthy 2003-11-27 14:56 ` Peripheral qualifier 1 not considered in scsi_probe_and_add_lun Krishna Murthy @ 2003-11-27 15:37 ` James Bottomley 2003-11-27 15:45 ` Krishna Murthy 1 sibling, 1 reply; 8+ messages in thread From: James Bottomley @ 2003-11-27 15:37 UTC (permalink / raw) To: Krishna Murthy; +Cc: SCSI Mailing List, davmyers On Thu, 2003-11-27 at 07:19, Krishna Murthy wrote: > scsi_probe_and_add_lun() calls scsi_probe_lun(). In case there is no lun 0 > then the information about scsi_level is lost. SAM-3 in section 4.9.2 begins "All SCSI devices shall accept LUN 0 as a valid address...". This requirement is in SCSI-2 as well. If your implementation doesn't do this, I suggest you fix it. If lun 0 responds (as it is required by the standards to do), but shows only a perfunctory standards conforming response indicating it's not really present, we scan, and the scsi_level will be recorded for each correctly scanned lun. > We now call scsi_sequential_lun_scan() with BLIST_SPARSELUN,SCSI_2 as > parameters, which instead should have been bflags,scsi_level as determined by > scsi_probe_lun. > > Isn't this is a bug? Please let me know if I am missing something. No, it's deliberate. Whether we should do this is open to debate, but there's a comment in the code explaining the logic: /* * There's a target here, but lun 0 is offline so we * can't use the report_lun scan. Fall back to a * sequential lun scan with a bflags of SPARSELUN and * a default scsi level of SCSI_2 */ James ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: scsi_scan_target and SCSI_2 2003-11-27 15:37 ` scsi_scan_target and SCSI_2 James Bottomley @ 2003-11-27 15:45 ` Krishna Murthy 2003-11-27 15:57 ` James Bottomley 0 siblings, 1 reply; 8+ messages in thread From: Krishna Murthy @ 2003-11-27 15:45 UTC (permalink / raw) To: James Bottomley; +Cc: SCSI Mailing List, davmyers Hi, What I intended to say was in case we get 3 as the peripheral qualifier in response to inquiry on lun 0, shouldn't we use the scsi level as returned in inquiry response instead of using a a default scsi level of SCSI_2. Thanx N.C.Krishna Murthy On Thursday 27 Nov 2003 9:07 pm, James Bottomley wrote: > On Thu, 2003-11-27 at 07:19, Krishna Murthy wrote: > > scsi_probe_and_add_lun() calls scsi_probe_lun(). In case there is no lun > > 0 then the information about scsi_level is lost. > > SAM-3 in section 4.9.2 begins "All SCSI devices shall accept LUN 0 as a > valid address...". > > This requirement is in SCSI-2 as well. > > If your implementation doesn't do this, I suggest you fix it. > > If lun 0 responds (as it is required by the standards to do), but shows > only a perfunctory standards conforming response indicating it's not > really present, we scan, and the scsi_level will be recorded for each > correctly scanned lun. > > > We now call scsi_sequential_lun_scan() with BLIST_SPARSELUN,SCSI_2 as > > parameters, which instead should have been bflags,scsi_level as > > determined by scsi_probe_lun. > > > > Isn't this is a bug? Please let me know if I am missing something. > > No, it's deliberate. Whether we should do this is open to debate, but > there's a comment in the code explaining the logic: > > /* > * There's a target here, but lun 0 is offline so we > * can't use the report_lun scan. Fall back to a > * sequential lun scan with a bflags of SPARSELUN and > * a default scsi level of SCSI_2 > */ > > James ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: scsi_scan_target and SCSI_2 2003-11-27 15:45 ` Krishna Murthy @ 2003-11-27 15:57 ` James Bottomley 0 siblings, 0 replies; 8+ messages in thread From: James Bottomley @ 2003-11-27 15:57 UTC (permalink / raw) To: Krishna Murthy; +Cc: SCSI Mailing List, davmyers On Thu, 2003-11-27 at 09:45, Krishna Murthy wrote: > What I intended to say was in case we get 3 as the peripheral qualifier > in response to inquiry on lun 0, shouldn't we use the scsi level as returned > in inquiry response instead of using a a default scsi level of SCSI_2. It's open to debate whether a device reporting PQ 3 is required to fill in all the rest of the inquiry data correctly. The code takes the most conservative view. James ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2003-11-27 15:57 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2003-11-25 15:07 scsi_free_sdev and slave destroy Krishna Murthy 2003-11-25 15:23 ` James Bottomley 2003-11-27 13:19 ` scsi_scan_target and SCSI_2 Krishna Murthy 2003-11-27 14:56 ` Peripheral qualifier 1 not considered in scsi_probe_and_add_lun Krishna Murthy 2003-11-27 15:55 ` James Bottomley 2003-11-27 15:37 ` scsi_scan_target and SCSI_2 James Bottomley 2003-11-27 15:45 ` Krishna Murthy 2003-11-27 15:57 ` James Bottomley
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox