From: Jeff Garzik <jgarzik@pobox.com>
To: Luben Tuikov <luben_tuikov@adaptec.com>
Cc: James Bottomley <jejb@steeleye.com>,
SCSI Mailing List <linux-scsi@vger.kernel.org>
Subject: Re: [PATCH] minimal SAS transport class
Date: Fri, 26 Aug 2005 21:39:30 -0400 [thread overview]
Message-ID: <430FC452.70604@pobox.com> (raw)
In-Reply-To: <430F6F89.8040503@adaptec.com>
Luben Tuikov wrote:
> On 08/26/05 14:48, Jeff Garzik wrote:
>
>>>No host numbers, no routing information. This is all
>>>transparent to SCSI Core, and NONE of its business.
>>
>>Routing is an essential part of the SCSI core's duties.
>
>
> [I'm not a big fan of reading mixed-message emails, but what can you do...]
>
>
>>The SCSI core is the resource manager responsible for routing messages
>>[CDBs] to/from LLDs based on <scsi-specific device address>. This
>>includes resolution of kernel-specific identifiers (device major/minor,
>>etc.) into <s.s.d.a.>. This also includes direct use of
>
>
> This particular is the task of sd.c. How it does it is
> sd.c. job. Not SCSI Core.
No. sd, sr, st, and sg all use the -common- infrastructure to execute
tasks and return results. That common infrastructure is part of the
SCSI core.
The SCSI layer itself is a marraige between
device classes -- sd, sr, st, sg
transport classes -- common per-transport code
drivers -- executes tasks via transport class
glue -- the myriad functions that tie the above 3 together
All transport-specific knowledge that is common across hardware vendors
should be in the transport class. The SCSI core uses the transport
class to perform transport-specific actions.
>>userspace-provided identifiers as <s.s.d.a.>, such as via SG_IO ioctl.
>
>
> Ah, yes, I see. So the question is, how do we fit SG_IO ioctl?
>
> SG_IO can be transport/protocol agnostic _if_ SCSI Core gets
> the architecture right.
>
> I.e. if I show you a picture of the objects "out there" in the
> SCSI domain, you can just point to one and send something to it.
> That picture will be painted by the transport layer. SCSI Core
> is _completely_ unaware of all this! This is how you can accomodate
> SMP and any future protocols that can come your way.
The SCSI core is the common point for exporting bus topology via
transport classes.
>>Moving away from HCIL requires a lot of thought, including thinking
>>about userland app breakage -- a big deal in Linux.
>
>
> I never contended that userspace should be moved away from HCIL.
Then, by implication, SAS and FC must continue to maintain HCIL<->device
maps.
> What I contend is that _internally_ SCSI Core start moving
> away from HCIL and towards SAM.
SAM is already mostly there. ->queuecommand is already a pretty good
execute_task().
> Most easily this would be done by implementing a bunch of
> new-way-to-do-it functions. The request_queue wouldn't care,
> and old LLDD can use the old interface, and new ones can use
> the new interface.
Disagree. Just follow the TODO list Christoph outlined, plus figure out
how to handle SG_IO and /dev/sg sanely.
We don't need yet more
if (new way) {
...
} else {
...
}
code blocks :)
HCIL addressing gunk largely belongs in SPI transport class, along with
scsi_scan_host() [each transport class should build its own topology].
This achieves the result you want to achive: new-way-to-do-it functions
live in the SAS and FC transport classes (with generic code in generic
SCSI layer), old-way-to-do-it HCIL functions live in the SPI transport
class.
>>Ask yourself where all these HCIL-addressed CDBs come from... each one
>>of those CDB submittors must be updated from HCIL addressing/routing to
>>transport-specific.
> No, no transport specific -- I repeat again: the whole point is to move
> away from "transport specific". _SCSI_Core_can invent an HCIL label for them,
> not LLDD as they currently do.
You will never be able to eliminate transport-specific code. That's the
whole point of transport classes: encapsulate common transport code.
Call it a transport library, rather than a class, if "class" gives
people the shivers.
Example: I have access to SAS+SATA host controllers from Adaptec and
Company X. Both are largely software-based, directly controlling the
PHY ports and manually performing all SAS+SATA discovery.
I would expect that adaptec_sas and companyx_sas drivers would share
transport-specific code via the ata_transport and sas_transport classes.
Jeff
next prev parent reply other threads:[~2005-08-27 1:39 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-08-20 4:15 [PATCH] minimal SAS transport class James.Smart
2005-08-20 4:57 ` Jeff Garzik
2005-08-20 17:23 ` Luben Tuikov
2005-08-21 17:03 ` Christoph Hellwig
2005-08-21 16:52 ` Christoph Hellwig
2005-08-21 18:23 ` Luben Tuikov
2005-08-22 4:55 ` Matt Domsch
2005-08-22 17:05 ` Luben Tuikov
2005-08-22 21:53 ` Mike Anderson
2005-08-23 23:55 ` Luben Tuikov
2005-08-24 17:12 ` Patrick Mansfield
2005-08-24 20:05 ` Luben Tuikov
2005-08-24 20:42 ` Patrick Mansfield
2005-08-24 21:48 ` Luben Tuikov
2005-08-23 11:10 ` Douglas Gilbert
2005-08-23 6:27 ` Hannes Reinecke
2005-08-23 15:42 ` Patrick Mansfield
2005-08-23 15:53 ` Matthew Wilcox
2005-08-24 0:13 ` Luben Tuikov
2005-08-25 19:32 ` Stefan Richter
2005-08-25 20:06 ` Jeff Garzik
2005-08-26 16:43 ` Luben Tuikov
2005-08-26 17:22 ` James Bottomley
2005-08-26 18:16 ` Luben Tuikov
2005-08-26 18:48 ` Jeff Garzik
2005-08-26 19:37 ` Luben Tuikov
2005-08-27 1:39 ` Jeff Garzik [this message]
2005-08-27 7:11 ` Stefan Richter
2005-08-28 22:13 ` Luben Tuikov
-- strict thread matches above, loose matches on Subject: below --
2005-08-23 18:25 James.Smart
2005-08-23 16:16 James.Smart
2005-08-23 17:28 ` Stefan Richter
2005-08-24 0:02 ` Luben Tuikov
2005-08-24 9:12 ` Christoph Hellwig
2005-08-26 15:47 ` Luben Tuikov
2005-08-26 19:24 ` Jeff Garzik
2005-08-26 19:44 ` Luben Tuikov
2005-08-27 1:53 ` Jeff Garzik
2005-08-27 7:35 ` Stefan Richter
2005-08-28 22:27 ` Luben Tuikov
2005-08-29 5:16 ` Stefan Richter
2005-08-29 17:11 ` Christoph Hellwig
2005-08-29 17:20 ` Luben Tuikov
2005-08-29 17:25 ` Christoph Hellwig
2005-08-29 17:16 ` Christoph Hellwig
2005-08-29 17:31 ` Luben Tuikov
2005-08-29 18:34 ` Luben Tuikov
2005-08-29 18:09 ` James Bottomley
2005-08-23 17:57 ` Patrick Mansfield
2005-08-22 23:08 Moore, Eric Dean
2005-08-24 8:59 ` Christoph Hellwig
2005-08-18 18:48 James.Smart
2005-08-18 19:04 ` Jeff Garzik
2005-08-19 14:06 ` Christoph Hellwig
2005-08-19 17:51 ` Luben Tuikov
2005-08-19 17:54 ` Christoph Hellwig
2005-08-19 17:56 ` Luben Tuikov
2005-08-19 17:59 ` Christoph Hellwig
2005-08-19 18:07 ` Luben Tuikov
2005-08-19 19:59 ` James Bottomley
2005-08-19 20:32 ` Luben Tuikov
2005-08-19 20:54 ` Jeff Garzik
2005-08-20 9:18 ` Christoph Hellwig
2005-08-20 17:34 ` Luben Tuikov
2005-08-21 6:41 ` Arjan van de Ven
2005-08-21 17:07 ` Christoph Hellwig
2005-08-19 19:08 ` Luben Tuikov
2005-08-18 20:06 ` Luben Tuikov
2005-08-19 14:04 ` Christoph Hellwig
2005-08-18 14:43 James.Smart
2005-08-18 14:02 James.Smart
2005-08-18 17:56 ` Christoph Hellwig
2005-08-18 20:05 ` Luben Tuikov
2005-08-19 14:15 ` Christoph Hellwig
2005-08-18 11:57 James.Smart
2005-08-15 13:55 Christoph Hellwig
2005-08-15 14:19 ` Luben Tuikov
2005-08-15 14:35 ` Arjan van de Ven
2005-08-15 15:04 ` Luben Tuikov
2005-08-15 15:13 ` Luben Tuikov
2005-08-15 15:21 ` Christoph Hellwig
2005-08-15 15:33 ` Luben Tuikov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=430FC452.70604@pobox.com \
--to=jgarzik@pobox.com \
--cc=jejb@steeleye.com \
--cc=linux-scsi@vger.kernel.org \
--cc=luben_tuikov@adaptec.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).