Commit c450ba0f authored by Ed Cashin's avatar Ed Cashin Committed by Linus Torvalds

aoe: allow user to disable target failure timeout

With this change, the aoe driver treats the value zero as special for
the aoe_deadsecs module parameter.  Normally, this value specifies the
number of seconds during which the driver will continue to attempt
retransmits to an unresponsive AoE target.  After aoe_deadsecs has
elapsed, the aoe driver marks the aoe device as "down" and fails all
I/O.

The new meaning of an aoe_deadsecs of zero is for the driver to
retransmit commands indefinitely.
Signed-off-by: default avatarEd Cashin <ecashin@coraid.com>
Cc: Jens Axboe <axboe@kernel.dk>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 71114ec4
...@@ -125,7 +125,9 @@ DRIVER OPTIONS ...@@ -125,7 +125,9 @@ DRIVER OPTIONS
The aoe_deadsecs module parameter determines the maximum number of The aoe_deadsecs module parameter determines the maximum number of
seconds that the driver will wait for an AoE device to provide a seconds that the driver will wait for an AoE device to provide a
response to an AoE command. After aoe_deadsecs seconds have response to an AoE command. After aoe_deadsecs seconds have
elapsed, the AoE device will be marked as "down". elapsed, the AoE device will be marked as "down". A value of zero
is supported for testing purposes and makes the aoe driver keep
trying AoE commands forever.
The aoe_maxout module parameter has a default of 128. This is the The aoe_maxout module parameter has a default of 128. This is the
maximum number of unresponded packets that will be sent to an AoE maximum number of unresponded packets that will be sent to an AoE
......
...@@ -812,7 +812,9 @@ rexmit_timer(ulong vp) ...@@ -812,7 +812,9 @@ rexmit_timer(ulong vp)
since = tsince_hr(f); since = tsince_hr(f);
n = f->waited_total + since; n = f->waited_total + since;
n /= USEC_PER_SEC; n /= USEC_PER_SEC;
if (n > aoe_deadsecs && !(f->flags & FFL_PROBE)) { if (aoe_deadsecs
&& n > aoe_deadsecs
&& !(f->flags & FFL_PROBE)) {
/* Waited too long. Device failure. /* Waited too long. Device failure.
* Hang all frames on first hash bucket for downdev * Hang all frames on first hash bucket for downdev
* to clean up. * to clean up.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment