Re: [PATCHSET #upstream] libata: improve timeout handling for EH commands

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jeff Garzik wrote:
> Tejun Heo wrote:
>> Hello,
>>
>> [S]ATA has lots of legacy and not in a too healthy way.  The desparate
>> efforts to keep everything compatible made mundane things quite
>> challenging.  Probing definitely is one of them.  We now span from
>> ancient CF devices to port multipliers and quirky ones are easy to
>> find all along the spectrum.
>>
>> For example, according to the spec reset protocol and the actual
>> implementations, there's no defined way to wait for the initial D2H
>> Reg FIS after hardresetting a fan-out port.  The problem is that the
>> D2H Reg FIS can arrive during later steps of probing is in progress
>> and a rogue FIS at the right time can easily make the controller fail
>> or time out pending operations.
>>
>> Another problem of the long spectrum is that we can't choose the one
>> correct value as timeout for operations.  A timeout value which can
>> cover all the devices is too long and makes EH painfully slow when
>> something goes wrong.  Choosing shorter timeout means the ancient and
>> weirdos won't work.
>>
>> So, we have to resort to smart self adjusting timeouts.  Early
>> quickies to detect transient failures quickly and later long ones to
>> cover odd devices.  Deadline driven ata_eh_reset() was a step in that
>> direction and this patchset, in addition to other timeout related
>> improvements, applies it to the rest of EH commands.
>>
>> This patchset contains the following patches.
>>
>>  01-libata-kill-unused-constants.patch
>>  02-libata-consistently-use-msecs-for-time-durations.patch
>>  03-libata-improve-EH-retry-delay-handling.patch
>>  04-libata-use-ULONG_MAX-to-terminate-reset-timeout-tab.patch
>>  05-libata-improve-EH-internal-command-timeout-handling.patch
>>
>> #01, #02 and #04 are preparations.  #02 makes liata use msecs
>> consistently for time durations.  #03 makes inter-try or inter-reset
>> delays smarter and allows libata EH to delay less between tries
>> without sacrificing robustness.  #05 implements per command class
>> stepped timeouts for EH commands, so that the first IDENTIFY try fails
>> quickly but later on the device can take full 30secs to think about it
>> while restricting maximum timeout for SET_FEATURES to 10secs.
>>
>> This patchset makes whole EH behave much more swiftly and timeout
>> cases bearable.  :-)
> 
> ACK
> 
> for .27?  Seems useful to .26, but also we are late in .26-rc and this
> is a lot of changes for -rc$LATE :)

Yes, for .27.  It's too big a change for 26.

Thanks.

-- 
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux