From: Tejun Heo <htejun@gmail.com>
To: Jeff Garzik <jeff@garzik.org>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>,
linux-ide@vger.kernel.org, Forrest Zhao <forrest.zhao@gmail.com>
Subject: Re: [PATCH 12/12] libata: implement EH fast drain
Date: Wed, 04 Jul 2007 00:09:42 +0900 [thread overview]
Message-ID: <468A66B6.6090901@gmail.com> (raw)
In-Reply-To: <468A5F2E.9020002@garzik.org>
Jeff Garzik wrote:
> Tejun Heo wrote:
>> In most cases, when EH is scheduled, all in-flight commands are
>> aborted causing EH to kick in immediately. However, in some cases
>> (especially with PMP), it's unclear which commands are affected by the
>> error condition and although aborting all in-flight commands work, it
>> isn't optimal and may cause unnecessary disruption. On the other
>> hand, waiting for in-flight commands to drain themselves can take up
>> to 30seconds.
>>
>> This patch implements EH fast drain to handle such situations. It
>> gives in-flight commands some time to finish up but doesn't wait for
>> too long. After EH is scheduled, fast drain timer is started and if
>> no other completion occurs in ATA_EH_FASTDRAIN_INTERVAL all in-flight
>> commands are aborted. If any completion occurred in the interval, the
>> port is given another interval to finish up itself.
>>
>> Currently ATA_EH_FASTDRAIN_INTERVAL is 3 secs which should be enough
>> for finishing up most commands.
>>
>> Signed-off-by: Tejun Heo <htejun@gmail.com>
>
> what type of errors are we talking about? device errors can be handled
> on a more granular basis than other errors.
On standalone (non-PMP) port, this doesn't matter because in-flight
commands are always aborted when error occurs. Fast drain helps when
PMP is involved. For example, after certain event, PMP can notify host
that something is off via SDB notify but until EH kicks in and performs
autopsy, there's no way to tell to which port the event happened.
If there were in-flight commands to the failed link and/or PMP chip went
for lunch after the event (it often does), EH is forced to wait for
timeout even though it knows something is off. Fast drain helps in such
situations - ie. when EH knows something wrong is going on and it's very
likely that commands which aren't completing are going to timeout.
--
tejun
next prev parent reply other threads:[~2007-07-03 15:09 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-01 9:53 [PATCHSET 1/4] libata: misc updates in preparation of PMP support Tejun Heo
2007-07-01 9:53 ` [PATCH 01/12] libata: update EH report formatting Tejun Heo
2007-07-03 14:22 ` Jeff Garzik
2007-07-03 15:02 ` Tejun Heo
2007-07-01 9:53 ` [PATCH 02/12] libata: implement AC_ERR_NCQ Tejun Heo
2007-07-03 14:24 ` Jeff Garzik
2007-07-03 14:58 ` Tejun Heo
2007-07-01 9:53 ` [PATCH 04/12] ahci: make NO_NCQ handling more consistent Tejun Heo
2007-07-03 14:28 ` Jeff Garzik
2007-07-01 9:53 ` [PATCH 05/12] ahci: implement SCR_NOTIFICATION r/w Tejun Heo
2007-07-03 14:31 ` Jeff Garzik
2007-07-03 15:00 ` Tejun Heo
2007-07-13 11:53 ` Tejun Heo
2007-07-01 9:53 ` [PATCH 03/12] libata: make ->scr_read/write callbacks return error code Tejun Heo
2007-07-03 14:26 ` Jeff Garzik
2007-07-01 9:53 ` [PATCH 11/12] libata: schedule probing after SError access failure during autopsy Tejun Heo
2007-07-03 14:35 ` Jeff Garzik
2007-07-03 15:05 ` Tejun Heo
2007-07-01 9:53 ` [PATCH 08/12] libata: improve SCSI scan failure handling Tejun Heo
2007-07-01 9:53 ` [PATCH 06/12] libata: improve SATA PHY speed down logic Tejun Heo
2007-07-01 9:53 ` [PATCH 10/12] libata: clear HOTPLUG flag after a reset Tejun Heo
2007-07-03 14:34 ` Jeff Garzik
2007-07-01 9:53 ` [PATCH 12/12] libata: implement EH fast drain Tejun Heo
2007-07-03 14:37 ` Jeff Garzik
2007-07-03 15:09 ` Tejun Heo [this message]
2007-07-01 9:53 ` [PATCH 09/12] libata: reorganize ata_ehi_hotplugged() Tejun Heo
2007-07-01 9:53 ` [PATCH 07/12] libata: quickly trigger SATA SPD down after debouncing failed 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=468A66B6.6090901@gmail.com \
--to=htejun@gmail.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=forrest.zhao@gmail.com \
--cc=jeff@garzik.org \
--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 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).