linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Luben Tuikov <luben_tuikov@adaptec.com>
To: Andre Hedrick <andre@linux-ide.org>
Cc: "David S. Miller" <davem@davemloft.net>,
	jgarzik@pobox.com, willy@w.ods.org, patmans@us.ibm.com,
	ltuikov@yahoo.com, linux-kernel@vger.kernel.org, akpm@osdl.org,
	torvalds@osdl.org, linux-scsi@vger.kernel.org,
	James Bottomley <James.Bottomley@steeleye.com>
Subject: Re: I request inclusion of SAS Transport Layer and AIC-94xx into the kernel
Date: Fri, 30 Sep 2005 14:34:42 -0400	[thread overview]
Message-ID: <433D8542.1010601@adaptec.com> (raw)
In-Reply-To: <Pine.LNX.4.10.10509300015100.27623-100000@master.linux-ide.org>

On 09/30/05 03:36, Andre Hedrick wrote:
> I stated I would help with SAS adoption because there is a SAS-Transport
> model.  I asked about a possible libadaptec + libsas, and still waiting to
> see if you and adaptec are up for the task.  Right now the only path open
> is the one Jeff Garzik is putting forward along with James and Christop.
> I have a vested interest in seeing SAS-Transport, otherwise I would have
> cut and run a long time ago.
> 
> These long email threads where everyone is shout from the top of their
> hill never wins anything.  After a while the hill becomes flat (from all
> the stomping), and you become old and tired.
> 
> LSI pointed out they mask there SAS in firmware and make it show up in a
> scsi-like or scsi state.  They also pointed out other vendors have taken
> this road.  Even if Adaptec did not go this way in hardware, there still
> has to be a way to map into SCSI ... sheesh this is Adaptec known for
> SCSI.

Hi Andre,

Let me know if this 4 section write up satisfies:

Section 1: MPT, SCSI Core and JB's "transport attributes"
---------------------------------------------------------

SPI drivers (say 5 years ago)
-----------------------------
 hardware implementation     (bus connect)
     firmware implementation   (transport: SPI)
        LLDD                     (exports SCSI devices (LUs))
           SCSI Core
              Command Sets


MPT-based drivers (now)
-----------------------
 hardware implementation     (interconnect/physical)
-->  Transport Layer           (firmware: FC/SPI/SAS/etc)  <--
        LLDD                     (exports SCSI devices (LUs))
           SCSI Core
              Command Sets

As you can see SCSI Core is _unaware_ of the transport.
The transport is completely implemented in FIRMWARE, relieving
the LLDD from worrying about it.  Theoretically/ideally the same
LLDD would work for _all_ transports, since the FW would
export LUs to the LLDD, which would in turn register
those with SCSI Core.

The layout is the same as before, achieving 100% backward
software compatibility.


MPT-based drivers + James Bottomley's "transport attributes"
-------------------------------------------------------------
 hardware implementation
     Transport Layer               <------+ FW/Transport dependent access method
        LLDD                  <---------- + LLDD dependent access method
           SCSI Core ---------------------'
              Command Sets

This picture is _identical_ to the one above, but
I've also shown what the "transport attributes" achieve:
They hook to the _LLDD_ to get to LLDD dependent way of
accessing "transport attributes" (any transport).  This is
JB's template unifying _all_ transports.

Note that this isn't a _management_ layer or infrastructure,
since, it _does not lie between_ the LLDD and SCSI Core.
It merely implements attribute exporting.


Section 2: USB/SBP/SAS and SCSI Core
------------------------------------

  hardware implementation            (interconnect/physical)
      firmware implementation           (SDS: TMFs + Execute Command SCSI RPC)*
          LLDD                             (Coherent interface to SDS)
-->         Transport Layer                   (Transport common to LLDDs) <--
                 SCSI Core
                    Command Sets

* SDS, Service Delivery Subsystem (see SAM 4.6)
  TMF, Task Management Function (see SAM 7)
  Execute Command SCSI RPC (see SAM 5.1)

Most immediate difference from Section 1 is that
  - the Transport Layer is _above_ the LLDD (in top-down).
  - no need for LLDD/Firmware dependent access method
    to the Transport,
  - Transport is accessed in the same way across all
    LLDDs of the same transport (USB/SBP/SAS).

Now since, the LLDDs all implement TMFs + Exec Cmnd SCSI RPC,
you can have 
  - a transport common error handling and
  - a transport common "attribute" access (sysfs),
across all LLDD of the same transport directly from userspace.

The reason the LLDDs all implement TMFs + Exec Cmnd SCSI RPC,
is that the Firmware implements it, and the reason that
the Firmware implements it is that the chip implements
it (following the transport spec).

