Jeff Garzik wrote:
Tejun Heo wrote:
Jeff Garzik wrote:
4) Using [__]scsi_add_device() is a regression from using
scsi_scan_target()
I think it's taken from the hotplug patch
store-attached-SCSI-device[1]. Using [__]scsi_add_device() seems to
be the only way to reliably obtain the attached sdev.
We want to continue to use scsi_scan_target(), because that's the
preferred model. In SCSI-land, the target is what receives RPC calls
(ATA commands, for us), which are then dispatched internally to one of
$N logical units (LU) according to the logical unit number (LUN).
In libata, of course, there is only one logical unit attached to the
target, LUN 0.
Regardless, using [__]scsi_add_device() is a regression, because libata
handles the transport layer completely -- and importantly -- handles all
addressing. scsi_add_device() is specifically for H/C/I/L, i.e. SPI
(parallel SCSI) addressing.
Eventually SCSI will reach a point where HCIL is not the only addressing
method. SAS disks, for example, are addressed via a LUN's WWN. SCSI
fibre channel addresses LUNs via WWN as well. Once SCSI core does not
exclusively use HCIL addressing, libata will reap the benefits of using
the proper scsi_target model.
I fully agree with everything you said, but we're faced with a real
problem here. libata needs to know the current attached sdev for
hotplug and rescan; however, there's no way to determine the current
sdev after it's already added.
scsi_device_lookup*() functions don't discriminate between dead and live
devices and ends up operating on the first device it stumbles upon (the
dead one if it's still hanging around). Storing dev->sdev was a way to
get around the limitation. If a SCSI function which looks up the live
device is implemented, we don't need to store dev->sdev at all. IMHO,
the current implementation can be left as it is until such interface is
implemented.
Thanks.
--
tejun
-
: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html