linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
To: Tatyana Brokhman <tlinder@codeaurora.org>
Cc: gregkh@suse.de, linux-arm-msm@vger.kernel.org,
	ablay@codeaurora.org, balbi@ti.com,
	"open list:USB GADGET/PERIPH..." <linux-usb@vger.kernel.org>,
	open list <linux-kernel@vger.kernel.org>,
	Matthew Wilcox <matthew.r.wilcox@intel.com>
Subject: Re: [RFC/PATCH v3 2/5] uas: MS UAS Gadget driver - Infrastructure
Date: Mon, 18 Apr 2011 12:37:22 -0700	[thread overview]
Message-ID: <20110418193722.GB7194@xanatos> (raw)
In-Reply-To: <1302788176-27972-1-git-send-email-tlinder@codeaurora.org>

On Thu, Apr 14, 2011 at 04:36:15PM +0300, Tatyana Brokhman wrote:
> This patch implements the infrastructure for the UAS gadget driver.
> The UAS gadget driver registers as a second configuration of the MS
> gadet driver.
> 
> A new module parameter was added to the mass_storage module:
> bool use_uasp. (default = 0)
> If this parameter is set to true, the mass_storage module will register
> with the UAS configuration as the devices first configuration and
> operate according to the UAS protocol.

I'm a bit confused by this statement.  Do you mean the UAS alternate
interface setting, rather than the UAS configuration?  I thought that
UAS devices would have one configuration with two alternate interface
settings: a bulk-only-transport interface, and a UAS interface.

Wasn't there a requirement in the USB-IF UAS compliance test that UAS
devices have the UAS alternate interface setting as the second alternate
interface setting, to make sure OSes without UAS support would still be
able to operate with the device?  Is that what you're doing in these
patches?

The other comment I saw was that you chose to run a thread per LUN:

> + * Several kernel threads are created as part of the init sequence:
> + * - UASP main thread
> + * - A thread for each of the existing LUNs
> + * The UASP main thread handles all of the generic commands/task
> + * management requests and routes LUN specific requests to be handled by
> + * the appropriate LUNs task.
> + * The approach of "task per LUN" was chosen due to the UAS protocol
> + * enhancement over the BOT protocol. The main retouch of the UAS
> + * protocol of the BOT protocol is the fact that independent commands can
> + * be performed in parallel. For example a READ command for two different
> + * LUNS. Thus in order to implement this concurrency a separate thread is
> + * needed for each of the existing LUNS.
> + * As long as the LUN threads are alive they keep an open reference to the
> + * backing file. This prevents the unmounting of the backing file's
> + * underlying file system and cause problems during system shutdown.

Why not a thread per SCSI command TAG (i.e. per stream ID)?  I think
that most USB storage devices only have one LUN.  You would get better
performance if you could, say, kick off several READ commands for the
same LUN when you receive two separate SCSI commands on different stream
IDs.

I think the SCSI host-side layer will ensure that all outstanding
asynchronous commands complete before issuing a command that overlaps
with previous commands.  For example, if it issues a WRITE for sector 2,
a READ of sector 1, and then the host-side SCSI stack receives a WRITE
for sectors 1-3, then the SCSI stack will wait for the first two
commands to complete.  Wouldn't you want those first two commands to be
working in parallel on different threads?

Sarah Sharp

  parent reply	other threads:[~2011-04-18 19:37 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-14 13:36 [RFC/PATCH v3 2/5] uas: MS UAS Gadget driver - Infrastructure Tatyana Brokhman
2011-04-14 17:31 ` Alan Stern
2011-04-14 17:40 ` Greg KH
2011-04-16 17:10   ` Tanya Brokhman
2011-04-14 17:41 ` Greg KH
2011-04-18 19:37 ` Sarah Sharp [this message]
2011-04-19 10:30   ` Tanya Brokhman
2011-04-26  9:00   ` Tanya Brokhman
2011-04-26 17:25     ` Sarah Sharp
2011-04-26 18:40       ` Alan Stern
2011-04-26 20:06         ` Sarah Sharp
2011-04-26 20:59           ` Greg KH
2011-04-27 17:16           ` Alan Stern
2011-04-28  5:54         ` Tanya Brokhman
2011-04-28 14:13           ` Alan Stern

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=20110418193722.GB7194@xanatos \
    --to=sarah.a.sharp@linux.intel.com \
    --cc=ablay@codeaurora.org \
    --cc=balbi@ti.com \
    --cc=gregkh@suse.de \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=matthew.r.wilcox@intel.com \
    --cc=tlinder@codeaurora.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).