From: Michael Meffie Date: Tue, 20 Aug 2013 20:48:34 +0000 (-0400) Subject: bozo: cap retry delay X-Git-Tag: upstream/1.6.6_pre2^2~56 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=8db96f4848669ce2e765eda64ce0b0d28a8e20ef;p=packages%2Fo%2Fopenafs.git 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 --- 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;