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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.