All of lore.kernel.org
 help / color / mirror / Atom feed
From: Albert Lee <albertcc@tw.ibm.com>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Jeff Garzik <jeff@garzik.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	IDE/ATA development list <linux-ide@vger.kernel.org>
Subject: Re: libata passthru: support PIO multi commands
Date: Wed, 13 Jun 2007 10:57:21 +0800	[thread overview]
Message-ID: <466F5D11.7000404@tw.ibm.com> (raw)
In-Reply-To: <20070612170519.5f427a70@the-village.bc.nu>

Alan Cox wrote:
>>ata_scsi_pass_thru() is not executed at ioctl submission time (block 
>>queue submission time), but rather immediately before it is issued to 
>>the drive.  At that point you know the bus is idle, all other commands 
>>have finished executing, and dev->multi_count is fresh not stale.  The 
>>code path goes from ata_scsi_pass_thru() to ata_qc_issue() without 
>>releasing the spinlock, even.
> 
> 
> Think up to user space
> 
> Poorusersapp			set multicount to 4
> 
> Evilproprietarytuningdaemon	set multicount to 8
> 
> Poorusersapp			issue I/O
> 
> at which point an error is indeed best.
> 
> 
>>But the last point is true -- we should error rather than just warn 
>>there, AFAICS.
> 
> 
> Definitely. We've been asked "please do something stupid" and not even in
> a case where the requester may know better.
> 

It looks like the ATA passthru commands contain more information than
what libata needs to execute a command.

e.g. protocol number:
     libata could possibly infer the protocol from the command opcode.

e.g. multi_count:
     libata caches dev->multi_count. Passing multi_count along with
     each passthru command looks useless for libata.     

e.g. t_dir:
     libata could possible infer the direction from the command opcode
     or from the protocol number (e.g. 4: PIO_IN / 5: PIO_OUT).

Due to the redundant info, there is possiblely inconsistency between
the parameters. e.g. t_dir vs protocol. e.g. command vs protocol.

It seems the "redundant" parameters are designed to allow stateless SATL
implementation: The application/passthru command tells the stateless SATL
implementation the protocol and the multi_count, etc. Then SATL just
follows the instruction blindly, even if asked to do something stupid.

Currently libata
 - uses the passthru protocol number blindly
   (even if the application issues a DMA command with wrong PIO protocol.)
 - checks and warns about multi_count
 - ignores t_dir, byte_block and so on.

Maybe we need a strategy to deal with incorrect passed-thru commands?
say,
 - check and reject if something wrong
 - mimimal check and warn/ignore, if it doesn't hurt command execution

--
albert


  reply	other threads:[~2007-06-13  2:57 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <200706112200.l5BM0qFn005767@hera.kernel.org>
2007-06-11 22:39 ` libata passthru: support PIO multi commands Alan Cox
2007-06-12  0:09   ` Jeff Garzik
2007-06-12 10:16     ` Alan Cox
2007-06-12 15:18       ` Jeff Garzik
2007-06-12 16:05         ` Alan Cox
2007-06-13  2:57           ` Albert Lee [this message]
2007-06-13 18:40             ` Mark Lord
2007-06-13 18:55             ` Sergei Shtylyov
2007-06-13 18:55               ` 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=466F5D11.7000404@tw.ibm.com \
    --to=albertcc@tw.ibm.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=albertl@mail.com \
    --cc=jeff@garzik.org \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.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 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.