Western Digital hard disks and ATA timeouts

Joe Kelsey joe at zircon.seattle.wa.us
Sun Nov 9 15:49:37 PST 2008


Søren Schmidt wrote:
> On 7Nov, 2008, at 20:12 , Peter Wemm wrote:
>
>> On Thu, Nov 6, 2008 at 11:17 PM, Jeremy Chadwick <koitsu at freebsd.org> 
>> wrote:
>> [..]
>>> As stated, FreeBSD's ATA command timeout is hard-set to 5 seconds, and
>>> is not adjustable without editing the ATA code yourself and increasing
>>> the value.  The FreeNAS folks have made patches available to turn the
>>> timeout value into a sysctl.
>>>
>>> Soren and/or others, please increase this timeout value.  Five seconds
>>> has now been deemed too aggressive a default.  And please consider
>>> migrating the timeout value into a sysctl.
>>
>> The 5 second timeout has been a problem for quite a while actually.
>> I've had a number of instances where I've had to increase it to 20 or
>> 30 seconds when recovering from marginal drives.  The longest
>> "successful" recovery attempt I've seen was 26 seconds, I believe on a
>> Maxtor drive a few years ago.   ("successful" == the drive spent 26
>> seconds but eventually successfully read the sector).  Even the IBM
>> death star drives could take much longer than 5 seconds to do a
>> recovery 5 years ago.  5 seconds has never been a good default.
>>
>> I think the timeout should be increased to at least 30 seconds.  My
>> windows box has a timeout that goes for several minutes.
>>
>> If there is concern about FreeBSD appearing to hang, I could imagine
>> that a console warning message could be printed after 5 seconds.  But
>> just say "drive has not yet responded".  But give it more time.
>>
>> In this day and age we're generally not playing games with udma33 vs
>> 66, notched cables, poor CRC support etc.  SATA seems to have
>> eliminated all that.  Hmm, it might make sense to increase the timeout
>> on SATA connections to 2 or 3 minutes by default.
>
> Actually I do have a patch around that logs the timeout on the console 
> after the normal timeout (5secs), then just goes on to wait for double 
> the timeout and log again etc etc, final timeout was IIRC 60 secs but 
> could be anything.
I have a disk which I am finally getting rid of that produces READ_DMA 
and WRITE_DMA errors at a pretty high rate.  I did enable the extra ATA 
error reporting and it doesn't seem to indicate any sort of actual 
errors, just extra long itmeouts.

At one time, I did change the system to extend the timeout, but I did 
not see any real improvement at 30 seconds.  I suspect that an even more 
extended timeout would be necessary to solve the problem.

I am removing the disk this week.  Does anyone want a disk that produces 
DMA timeouts at a regular rate?  Would it help actually solve this problem?

Please let me know if you want such a beast and I will ship it to you.

/Joe



More information about the freebsd-stable mailing list