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
next prev parent reply other threads:[~2007-06-13 2:57 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200706112200.l5BM0qFn005767@hera.kernel.org>
[not found] ` <20070611233917.4bd8c6d7@the-village.bc.nu>
[not found] ` <466DE438.70108@garzik.org>
[not found] ` <20070612111621.10074408@the-village.bc.nu>
2007-06-12 15:18 ` libata passthru: support PIO multi commands 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 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).