From: Jeff Garzik <jeff@garzik.org>
To: Tejun Heo <htejun@gmail.com>
Cc: linux-ide@vger.kernel.org, liml@rtr.ca
Subject: Re: [PATCHSET #upstream] libata: improve timeout handling for EH commands
Date: Tue, 03 Jun 2008 14:06:01 -0400 [thread overview]
Message-ID: <48458809.1030207@garzik.org> (raw)
In-Reply-To: <12112174741373-git-send-email-htejun@gmail.com>
Tejun Heo wrote:
> Hello,
>
> [S]ATA has lots of legacy and not in a too healthy way. The desparate
> efforts to keep everything compatible made mundane things quite
> challenging. Probing definitely is one of them. We now span from
> ancient CF devices to port multipliers and quirky ones are easy to
> find all along the spectrum.
>
> For example, according to the spec reset protocol and the actual
> implementations, there's no defined way to wait for the initial D2H
> Reg FIS after hardresetting a fan-out port. The problem is that the
> D2H Reg FIS can arrive during later steps of probing is in progress
> and a rogue FIS at the right time can easily make the controller fail
> or time out pending operations.
>
> Another problem of the long spectrum is that we can't choose the one
> correct value as timeout for operations. A timeout value which can
> cover all the devices is too long and makes EH painfully slow when
> something goes wrong. Choosing shorter timeout means the ancient and
> weirdos won't work.
>
> So, we have to resort to smart self adjusting timeouts. Early
> quickies to detect transient failures quickly and later long ones to
> cover odd devices. Deadline driven ata_eh_reset() was a step in that
> direction and this patchset, in addition to other timeout related
> improvements, applies it to the rest of EH commands.
>
> This patchset contains the following patches.
>
> 01-libata-kill-unused-constants.patch
> 02-libata-consistently-use-msecs-for-time-durations.patch
> 03-libata-improve-EH-retry-delay-handling.patch
> 04-libata-use-ULONG_MAX-to-terminate-reset-timeout-tab.patch
> 05-libata-improve-EH-internal-command-timeout-handling.patch
>
> #01, #02 and #04 are preparations. #02 makes liata use msecs
> consistently for time durations. #03 makes inter-try or inter-reset
> delays smarter and allows libata EH to delay less between tries
> without sacrificing robustness. #05 implements per command class
> stepped timeouts for EH commands, so that the first IDENTIFY try fails
> quickly but later on the device can take full 30secs to think about it
> while restricting maximum timeout for SET_FEATURES to 10secs.
>
> This patchset makes whole EH behave much more swiftly and timeout
> cases bearable. :-)
ACK
for .27? Seems useful to .26, but also we are late in .26-rc and this
is a lot of changes for -rc$LATE :)
next prev parent reply other threads:[~2008-06-03 18:06 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-19 17:17 [PATCHSET #upstream] libata: improve timeout handling for EH commands Tejun Heo
2008-05-19 17:17 ` [PATCH 1/5] libata: kill unused constants Tejun Heo
2008-06-04 10:29 ` Jeff Garzik
2008-05-19 17:17 ` [PATCH 2/5] libata: consistently use msecs for time durations Tejun Heo
2008-05-19 22:35 ` Elias Oltmanns
2008-05-20 4:03 ` Tejun Heo
2008-06-13 6:55 ` Jeff Garzik
2008-05-19 17:17 ` [PATCH 3/5] libata: improve EH retry delay handling Tejun Heo
2008-05-19 18:33 ` Alan Cox
2008-05-20 4:02 ` Tejun Heo
2008-05-19 17:17 ` [PATCH 4/5] libata: use ULONG_MAX to terminate reset timeout table Tejun Heo
2008-05-19 17:17 ` [PATCH 5/5] libata: improve EH internal command timeout handling Tejun Heo
2008-05-19 18:35 ` Alan Cox
2008-05-19 18:51 ` Jeff Garzik
2008-05-20 4:05 ` Tejun Heo
2008-05-29 1:59 ` [PATCHSET #upstream] libata: improve timeout handling for EH commands Tejun Heo
2008-06-03 18:06 ` Jeff Garzik [this message]
2008-06-04 5:02 ` Tejun Heo
2008-11-10 16:32 ` saeed bishara
2008-11-11 2:27 ` Tejun Heo
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=48458809.1030207@garzik.org \
--to=jeff@garzik.org \
--cc=htejun@gmail.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.