• Tejun Heo's avatar
    libata: improve EH internal command timeout handling · 87fbc5a0
    Tejun Heo authored
    ATA_TMOUT_INTERNAL which was 30secs were used for all internal
    commands which is way too long when something goes wrong.  This patch
    implements command type based stepped timeouts.  Different command
    types can use different timeouts and each command type can use
    different timeout values after timeouts.
    
    ie. the initial timeout is set to a value which should cover most of
    the cases but not too long so that run away cases don't delay things
    too much.  After the first try times out, the second try can use
    longer timeout and if that one times out too, it can go for full 30sec
    timeout.
    
    IDENTIFYs use 5s - 10s - 30s timeout and all other commands use 5s -
    10s timeouts.
    
    This patch significantly cuts down the needed time to handle failure
    cases while still allowing libata to work with nut job devices through
    retries.
    Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
    Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
    87fbc5a0
libata.h 48.9 KB