linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tejun Heo <htejun@gmail.com>
To: jeff@garzik.org, alan@lxorguk.ukuu.org.uk, ric@emc.com,
	edmudama@gmail.com, linux-ide@vger.kernel.org, htejun@gmail.com
Subject: [PATCHSET] libata: reimplement reset sequencing
Date: Fri, 2 Feb 2007 16:50:51 +0900	[thread overview]
Message-ID: <11704026511717-git-send-email-htejun@gmail.com> (raw)
In-Reply-To: 

Hello,

Currently reset is driven by ata_eh_reset().  Reset can be tried upto
ATA_EH_RESET_TRIES times and each reset try can take a very long time
- several minutes under certain circumstances.

For boot and loading detections, the initial reset succeeds most of
the time.  However, after errors and hotplugging events, controllers
and devices show widely different behaviors.  For hotplugs, we rely
heavily on the wait performed in ->prereset().  For other error
conditions, we just take long time if things don't succeed at the
first try.

This patchset reimplements reset sequencing such that resets are
retried with more reasonable timing while not upsetting devices too
much with frequent resets.  e.g. spinup wait is completely replaced by
carefully spaced reset tries.

ATA controllers and devices vary greatly in how they behave when
things are not normal.  It's just not scaleable to try to fine-tune
each LLD's reset methods such that the initial try succeeds most of
the time (because failure takes too long).  This patchset allows LLDs
with good enough reset methods which may fail occasionally to work
well enough.

I've tested the change on about a dozen controllers with more than a
dozen ATA/ATAPI devices.  The result was very positive.  It was not
optimal on all of the cases but all were definitely acceptable (maybe
5s to 15s longer than optimal).

Combined with posted timeout adjustment and speed down improvement,
this should make libata EH behave much better.

This patchset is against

upstream (eb0e63cca36a3389f0ccab4584f6d479b983fad5)
+ [1] pata_platform-fix-devres-conversion
+ [2] libata-convert-to-iomap
+ [3] put-some-intelligence-into-speeddown patchset
+ [4] add-150ms-between-completion-of-hardreset-and-status-checking
+ [5] sata_inic162x-fix-a-few-glitches-in-hardreset

Thanks.

--
tejun

[1] http://article.gmane.org/gmane.linux.kernel/488509
[2] sorry, no archive, message was too large
[3] http://thread.gmane.org/gmane.linux.ide/15596
[4] http://article.gmane.org/gmane.linux.ide/15582
[5] http://article.gmane.org/gmane.linux.ide/15583



             reply	other threads:[~2007-02-02  7:51 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-02  7:50 Tejun Heo [this message]
2007-02-02  7:50 ` [PATCH 2/4] libata: improve 0xff status handling Tejun Heo
2007-02-02  7:50 ` [PATCH 1/4] libata: add deadline support to prereset and reset methods Tejun Heo
2007-03-07 11:45   ` Jeff Garzik
2007-02-02  7:50 ` [PATCH 4/4] libata: reimplement reset sequencing Tejun Heo
2007-02-02  7:50 ` [PATCH 3/4] libata: improve ata_std_prereset() 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=11704026511717-git-send-email-htejun@gmail.com \
    --to=htejun@gmail.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=edmudama@gmail.com \
    --cc=jeff@garzik.org \
    --cc=linux-ide@vger.kernel.org \
    --cc=ric@emc.com \
    /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).