libata: improve EH retry delay handling
authorTejun Heo <htejun@gmail.com>
Mon, 19 May 2008 17:17:52 +0000 (02:17 +0900)
committerJeff Garzik <jgarzik@redhat.com>
Mon, 14 Jul 2008 19:59:32 +0000 (15:59 -0400)
commit0a2c0f56159999e20015241d3b8fa89b1ab14309
tree2c516452d3b3f85e9a4092b6092160e123d5f5d4
parent341c2c958ec7bdd9f54733a8b0b432fe76842a82
libata: improve EH retry delay handling

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: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/ata/libata-eh.c
drivers/ata/libata-pmp.c
include/linux/libata.h