aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/aoe
diff options
context:
space:
mode:
authorEd Cashin <ecashin@coraid.com>2012-10-04 20:16:29 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-05 14:05:26 -0400
commitd54d35ac6605161a593e3f4411de338ef81b5263 (patch)
tree369561cb1495afc77a918ab6e36d9b47512b4e8c /drivers/block/aoe
parent3f0f0133747368fe0fcf3908f788b53591bff4e0 (diff)
aoe: failover remote interface based on aoe_deadsecs parameter
The aoe_deadsecs module parameter allows the user to specify a hard limit on the number of seconds an AoE command can be retransmitted before the AoE block device is considered to have failed. Using aoe_deadsecs to determine the time we try using a different remote interface helps to ensure that the hard limit is not reached before we've tried to recover by sending to a different remote port. As a data storage target, the AoE target is unambiguously identified by its {major, minor} AoE address tuple, and an AoE target can have multiple MAC addresses. However, note that "target" in the driver code and comments means a {major, minor, MAC address} tuple, as in "somewhere to send packets". Signed-off-by: Ed Cashin <ecashin@coraid.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/block/aoe')
-rw-r--r--drivers/block/aoe/aoe.h1
-rw-r--r--drivers/block/aoe/aoecmd.c8
2 files changed, 3 insertions, 6 deletions
diff --git a/drivers/block/aoe/aoe.h b/drivers/block/aoe/aoe.h
index ffded64dcbeb..d17b72763973 100644
--- a/drivers/block/aoe/aoe.h
+++ b/drivers/block/aoe/aoe.h
@@ -96,7 +96,6 @@ enum {
96 TIMERTICK = HZ / 10, 96 TIMERTICK = HZ / 10,
97 MINTIMER = HZ >> 2, 97 MINTIMER = HZ >> 2,
98 MAXTIMER = HZ << 1, 98 MAXTIMER = HZ << 1,
99 HELPWAIT = 20,
100}; 99};
101 100
102struct buf { 101struct buf {
diff --git a/drivers/block/aoe/aoecmd.c b/drivers/block/aoe/aoecmd.c
index bbab40c8d67c..e3291dfa7607 100644
--- a/drivers/block/aoe/aoecmd.c
+++ b/drivers/block/aoe/aoecmd.c
@@ -633,11 +633,9 @@ rexmit_timer(ulong vp)
633 list_del(pos); 633 list_del(pos);
634 634
635 t = f->t; 635 t = f->t;
636 if (n > HELPWAIT) { 636 if (n > aoe_deadsecs/2)
637 /* see if another target can help */ 637 d->htgt = t; /* see if another target can help */
638 if (d->ntargets > 1) 638
639 d->htgt = t;
640 }
641 if (t->nout == t->maxout) { 639 if (t->nout == t->maxout) {
642 if (t->maxout > 1) 640 if (t->maxout > 1)
643 t->maxout--; 641 t->maxout--;