That is, you can have _different_ LLDDs connecting you
to the _same place_ (maybe not at the same time, depending
on the transport).

SCSI Core should be completely unaware of the
Transport being used and Transport specific
Error handling is common to all such Transport
specific LLDDs (via TMFs): one for SBP, one for
USB, one for SAS. 

The whole point of this USB/SBP/SAS Transport
Layering is that you can access at each level,
thus you can add new abstractions, e.g. SATL (libata),
as is shown in the SATr06 spec.

Furthermore, when you look at the USB/SBP/SAS chips
you will see nothing about "scsi_host", and all about
"transport".

And the sysfs representation of the SAS domain is analogous
to, say, the USB representation of the USB domain.


Section 3: Legacy Thinking or Thinking Legacy
---------------------------------------------

Traditionally Error Handling has been done in
SCSI Core.  The reason for this is that the first
and only SCSI was Parallel SCSI and no other
SCSI was around (and that SAM didn't exist back then).

This is how we have the SPI-centric EH methods
in the scsi host template right now:
	int (* eh_abort_handler)(struct scsi_cmnd *);
	int (* eh_device_reset_handler)(struct scsi_cmnd *);
	int (* eh_bus_reset_handler)(struct scsi_cmnd *);
	int (* eh_host_reset_handler)(struct scsi_cmnd *);

This is fine for Parallel SCSI (SPI) but for other
transports it doesn't quite satisfy.

Let's admit it, with HCIL and with the EH, SCSI Core
is still very SPI centric.

But we should _not_ break legacy drivers and backward
support, yet we have to face the future.

The way we do this is we slowly, without disruption
to older drivers introduce, in parallel, emerge
a new, simpler, slimmer, faster SCSI Core, whereby
we accommodate new infrastructures, yet, have 100%
backward compatibility, via the current older
SCSI Core.  After all, both would be a bunch of
functions in a bunch of files.

If X works with Y, do not disrupt it.  Fix it if
it's broken.  Introduce innovation, functionality,
better design, but not at the expense of breaking
legacy.

To eliminate bugs, tweak old as little as possible,
since you cannot test on _all_ hardware the old code
works on.

To achieve maximum innovation and relevance in the fast
changing world of storage, create, innovate new
better, more accommodating design and infrastructures.

Section 4: Politics
-------------------

Let's face it: SAS is a new emerging technology.
It will be the technology for the next 10-15 years,
and *everybody* in Linux SCSI wants a piece of it.
Everybody wants their name and contribution to it.

This is fine, but we need people who clearly understand
the technology and clearly understand what, how
and why it works.  We need well-read and well educated
people.  Linux dedication is fine, but protocol knowlege
is needed too.

Can Linux afford people who have never even read SAS
to write SAS Code for Linux.  Yes, sure.  It is the
Linux's ideology: "specs are cr@p".

Conclusion
----------

Even though the SAS Transport Layer follows an _already_
establised layering infrastructure for more (less?) exotic
transports such as USB and SBP, James Bottomley has resisted
its inclusion in Linux SCSI.

Have we lost our touch with the new calling it
"non-traditional"?  Will Linux become a dinosaur?

I'm not sure how many times one can split the SAS code?
Will there be enough for everyone?

> Just an FYI, would suggest you cool your heels and listen for the quiet
> responses.  There is more heat than light right now; maybe this thread
> will offset some of the cost in the energy criss.  Will pass on advice
> handed to me (when I was a maintainer) relax and listen, nobody is out to
> get you (and they were right).

Thank you Andre for the warm advice.

James, Linus, can we have this driver in the kernel now, please?

Thank you,
	Luben


  reply	other threads:[~2005-09-30 18:35 UTC|newest]

Thread overview: 169+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-26 19:38 I request inclusion of SAS Transport Layer and AIC-94xx into the kernel Luben Tuikov
2005-09-27 21:55 ` Jeff Garzik
2005-09-27 22:51   ` Luben Tuikov
2005-09-27 23:14     ` Andre Hedrick
2005-09-28 11:37       ` Luben Tuikov
2005-09-28 12:32         ` Matthew Wilcox
2005-09-28 14:50           ` Linus Torvalds
2005-09-30  1:56             ` Junio C Hamano
2005-09-28 16:27         ` Patrick Mansfield
2005-09-28 16:34           ` Luben Tuikov
2005-09-28 19:45           ` Andre Hedrick
2005-09-28 20:56             ` Luben Tuikov
2005-09-28 22:35               ` Willy Tarreau
2005-09-28 23:22                 ` Jeff Garzik
2005-09-28 23:29                   ` David S. Miller
2005-09-29  5:30                     ` Andre Hedrick
2005-09-29  7:24                       ` David S. Miller
2005-09-30  7:36                         ` Andre Hedrick
2005-09-30 18:34                           ` Luben Tuikov [this message]
2005-09-30 18:50                             ` Kyle Moffett
2005-09-30 19:08                               ` Luben Tuikov
2005-09-30 21:31                                 ` Kyle Moffett
2005-09-30 22:10                                   ` Greg Freemyer
2005-09-30 22:19                                     ` Luben Tuikov
2005-09-30 23:54                                     ` Jeff Garzik
2005-10-01  4:58                                       ` Willy Tarreau
2005-10-03 15:08                                         ` Luben Tuikov
2005-10-03 14:04                                       ` Luben Tuikov
2005-09-30 22:14                                   ` Luben Tuikov
2005-10-01  0:33                                     ` Jeff Garzik
2005-10-03 14:18                                       ` Luben Tuikov
2005-10-03 14:26                                         ` I request inclusion of SAS Transport Layer and AIC-94xx intothe kernel David Lang
2005-10-03 15:19                                           ` Luben Tuikov
2005-10-03 15:30                                             ` I request inclusion of SAS Transport Layer and AIC-94xx intothekernel David Lang
2005-10-03 16:01                                         ` I request inclusion of SAS Transport Layer and AIC-94xx into the kernel Jeff Garzik
2005-09-30 20:45                             ` James Bottomley
2005-09-30 22:05                               ` Luben Tuikov
2005-10-01  0:38                                 ` Jeff Garzik
2005-10-03 15:27                                   ` Luben Tuikov
2005-10-03 16:28                                     ` Jeff Garzik
2005-09-30 22:04                             ` Andre Hedrick
2005-09-30 22:32                               ` Luben Tuikov
2005-09-30 23:57                             ` Jeff Garzik
2005-10-03 14:15                               ` Luben Tuikov
2005-10-03 15:57                                 ` Jeff Garzik
2005-10-03 16:23                                   ` Luben Tuikov
2005-10-03 16:48                                     ` Jeff Garzik
2005-10-03 19:03                                       ` Luben Tuikov
2005-10-03 19:32                                         ` Mike Christie
2005-10-03 20:15                                           ` Jeff Garzik
2005-10-03 19:10                                 ` Mike Christie
2005-09-30 18:51                           ` Luben Tuikov
2005-09-29 14:33                 ` Luben Tuikov
2005-09-29 14:48                   ` Jeff Garzik
2005-09-29 15:50                     ` Luben Tuikov
2005-09-29 16:54                       ` Jeff Garzik
2005-09-29 18:25                         ` Luben Tuikov
2005-09-29 15:15                   ` grundig
2005-09-29 15:17                   ` Bernd Petrovitsch
2005-09-29 16:33                     ` Luben Tuikov
2005-09-29 16:56                       ` Jeff Garzik
2005-09-29 16:58                         ` Luben Tuikov
2005-09-29 17:03                           ` Jeff Garzik
2005-09-29 18:09                           ` Gerrit Huizenga
2005-09-29 17:13                       ` Bernd Petrovitsch
2005-09-29 18:39                         ` Luben Tuikov
2005-09-29 22:43                           ` Joel Becker
2005-09-29 17:52                   ` John Stoffel
2005-09-29 19:20                     ` Bruce Ferrell
2005-09-28 22:43               ` Andre Hedrick
2005-09-29 15:04                 ` Luben Tuikov
2005-09-29 15:08                   ` Jeff Garzik
2005-09-29 16:22                     ` Luben Tuikov
2005-09-29 19:09                   ` Stefan Richter
2005-09-29 22:06                     ` Luben Tuikov
2005-09-28 16:30         ` Valdis.Kletnieks
2005-09-28 16:35           ` Luben Tuikov
2005-09-28  2:02     ` Jeff Garzik
2005-09-28 20:36       ` Luben Tuikov
2005-09-28 21:00         ` Jeff Garzik
2005-09-28 22:10           ` Luben Tuikov
2005-09-28 23:04             ` Jeff Garzik
2005-09-29  4:04               ` Willy Tarreau
2005-09-29  7:44                 ` Arjan van de Ven
2005-09-29 15:09                   ` Luben Tuikov
2005-09-29 15:20                     ` Jeff Garzik
2005-09-29 16:56                       ` Luben Tuikov
2005-09-29 17:11                         ` Jeff Garzik
2005-09-30 18:16                     ` Joe Bob Spamtest
2005-09-29 17:15                   ` Stefan Richter
2005-09-29 17:29                     ` Jeff Garzik
2005-09-29 19:32                   ` Willy Tarreau
2005-09-29 19:57                   ` Linus Torvalds
2005-09-29 22:49                     ` jerome lacoste
2005-09-29 23:20                     ` Luben Tuikov
2005-09-29 23:57                       ` Prasenjit Sarkar
2005-09-30  6:35                         ` Andre Hedrick
2005-09-30  0:35                       ` Linus Torvalds
2005-09-30  1:25                         ` Hua Zhong
2005-09-30  2:42                         ` Marcin Dalecki
2005-09-30 19:12                           ` Joe Bob Spamtest
2005-09-30 19:38                             ` Bob Copeland
2005-09-30  7:29                         ` Douglas Gilbert
2005-09-30 14:23                           ` Luben Tuikov
2005-09-30 16:26                           ` Andrew Patterson
2005-09-30 16:47                             ` Luben Tuikov
2005-09-30 14:07                         ` Luben Tuikov
2005-09-30  5:31                       ` Theodore Ts'o
2005-09-30  6:52                     ` Andre Hedrick
2005-09-29 19:59               ` Stefan Richter
2005-09-29 19:37       ` Stefan Richter
2005-09-29 19:22   ` Stefan Richter
2005-09-27 13:07 Luben Tuikov
2005-09-27 13:19 ` Christoph Hellwig
2005-09-27 15:01   ` Luben Tuikov
2005-09-27 15:53     ` James Bottomley
2005-09-27 19:35       ` Luben Tuikov
2005-09-27 20:34         ` Jeff Garzik
2005-09-27 21:44           ` Luben Tuikov
2005-09-27 22:01             ` Jeff Garzik
2005-09-27 23:03               ` Luben Tuikov
2005-09-27 23:32                 ` Andrew Patterson
2005-09-28  2:07                 ` Jeff Garzik
2005-09-28  0:28 Moore, Eric Dean
2005-09-28  1:34 ` Andre Hedrick
2005-09-28 11:42 ` Luben Tuikov
2005-09-28 15:15 Moore, Eric Dean
2005-09-28 16:59 ` Luben Tuikov
2005-09-28 22:17 Moore, Eric Dean
2005-09-29 12:46 ` Luben Tuikov
2005-09-29 15:45 Moore, Eric Dean
2005-09-30  1:28 Martin Fouts
2005-09-30 17:07 Salyzyn, Mark
2005-09-30 17:53 ` Arjan van de Ven
2005-10-01 23:55   ` Alan Cox
2005-10-03 16:17     ` Luben Tuikov
2005-10-04  6:51       ` Andre Hedrick
2005-10-04 15:01         ` Luben Tuikov
2005-09-30 18:39 ` Andrew Patterson
2005-09-30 19:21   ` Luben Tuikov
2005-09-30 20:14     ` Andrew Patterson
2005-09-30 20:22       ` Matthew Wilcox
2005-09-30 21:44         ` Linus Torvalds
2005-10-01 17:46         ` Greg KH
2005-09-30 20:32       ` Luben Tuikov
2005-09-30 21:15         ` Andrew Patterson
2005-09-30 21:40           ` Joel Becker
2005-09-30 22:01           ` Luben Tuikov
2005-09-30 23:42             ` Marcin Dalecki
2005-10-03 13:54               ` Luben Tuikov
2005-10-03 16:29                 ` Marcin Dalecki
2005-10-03 16:35                   ` Andrew Patterson
2005-10-03 16:39                     ` Luben Tuikov
2005-10-03 19:16                       ` Marcin Dalecki
2005-10-03 21:26                       ` Tomasz Kłoczko
2005-10-03 22:04                         ` Ryan Anderson
2005-10-03 22:56                           ` Linus Torvalds
2005-10-03 23:22                             ` Al Viro
2005-10-04 13:55                             ` Tomasz Kłoczko
2005-10-04 15:09                               ` Linus Torvalds
2005-10-04 14:38                             ` Luben Tuikov
2005-10-04 14:54                               ` Jeff Garzik
2005-10-04 15:19                                 ` Luben Tuikov
2005-10-04 15:26                                   ` Jeff Garzik
2005-10-04 15:40                                     ` Luben Tuikov
2005-10-04 15:46                                       ` Matthew Wilcox
2005-10-04  6:30                           ` Andre Hedrick
2005-10-01  0:02     ` Jeff Garzik
2005-10-01  0:01   ` Jeff Garzik

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=433D8542.1010601@adaptec.com \
    --to=luben_tuikov@adaptec.com \
    --cc=James.Bottomley@steeleye.com \
    --cc=akpm@osdl.org \
    --cc=andre@linux-ide.org \
    --cc=davem@davemloft.net \
    --cc=jgarzik@pobox.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=ltuikov@yahoo.com \
    --cc=patmans@us.ibm.com \
    --cc=torvalds@osdl.org \
    --cc=willy@w.ods.org \
    /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).