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 <adeason@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
(cherry picked from commit
21c8f4809ee7af9d2ec76cb37747183cee0c0d33)
Change-Id: If10880ba5411af0ea66bcb50c8cce13f4155f2ad
Reviewed-on: http://gerrit.openafs.org/10199
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
#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 */
} 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;