From 8db96f4848669ce2e765eda64ce0b0d28a8e20ef Mon Sep 17 00:00:00 2001 From: Michael Meffie Date: Tue, 20 Aug 2013 16:48:34 -0400 Subject: [PATCH] bozo: cap retry delay Cap the retry delay to a reasonable amount of time instead of just doubling the delay until it reaches 16 hours. Reviewed-on: http://gerrit.openafs.org/10148 Reviewed-by: Andrew Deason Reviewed-by: Benjamin Kaduk Reviewed-by: Derrick Brashear Tested-by: BuildBot (cherry picked from commit 21c8f4809ee7af9d2ec76cb37747183cee0c0d33) Change-Id: If10880ba5411af0ea66bcb50c8cce13f4155f2ad Reviewed-on: http://gerrit.openafs.org/10199 Tested-by: BuildBot Reviewed-by: Stephan Wiesand --- src/bozo/bnode.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/bozo/bnode.c b/src/bozo/bnode.c index 749fe9ed2..82e7bcafb 100644 --- a/src/bozo/bnode.c +++ b/src/bozo/bnode.c @@ -47,6 +47,7 @@ #define BNODE_LWP_STACKSIZE (16 * 1024) #define BNODE_ERROR_COUNT_MAX 16 /* maximum number of retries */ +#define BNODE_ERROR_DELAY_MAX 60 /* maximum retry delay (seconds) */ int bnode_waiting = 0; static PROCESS bproc_pid; /* pid of waker-upper */ @@ -694,9 +695,12 @@ bproc(void *unused) } else { tb->errorStopCount++; if (!tb->errorStopDelay) { - tb->errorStopDelay = 1; + tb->errorStopDelay = 1; /* wait a second, then retry */ } else { - tb->errorStopDelay *= 2; + tb->errorStopDelay *= 2; /* ramp up the retry delays */ + } + if (tb->errorStopDelay > BNODE_ERROR_DELAY_MAX) { + tb->errorStopDelay = BNODE_ERROR_DELAY_MAX; /* cap the delay */ } } tb->flags |= BNODE_ERRORSTOP; -- 2.39.5