linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@osdl.org>
To: Ryan Anderson <ryan@autoweb.net>
Cc: "Tomasz K³oczko" <kloczek@rudy.mif.pg.gda.pl>,
	"Luben Tuikov" <luben_tuikov@adaptec.com>,
	andrew.patterson@hp.com,
	"Marcin Dalecki" <dalecki.marcin@neostrada.pl>,
	"Salyzyn, Mark" <mark_salyzyn@adaptec.com>,
	dougg@torque.net, "Luben Tuikov" <ltuikov@yahoo.com>,
	"SCSI Mailing List" <linux-scsi@vger.kernel.org>,
	"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>
Subject: Re: I request inclusion of SAS Transport Layer and AIC-94xx into the kernel
Date: Mon, 3 Oct 2005 15:56:50 -0700 (PDT)	[thread overview]
Message-ID: <Pine.LNX.4.64.0510031531170.31407@g5.osdl.org> (raw)
In-Reply-To: <1128377075.23932.5.camel@ryan2.internal.autoweb.net>



On Mon, 3 Oct 2005, Ryan Anderson wrote:
> 
> Let me rephrase what Linus said, to help remove the misreading that
> seems so common today.  I think a fair rewording would be, "A spec is a
> guideline.  When it fails to match reality, continuing to follow it is a
> tremendous mistake."

Yes (and that _should_ be obvious, but seldom is). But even stronger than 
that.

Even in the case where a spec follows reality, the organization of the 
spec very seldom has anything to do with organization of code.

A lot of people seem to think that spec abstractions should be translated 
into code abstraction. Not so. It often makes no sense to do so at all.

There are exceptions. I suspect that pretty much all of them are specs 
that _used_ to be code (ie they are documentation of real 
implementations).

For example, Al Viro pointed out privately that the C preprocessor spec 
actually matches what a C preprocessor is supposed to do, and that it was 
easy to generate code from the spec. The reason? The code existed first, 
the spec was written from that. Writing it back into software "just 
works", because the spec really _was_ software to begin with, just 
re-written as a spec.

But when it comes to hardware, almost all specs are written from the 
standpoint of the hardware, not the standpoint of the software driving it. 
The spec might even tell you accurately what the hardware does (hey, 
miracles happen!), but that doesn't mean that you should organize your 
software around it.

And the undeniable fact is, that once a spec gets big and complex enough, 
it won't be exhaustively tested. For example, we've seen time and time 
again that the hardware testing has been totally not based on any spec, 
but on just testing against (usually just one, and usually Windows) one 
single implementation of the "other side".

So for example, you'll have a general spec that says that the hardware 
reacts in certain ways, but the only case that has been _tested_ is the 
particular ways that Windows uses. Which is why we have hardware that 
locks up when given commands in the wrong order - where "wrong" is not 
defined by the spec, but by what Windows just happens to do.

This is especially common in the "cheap" market. For example, for SCSI, 
most of the violations tend to be USB storage - which is supposed to act 
largely like SCSI, but in reality really doesn't. It locks up if you 
try to access sectors that aren't there, etc.

And this is where the spec people come in. They think that the "spec" is 
right, and the reality is wrong. So they blame the broken hardware. Which 
is "true" to some degree - there's a lot of broken hardware out there. But 
it's _pointless_. Broken hardware is not an excuse - it's just a fact of 
life. It's not acceptable to say "but the spec says.." 

And yes, the real problem with people ignoring reality are often in the 
high end. The high end tends to be the place where vendors are used to 
saying "we don't use broken hardware". The high end is where people say 
"if it doesn't conform to spec, we don't care: it's broken". In short, the 
high end is where people are the most likely to just ignore the realities 
_outside_ the high end. They'll point to the spec, and say "do it like 
this". Without ever caring that doing it like that simply may not _work_ 
on a lot of setups.

So when the SAS people say that the SCSI layer should conform to their 
needs, next time they should remember that it _also_ needs to conform to 
the needs of things like USB storage. Which has totally different goals, 
implementation issues, and bugs. 

		Linus

  reply	other threads:[~2005-10-03 22:57 UTC|newest]

Thread overview: 166+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-30 17:07 I request inclusion of SAS Transport Layer and AIC-94xx into the kernel 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 [this message]
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
  -- strict thread matches above, loose matches on Subject: below --
2005-09-30  1:28 Martin Fouts
2005-09-29 15:45 Moore, Eric Dean
2005-09-28 22:17 Moore, Eric Dean
2005-09-29 12:46 ` Luben Tuikov
2005-09-28 15:15 Moore, Eric Dean
2005-09-28 16:59 ` Luben Tuikov
2005-09-28  0:28 Moore, Eric Dean
2005-09-28  1:34 ` Andre Hedrick
2005-09-28 11:42 ` Luben Tuikov
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-26 19:38 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
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 16:01                                         ` 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

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=Pine.LNX.4.64.0510031531170.31407@g5.osdl.org \
    --to=torvalds@osdl.org \
    --cc=andrew.patterson@hp.com \
    --cc=dalecki.marcin@neostrada.pl \
    --cc=dougg@torque.net \
    --cc=kloczek@rudy.mif.pg.gda.pl \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=ltuikov@yahoo.com \
    --cc=luben_tuikov@adaptec.com \
    --cc=mark_salyzyn@adaptec.com \
    --cc=ryan@autoweb.net \
    /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).