• Tejun Heo's avatar
    libata: improve EH retry delay handling · 0a2c0f56
    Tejun Heo authored
    EH retries were delayed by 5 seconds to ensure that resets don't occur
    back-to-back.  However, this 5 second delay is superflous or excessive
    in many cases.  For example, after IDENTIFY times out, there's no
    reason to wait five more seconds before retrying.
    
    This patch adds ehc->last_reset timestamp and record the timestamp for
    the last reset trial or success and uses it to space resets by
    ATA_EH_RESET_COOL_DOWN which is 5 secs and removes unconditional 5 sec
    sleeps.
    
    As this change makes inter-try waits often shorter and they're
    redundant in nature, this patch also removes the "retrying..."
    messages.
    
    While at it, convert explicit rounding up division to DIV_ROUND_UP().
    
    This change speeds up EH in many cases w/o sacrificing robustness.
    Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
    Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
    0a2c0f56
libata-eh.c 74 KB