diff options
author | Ed Cashin <ecashin@coraid.com> | 2012-10-04 20:16:29 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-05 14:05:26 -0400 |
commit | d54d35ac6605161a593e3f4411de338ef81b5263 (patch) | |
tree | 369561cb1495afc77a918ab6e36d9b47512b4e8c /drivers/block/aoe | |
parent | 3f0f0133747368fe0fcf3908f788b53591bff4e0 (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.h | 1 | ||||
-rw-r--r-- | drivers/block/aoe/aoecmd.c | 8 |
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 | ||
102 | struct buf { | 101 | struct 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--; |