All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Christoph Hellwig <hch@lst.de>,
	"Kenneth R. Crudup" <kenny@panix.com>,
	linux-scsi@vger.kernel.org, linux-ide@vger.kernel.org,
	linux-usb@vger.kernel.org, usb-storage@lists.one-eyed-alien.net
Subject: Re: Issues with commit 34b48db6 ("block: remove artifical max_hw_sectors cap")
Date: Tue, 30 Dec 2014 07:50:32 -0800	[thread overview]
Message-ID: <1419954632.2164.1.camel@HansenPartnership.com> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1412301017060.30572-100000@netrider.rowland.org>

On Tue, 2014-12-30 at 10:34 -0500, Alan Stern wrote:
> On Tue, 30 Dec 2014, Christoph Hellwig wrote:
> 
> > > The only limits usb-storage imposes on max_sectors are those needed to
> > > work around bugs in the devices' USB bridges.  (Okay, there's also
> > > something for tape drive devices, but it probably doesn't belong in
> > > usb-storage -- it should be handled by the SCSI tape driver.)
> > > 
> > > If the ATA layer needs to set a limit on max_sectors, why doesn't it
> > > simply go ahead and do so?
> > 
> > Because the ATA layer doesn't control the device, the bridge does.
> > And it seems like it doesn't communicate the maximum transfer size
> > properly.
> 
> _Is_ there any way to communicate the maximum transfer size?  I'm not
> aware of any SCSI command for it.  It isn't part of the USB
> mass-storage spec.

For the device, it's in the Block limits VPD page.  However, what the
device supports isn't necessarily what the bridge or host bus adapter
will support.  We need to set the limit to the lowest of what the
device, the bridge and the HBA support.  We know the device (provided
the bridge allows VPD inquiries ... not all do) and host, so we really
need to know what the bridge will support.  From the error it does look
like we're running into a bridge limit.

> usb-storage has no clear idea what sort of device lies on the other
> side of the USB bridge.  It might be an ATA drive, it might be a flash
> drive, it might not be a disk at all -- usb-storage does its best not
> to know or care.

That's fine, but is there any way in USB to query the bridge to get it's
transfer characteristics?

> If you think that usb-storage needs to set a maximum transfer size for
> disk drives, it won't be hard to write a patch.  But what about all the
> other possible transports?  Will they each have to implement the same
> transfer limit?  If so, shouldn't the limit be set up from a more
> central location, such as the sd driver?

This isn't a transport problem, this is a bridge problem.  T10 has
always recognised there might be a bridge issue linking two transports,
so it did initially come up with a bridge spec (BCC) but it was
abandoned a decade ago in favour of transparent bridges (every switch in
a FC topology is effectively a transparent bridge) or making them
explicit in the standards, like SAS expanders.

> Why not have sd always set max_sectors_kb to 32767 if it isn't already 
> smaller?  Would that cause any problems?

This wouldn't be sd ... we have lots of requirements for large transfer
sizes for efficiency.  It has to be the layer that knows there's a
bridge, so that would make it usb.

James




  reply	other threads:[~2014-12-30 15:50 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <alpine.DEB.2.10.1412211420560.4323@tosh-p75a>
2014-12-23  8:31 ` Issues with commit 34b48db6 ("block: remove artifical max_hw_sectors cap") Christoph Hellwig
2014-12-24  7:48   ` Kenneth R. Crudup
2014-12-24  8:18     ` Kenneth R. Crudup
2014-12-27 15:13     ` Christoph Hellwig
2014-12-29  3:10       ` Alan Stern
2014-12-30 11:28         ` Christoph Hellwig
2014-12-30 15:34           ` Alan Stern
2014-12-30 15:50             ` James Bottomley [this message]
2014-12-30 16:12               ` Alan Stern
     [not found]                 ` <Pine.LNX.4.44L0.1412301109050.32416-100000-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b@public.gmane.org>
2014-12-30 16:25                   ` James Bottomley
2014-12-30 16:45                     ` Alan Stern
2014-12-30 16:54                       ` James Bottomley
2014-12-30 16:19             ` Douglas Gilbert
2014-12-30 16:36               ` Kenneth R. Crudup
2015-01-05 17:19                 ` Christoph Hellwig
2015-01-05 20:07                   ` Alan Stern
2015-01-05 20:19                     ` Kenneth R. Crudup
2015-01-19  9:45                     ` Kenneth R. Crudup
2015-01-19 15:55                       ` Alan Stern
2015-01-19 22:59                         ` Kenneth R. Crudup
2015-02-08 22:11                         ` Kenneth R. Crudup
2015-01-05 17:18               ` Christoph Hellwig

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=1419954632.2164.1.camel@HansenPartnership.com \
    --to=james.bottomley@hansenpartnership.com \
    --cc=hch@lst.de \
    --cc=kenny@panix.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=stern@rowland.harvard.edu \
    --cc=usb-storage@lists.one-eyed-alien.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 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.