From: Jeff Garzik <jeff@garzik.org>
To: Tejun Heo <htejun@gmail.com>
Cc: linux-ide@vger.kernel.org, alan@lxorguk.ukuu.org.uk, liml@rtr.ca,
albertl@mail.com, jens.axboe@oracle.com,
Albert Lee <albertcc@tw.ibm.com>
Subject: Re: [PATCH 08/15] libata: improve ATAPI draining
Date: Tue, 18 Dec 2007 16:41:18 -0500 [thread overview]
Message-ID: <47683E7E.4030102@garzik.org> (raw)
In-Reply-To: <11968405973998-git-send-email-htejun@gmail.com>
Tejun Heo wrote:
> For misc ATAPI commands which transfer variable length data to the
> host, overflow can occur due to application or hardware bug. Such
> overflows can be ignored safely as long as overflow data is properly
> drained. libata HSM implementation has this implemented in
> __atapi_pio_bytes() but it isn't enough. Improve drain logic such
> that...
>
> * Multiple PIO data phases are allowed. Not allowing this used to be
> okay when transfer chunk size was set to 8k unconditionally but with
> transfer hcunk size set to allocation size, treating extra PIO data
> phases as HSM violations cause a lot of trouble.
>
> * Limit the amount of draining to ATAPI_MAX_DRAIN (16k currently).
>
> * Don't whine if overflow is allowed and safe. When unexpected
> overflow occurs, trigger HSM violation and report the problem using
> ehi error description.
>
> * Properly calculate the number of bytes to be drained considering
> actual number of consumed bytes for partial draining.
>
> * Add and use ata_drain_page for draining. This change fixes the
> problem where LLDs which do 32bit IOs consumes 4 bytes on each 2
> byte draining resulting in draining twice more data than requested.
>
> This patch fixes ATAPI regressions introduced by setting transfer
> chunk size to allocation size.
>
> Signed-off-by: Tejun Heo <htejun@gmail.com>
> Cc: Albert Lee <albertcc@tw.ibm.com>
I'm dropping this one, since a good portion of it is already upstream
as140b5e59119a172a91b5fa13d54ca4f79bbefee1
Jeff
next prev parent reply other threads:[~2007-12-18 21:41 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-05 7:43 [PATCHSET] libata: improve ATAPI data transfer handling, take #3 Tejun Heo
2007-12-05 7:43 ` [PATCH 01/15] libata: make atapi_request_sense() use sg Tejun Heo
2007-12-18 21:30 ` Jeff Garzik
2007-12-05 7:43 ` [PATCH 02/15] libata: zero xfer length on ATAPI data xfer IRQ is HSM violation Tejun Heo
2007-12-06 6:44 ` Albert Lee
2007-12-05 7:43 ` [PATCH 03/15] libata: update atapi_eh_request_sense() such that lbam/lbah contains buffer size Tejun Heo
2007-12-05 7:43 ` [PATCH 04/15] cdrom: add more GPCMD_* constants Tejun Heo
2007-12-05 7:43 ` [PATCH 05/15] libata: rename ATA_PROT_ATAPI_* to ATAPI_PROT_* Tejun Heo
2007-12-18 21:35 ` Jeff Garzik
2007-12-05 7:43 ` [PATCH 06/15] libata: add ATAPI_* cmd types and implement atapi_cmd_type() Tejun Heo
2007-12-05 7:43 ` [PATCH 07/15] change-data_xfer Tejun Heo
2007-12-18 21:38 ` Jeff Garzik
2007-12-05 7:43 ` [PATCH 08/15] libata: improve ATAPI draining Tejun Heo
2007-12-06 6:47 ` Albert Lee
2007-12-18 21:41 ` Jeff Garzik [this message]
2007-12-05 7:43 ` [PATCH 09/15] libata: kill non-sg DMA interface Tejun Heo
2007-12-05 7:43 ` [PATCH 10/15] libata: change ATA_QCFLAG_DMAMAP semantics Tejun Heo
2007-12-05 7:43 ` [PATCH 11/15] libata: convert to chained sg Tejun Heo
2007-12-05 7:43 ` [PATCH 12/15] libata: make qc->nbytes include extra buffers Tejun Heo
2007-12-18 21:44 ` Jeff Garzik
2007-12-05 7:43 ` [PATCH 13/15] libata: implement ATAPI drain buffer Tejun Heo
2007-12-18 21:45 ` Jeff Garzik
2007-12-05 7:43 ` [PATCH 14/15] libata: implement ATAPI per-command-type DMA horkages Tejun Heo
2007-12-05 7:43 ` [PATCH 15/15] libata: use PIO for misc ATAPI commands Tejun Heo
2007-12-05 13:00 ` Alan Cox
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=47683E7E.4030102@garzik.org \
--to=jeff@garzik.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=albertcc@tw.ibm.com \
--cc=albertl@mail.com \
--cc=htejun@gmail.com \
--cc=jens.axboe@oracle.com \
--cc=liml@rtr.ca \
--cc=linux-ide@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.