From 992f3bcac0d9f9130304ef88130149bc8ad1b509 Mon Sep 17 00:00:00 2001 From: Ed Cashin Date: Thu, 13 Sep 2012 11:01:34 +1000 Subject: [PATCH] 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 Signed-off-by: Andrew Morton --- drivers/block/aoe/aoe.h | 1 - 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 { TIMERTICK = HZ / 10, MINTIMER = HZ >> 2, MAXTIMER = HZ << 1, - HELPWAIT = 20, }; struct buf { diff --git a/drivers/block/aoe/aoecmd.c b/drivers/block/aoe/aoecmd.c index 65abc3092f23..af2e3479b884 100644 --- a/drivers/block/aoe/aoecmd.c +++ b/drivers/block/aoe/aoecmd.c @@ -632,11 +632,9 @@ rexmit_timer(ulong vp) list_del(pos); t = f->t; - if (n > HELPWAIT) { - /* see if another target can help */ - if (d->ntargets > 1) - d->htgt = t; - } + if (n > aoe_deadsecs/2) + d->htgt = t; /* see if another target can help */ + if (t->nout == t->maxout) { if (t->maxout > 1) t->maxout--; -- 2.39.5