<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/ata/libata-eh.c, branch linux-3.5.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.5.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.5.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2012-05-07T19:40:34Z</updated>
<entry>
<title>libata-eh don't waste time retrying media errors (v3)</title>
<updated>2012-05-07T19:40:34Z</updated>
<author>
<name>Mark Lord</name>
</author>
<published>2012-05-02T19:22:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8d899e70c1b3afff04104eebc09a629ac8dd4b32'/>
<id>urn:sha1:8d899e70c1b3afff04104eebc09a629ac8dd4b32</id>
<content type='text'>
ATA and SATA drives have had built-in retries for media errors
for as long as they've been commonplace in computers (early 1990s).

When libata stumbles across a bad sector, it can waste minutes
sitting there doing retry after retry before finally giving up
and letting the higher layers deal with it.

This patch removes retries for media errors only.

Signed-off-by: Mark Lord &lt;mlord@pobox.com&gt;
Signed-off-by: Jeff Garzik &lt;jgarzik@redhat.com&gt;
</content>
</entry>
<entry>
<title>libata: skip old error history when counting probe trials</title>
<updated>2012-05-03T18:05:58Z</updated>
<author>
<name>Lin Ming</name>
</author>
<published>2012-05-03T14:15:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6868225e3e92399068be9a5f1635752d91012ad5'/>
<id>urn:sha1:6868225e3e92399068be9a5f1635752d91012ad5</id>
<content type='text'>
Commit d902747("[libata] Add ATA transport class") introduced
ATA_EFLAG_OLD_ER to mark entries in the error ring as cleared.

But ata_count_probe_trials_cb() didn't check this flag and it still
counts the old error history. So wrong probe trials count is returned
and it causes problem, for example, SATA link speed is slowed down from
3.0Gbps to 1.5Gbps.

Fix it by checking ATA_EFLAG_OLD_ER in ata_count_probe_trials_cb().

Cc: stable &lt;stable@vger.kernel.org&gt; # 2.6.37+
Signed-off-by: Lin Ming &lt;ming.m.lin@intel.com&gt;
Signed-off-by: Jeff Garzik &lt;jgarzik@redhat.com&gt;
</content>
</entry>
<entry>
<title>[SCSI] libsas: execute transport link resets with libata-eh via host workqueue</title>
<updated>2012-02-19T20:13:51Z</updated>
<author>
<name>Dan Williams</name>
</author>
<published>2011-12-03T00:07:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=81c757bc696284f39f07766f0c2ca67af64ce9bd'/>
<id>urn:sha1:81c757bc696284f39f07766f0c2ca67af64ce9bd</id>
<content type='text'>
Link resets leave ata affiliations intact, so arrange for libsas to make
an effort to avoid dropping the device due to a slow-to-recover link.
Towards this end carry out reset in the host workqueue so that it can
check for ata devices and kick the reset request to libata.  Hard
resets, in contrast, bypass libata since they are meant for associating
an ata device with another initiator in the domain (tears down
affiliations).

Need to add a new transport_sas_phy_reset() since the current
sas_phy_reset() is a utility function to libsas lldds.  They are not
prepared for it to loop back into eh.

Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Signed-off-by: James Bottomley &lt;JBottomley@Parallels.com&gt;
</content>
</entry>
<entry>
<title>[libata] Issue SRST to Sil3726 PMP</title>
<updated>2011-11-09T06:38:00Z</updated>
<author>
<name>Gwendal Grignou</name>
</author>
<published>2011-10-20T00:17:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7a46c0780babea7d0b3f277a33ea243be38eb942'/>
<id>urn:sha1:7a46c0780babea7d0b3f277a33ea243be38eb942</id>
<content type='text'>
Reenable sending SRST to devices connected behind a Sil3726 PMP.
This allow staggered spinups and handles drives that spins up slowly.

While the drives spin up, the PMP will not accept SRST.
Most controller reissues the reset until the drive is ready, while
some [Sil3124] returns an error.
In ata_eh_error, wait 10s before reset the ATA port and try again.

