From: Tejun Heo <tj@kernel.org>
To: jeff@garzik.org, linux-ide@vger.kernel.org
Subject: [PATCHSET #upstream-fixes] libata: improve flaky link handling
Date: Thu, 29 Jan 2009 20:31:28 +0900 [thread overview]
Message-ID: <1233228696-10562-1-git-send-email-tj@kernel.org> (raw)
Hello,
This patchset is kicked off by kernel bz#9913 which reports hot
plugging and general detection problems with WD My Book drives. WD
was kind enough to provide me with these drives and I played quite a
bit with a few controllers and weird cabling configurations including
long cables and several genders.
It was surprisingly easy to trigger link layer problems. eSATA ports
often go through extra cable and gender. eSATA cables tend to be
longer than internal ones and as the cables are much stiffer touching
or moving the cable can easily cause enough wiggle at the connectors
to cause temporary transmission problems and being outside, it's much
more likely to be moved.
So, with abundant link quality problems, the following problems have
been identified.
a. Our link speed down logic on device probing failure is broken. It
somehow got masked off by a condition test which is there to
prevent spurious warning messages. This prevented repeated
IDENTIFY failures from triggering link speed down.
b. When the condition is right (or wrong), devices succeed at
negotiating 3.0Gbps but fails to actually establish link over it.
This leads to frustrating repetition of hotplug events followed by
failed reset attempts. libata EH needs to remember failed probe
trials and speed the link down to work around this problem.
c. Certain WD My Book's react badly to certain transmission errors.
After a link error, it often completely shuts down the eSATA port
and power down. The only way to wake it up is to remove and
re-apply power. With the right cabling, this almost renders the
device unusable as it completely shuts down when the host tries to
transfer data.
This patchset contains patches to address the above three problems.
0001-libata-fix-EH-device-failure-handling.patch
0002-libata-move-ata_dev_disable-to-libata-eh.c.patch
0003-libata-check-onlineness-before-using-SPD-in-sata_do.patch
0004-libata-clear-dev-ering-in-smarter-way.patch
0005-libata-add-spd_limit-to-sata_down_spd_limit.patch
0006-libata-improve-probe-failure-handling.patch
0007-libata-add-no-penalty-retry-request-for-EH-device-h.patch
0008-libata-implement-HORKAGE_1_5_GBPS-and-apply-it-to-W.patch
0001 fixes #a. 0002-0006 implement workaround for #b and 0007-0008
for #c. This patchset is on top of the current upstream-fixes[1].
Thanks.
drivers/ata/libata-core.c | 93 +++++++++++++++++++++++++++++++++++-----------
drivers/ata/libata-eh.c | 87 +++++++++++++++++++++++++++++++++++++++----
drivers/ata/libata-pmp.c | 2
drivers/ata/libata.h | 4 -
include/linux/libata.h | 19 +++++----
5 files changed, 164 insertions(+), 41 deletions(-)
--
tejun
[1] 4a99d95fa836e254d17910e52663ba2be7b880e7
next reply other threads:[~2009-01-29 11:31 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-29 11:31 Tejun Heo [this message]
2009-01-29 11:31 ` [PATCH 1/8] libata: fix EH device failure handling Tejun Heo
2009-01-29 11:31 ` [PATCH 2/8] libata: move ata_dev_disable() to libata-eh.c Tejun Heo
2009-01-29 11:31 ` [PATCH 3/8] libata: check onlineness before using SPD in sata_down_spd_limit() Tejun Heo
2009-01-29 11:31 ` [PATCH 4/8] libata: clear dev->ering in smarter way Tejun Heo
2009-01-29 11:31 ` [PATCH 5/8] libata: add @spd_limit to sata_down_spd_limit() Tejun Heo
2009-01-29 11:31 ` [PATCH 6/8] libata: improve probe failure handling Tejun Heo
2009-01-29 11:31 ` [PATCH 7/8] libata: add no penalty retry request for EH device handling routines Tejun Heo
2009-01-29 11:31 ` [PATCH 8/8] libata: implement HORKAGE_1_5_GBPS and apply it to WD My Book Tejun Heo
2009-02-03 4:04 ` Jeff Garzik
2009-01-29 14:07 ` [PATCHSET #upstream-fixes] libata: improve flaky link handling Greg Freemyer
2009-01-29 15:50 ` Mark Lord
2009-01-29 23:57 ` 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=1233228696-10562-1-git-send-email-tj@kernel.org \
--to=tj@kernel.org \
--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).