aoe: allow user to disable target failure timeout
authorEd Cashin <ecashin@coraid.com>
Tue, 18 Dec 2012 00:04:14 +0000 (16:04 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 18 Dec 2012 01:15:25 +0000 (17:15 -0800)
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: Ed Cashin <ecashin@coraid.com>
Cc: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Documentation/aoe/aoe.txt
drivers/block/aoe/aoecmd.c

index bfc9cb19abcd56ca23f240c9854f67e0c9f3ec0f..c71487d399d14688206afbe818be88c093ffde29 100644 (file)
@@ -125,7 +125,9 @@ DRIVER OPTIONS
   The aoe_deadsecs module parameter determines the maximum number of
   seconds that the driver will wait for an AoE device to provide a
   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
   maximum number of unresponded packets that will be sent to an AoE
index da360f95c8eaea4cd9cd42baad5e02f1f892708c..abf4ad2d3e185458c4fc4b66b8010ff7e6ac3dcf 100644 (file)
@@ -812,7 +812,9 @@ rexmit_timer(ulong vp)
                since = tsince_hr(f);
                n = f->waited_total + since;
                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.
                         * Hang all frames on first hash bucket for downdev
                         * to clean up.