Signed-off-by: Gwendal Grignou &lt;gwendal@google.com&gt;
Acked-by: Tejun Heo &lt;tj@kernel.org&gt;
Signed-off-by: Jeff Garzik &lt;jgarzik@redhat.com&gt;
</content>
</entry>
<entry>
<title>ide/ata: Add export.h for EXPORT_SYMBOL/THIS_MODULE where needed</title>
<updated>2011-10-31T23:31:37Z</updated>
<author>
<name>Paul Gortmaker</name>
</author>
<published>2011-07-17T19:33:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=38789fda295689689d064c0157bc363b1837b5e6'/>
<id>urn:sha1:38789fda295689689d064c0157bc363b1837b5e6</id>
<content type='text'>
They were getting this implicitly by an include of module.h
from device.h -- but we are going to clean that up and break
that include chain, so include export.h explicitly now.

Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
</content>
</entry>
<entry>
<title>libata-eh: ata_eh_followup_srst_needed() does not need 'classes' parameter</title>
<updated>2011-10-08T04:07:15Z</updated>
<author>
<name>Sergei Shtylyov</name>
</author>
<published>2011-08-09T19:25:50Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e8411fbad67a6fe3f989cf6391df7c72bf4a1f9e'/>
<id>urn:sha1:e8411fbad67a6fe3f989cf6391df7c72bf4a1f9e</id>
<content type='text'>
... since it does not use it.

Signed-off-by: Sergei Shtylyov &lt;sshtylyov@ru.mvista.com&gt;
Signed-off-by: Jeff Garzik &lt;jgarzik@redhat.com&gt;
</content>
</entry>
<entry>
<title>libata: leave port thawed after reset failure</title>
<updated>2011-07-23T21:57:36Z</updated>
<author>
<name>Tejun Heo</name>
</author>
<published>2011-05-25T10:23:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8ea7645c5a949f9d0ea86edc0778713b5e63ab74'/>
<id>urn:sha1:8ea7645c5a949f9d0ea86edc0778713b5e63ab74</id>
<content type='text'>
libata EH intentionally left a port frozen if it failed
ata_eh_reset().  The intention was avoiding continuous loop of resets
when the controller or attached device is flaky and reporting spurious
hotplug events.  Once port enters this state, it can be recovered with
manual rescan, which seemed reasonable.

However, outside of my convoluted test setup, there have been very few
reports justifying this choice while there have been more cases where
the automatic freezing of the port after hotplug attempt of a faulty
device caused confusion and led to unnecessary resets.

