public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Luben Tuikov <ltuikov@yahoo.com>
To: James Bottomley <James.Bottomley@suse.de>
Cc: Matthew Dharm <mdharm-kernel@one-eyed-alien.net>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org,
	linux-usb@vger.kernel.org, Greg KH <greg@kroah.com>
Subject: Re: [PATCH repost 3] [SCSI] Retrieve the Caching mode page
Date: Wed, 24 Nov 2010 08:55:02 -0800 (PST)	[thread overview]
Message-ID: <447417.38293.qm@web31807.mail.mud.yahoo.com> (raw)
In-Reply-To: <1290593429.14652.33.camel@mulgrave.site>

--- On Wed, 11/24/10, James Bottomley <James.Bottomley@suse.de> wrote:

> The basic problem isn't devices lying ... the worst we'll
> do is current
> behaviour (not SYNC when we should).  The problem is
> devices that get
> confused (or worse simply crash the firmware).  The
> best way to avoid
> the crashing firmware problem ... if we can assume that
> modern USB
> devices are better is to key off the SCSI version. 
> Unfortunately, in
> spite of several attempts, we've never managed to stop
> usbstorage lying
> about this:
> 
>         /* Some devices
> report a SCSI revision level above 2 but are
>          * unable
> to handle the REPORT LUNS command (for which
>          * support
> is mandatory at level 3).  Since we already have
>          * a
> Get-Max-LUN request, we won't lose much by setting the
>          * revision
> level down to 2.  The only devices that would be
>          * affected
> are those with sparse LUNs. */
>         if
> (sdev->scsi_level > SCSI_2)
>            
> sdev->sdev_target->scsi_level =
>            
>         sdev->scsi_level =
> SCSI_2;
> 
> Untangling all of this would be rather complex, I fear.

CBI/BBB isn't supposed to be, nor is designed to support SAM-modern devices. So while REQUEST LUN /may/ work on some devices which implement it in their firmware, it is NOT a requirement for those devices as they are not required to adhere to any SAM version. Those transport protocols define a class-specific request to get the maximum LUN, and another to reset the target port (instead of I_T Reset or LU Reset). They also do not support SCSI Status completion of the command, nor Autosense. They also do not provide TMFs. They provide none of the SCSI transport protocol services in support of the Execute Command procedure call. The SCSI layer shouldn't be trying to guess their "SCSI version", and or treat them as real SCSI devices sending REPORT LUNs, etc. commands.

Newer, modern transport protocols over USB, are part of SAM, and it is devices who connect via those protocols that are being disadvantaged, due to the adoption (assumption) of CBI/BBB well into the SCSI layer.

To this effect, the transport protocol can tell upper layers if the device is true SCSI (new usb transports or other) or hybrid (usb-storage). In the former case, the device is a SCSI device, in the latter, only basic commands should be attempted.

This isn't to say that firmware for those devices wouldn't be buggy. Of course it will, and most will probably port their legacy FW over to the new SPTL, but the protocol requirements are there by design (i.e. there is no longer Get Max Lun class-specific request, the application client has to send REPORT LUNS, and FW has to answer it) and we have to accommodate that.

It is in this spirit that this patch doesn't change wire behavior, but simply parses data returned by a command already supported by older protocols.

     Luben


  parent reply	other threads:[~2010-11-24 16:55 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-22 16:56 [PATCH repost 3] [SCSI] Retrieve the Caching mode page Luben Tuikov
2010-11-22 17:07 ` Linus Torvalds
2010-11-22 19:02   ` Douglas Gilbert
2010-11-23  4:59     ` Matthew Dharm
2010-11-23 18:40       ` Douglas Gilbert
2010-11-22 20:02   ` Luben Tuikov
2010-11-23  5:00     ` Matthew Dharm
2010-11-23  9:25       ` Luben Tuikov
2010-11-23 14:30         ` Matthew Dharm
2010-11-24  9:02           ` Luben Tuikov
2010-11-24 10:10             ` James Bottomley
2010-11-24 14:48               ` Christoph Hellwig
2010-11-24 14:49               ` Alan Stern
2010-11-24 14:58                 ` James Bottomley
2010-11-24 16:55               ` Luben Tuikov [this message]
  -- strict thread matches above, loose matches on Subject: below --
2010-11-23  8:43 Luben Tuikov
2010-12-05 20:53 Luben Tuikov
2010-12-08  0:02 Luben Tuikov
2010-12-08  0:12 ` Greg KH
2010-12-08  5:05   ` James Bottomley
2010-12-08  8:01     ` Luben Tuikov
2010-12-08 15:16     ` Alan Stern
2010-12-08 15:43       ` James Bottomley
2010-12-08 15:57         ` Alan Stern
2010-12-08 16:00           ` Matthew Wilcox

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=447417.38293.qm@web31807.mail.mud.yahoo.com \
    --to=ltuikov@yahoo.com \
    --cc=James.Bottomley@suse.de \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mdharm-kernel@one-eyed-alien.net \
    --cc=torvalds@linux-foundation.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