James Bottomley wrote:
On Wed, 2006-05-17 at 11:06 -0400, Jeff Garzik wrote:
storage device and storage host are key objects included in the
This is one of the questions. Currently block has no concept of "host".
All it knows about are queues (which may be per host or per device
depending on the implementation). Do we need to introduce the concept
of something like queue grouping (a sort of lightweight infrastructure
that could be used by the underlying transport to implement a host
concept without introducing hosts at the block layer)?
Yes, and not only that... you must describe the queue pipeline too.
i.e. N logical devices can be bottlenecked behind a bridge (expander,
port multiplier, tunnel) of queue depth Q, which may in turn be behind
another bottleneck. :)
But overall, libata and SAS controllers are forced to deal with the
reality of the situation: they all wind up either using, or recreating
from scratch, objects for host/device/bus/etc. in order to sanely allow
all the infrastructure to interoperate.
You'll all note that struct Scsi_Host and struct scsi_cmnd have very
little to do with SCSI. Its almost all infrastructure and driver
management. That's the _useful_ stuff that libata uses SCSI for.
Thus, moving libata to the block layer entails either
s/Scsi_Host/Storage_Host/g or a highly similar infrastructure, to
achieve the same gains.
It is _trivial_ to write a new SCSI driver [even if your hardware is not
SCSI], and there are good reasons for that. Please all, examine those
reasons...
Jeff
-
: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html