This patch changes the behavior so that the port is thawed after reset
failure.  This change doesn't necessarily solve but makes it easier
and more intuitive to work around hotplug related problems
(ie. re-pluggin or power cycling the device) as reported in the
followings.

  https://bugzilla.kernel.org/show_bug.cgi?id=34712
  http://thread.gmane.org/gmane.linux.kernel/1123265/focus=49548

Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
Reported-by: Reartes Guillermo &lt;rtguille@gmail.com&gt;
Reported-by: Bruce Stenning &lt;b.stenning@indigovision.com&gt;
Signed-off-by: Jeff Garzik &lt;jgarzik@pobox.com&gt;
</content>
</entry>
<entry>
<title>ata: Convert ata_&lt;foo&gt;_printk(KERN_&lt;LEVEL&gt; to ata_&lt;foo&gt;_&lt;level&gt;</title>
<updated>2011-07-23T21:57:36Z</updated>
<author>
<name>Joe Perches</name>
</author>
<published>2011-04-15T22:51:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a9a79dfec239568bdbf778242f8fcd10bcc5b9e2'/>
<id>urn:sha1:a9a79dfec239568bdbf778242f8fcd10bcc5b9e2</id>
<content type='text'>
Saves text by removing nearly duplicated text format strings by
creating ata_&lt;foo&gt;_printk functions and printf extension %pV.

ata defconfig size shrinks ~5% (~8KB), allyesconfig ~2.5% (~13KB)

Format string duplication comes from:

 #define ata_link_printk(link, lv, fmt, args...) do { \
       if (sata_pmp_attached((link)-&gt;ap) || (link)-&gt;ap-&gt;slave_link)    \
               printk("%sata%u.%02u: "fmt, lv, (link)-&gt;ap-&gt;print_id,   \
                      (link)-&gt;pmp , ##args); \
       else \
               printk("%sata%u: "fmt, lv, (link)-&gt;ap-&gt;print_id , ##args); \
       } while(0)

Coalesce long formats.

$ size drivers/ata/built-in.*
   text	   data	    bss	    dec	    hex	filename
 544969	  73893	 116584	 735446	  b38d6	drivers/ata/built-in.allyesconfig.ata.o
 558429	  73893	 117864	 750186	  b726a	drivers/ata/built-in.allyesconfig.dev_level.o
 141328	  14689	   4220	 160237	  271ed	drivers/ata/built-in.defconfig.ata.o
 149567	  14689	   4220	 168476	  2921c	drivers/ata/built-in.defconfig.dev_level.o

Signed-off-by: Joe Perches &lt;joe@perches.com&gt;
Signed-off-by: Jeff Garzik &lt;jgarzik@pobox.com&gt;
</content>
</entry>
<entry>
<title>libata: fix unexpectedly frozen port after ata_eh_reset()</title>
<updated>2011-06-07T19:55:55Z</updated>
<author>
<name>Tejun Heo</name>
</author>
<published>2011-05-25T11:19:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8c56cacc724c7650b893d43068fa66044aa29a61'/>
<id>urn:sha1:8c56cacc724c7650b893d43068fa66044aa29a61</id>
<content type='text'>
To work around controllers which can't properly plug events while
reset, ata_eh_reset() clears error states and ATA_PFLAG_EH_PENDING
after reset but before RESET is marked done.  As reset is the final
recovery action and full verification of devices including onlineness
and classfication match is done afterwards, this shouldn't lead to
lost devices or missed hotplug events.

Unfortunately, it forgot to thaw the port when clearing EH_PENDING, so
if the condition happens after resetting an empty port, the port could
be left frozen and EH will end without thawing it, making the port
unresponsive to further hotplug events.

Thaw if the port is frozen after clearing EH_PENDING.  This problem is
reported by Bruce Stenning in the following thread.

 http://thread.gmane.org/gmane.linux.kernel/1123265

stable: I think we should weather this patch a bit longer in -rcX
	before sending it to -stable.  Please wait at least a month
	after this patch makes upstream.  Thanks.

-v2: Fixed spelling in the comment per Dave Howorth.

Signed-off-by: Tejun Heo &lt;tj@kernel.org&gt;
Reported-by: Bruce Stenning &lt;b.stenning@indigovision.com&gt;
Cc: stable@kernel.org
Cc: Dave Howorth &lt;dhoworth@mrc-lmb.cam.ac.uk&gt;
Signed-off-by: Jeff Garzik &lt;jgarzik@pobox.com&gt;
</content>
</entry>
<entry>
<title>libata: Power off empty ports</title>
<updated>2011-05-20T00:50:53Z</updated>
<author>
<name>Kristen Carlson Accardi</name>
</author>
<published>2011-03-04T18:24:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8a745f1f39b7a20047a362b67ce9151c07d14440'/>
<id>urn:sha1:8a745f1f39b7a20047a362b67ce9151c07d14440</id>
<content type='text'>
Give users the option of completely powering off unoccupied
SATA ports using the existing min_power link_power_management_policy
option.  When the use selects this option on an empty port, we
will power the port off by setting DET to off.  For occupied ports,
behavior is unchanged.

Signed-off-by: Kristen Carlson Accardi &lt;kristen@linux.intel.com&gt;
Signed-off-by: Jeff Garzik &lt;jgarzik@pobox.com&gt;
</content>
</entry>
</feed>
