diff options
author | David Goulet <dgoulet@torproject.org> | 2017-09-22 11:33:50 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-09-25 11:11:30 -0400 |
commit | ef2a449cceceb777126119d20c15cda707c17d61 (patch) | |
tree | 149e76c9a0d6b0a2637c79a6014d00b4bc3eadf5 /src/or/scheduler_kist.c | |
parent | 230a33679814f3074c0ba43e42dc7b38b5342c10 (diff) | |
download | tor-ef2a449cceceb777126119d20c15cda707c17d61.tar.gz tor-ef2a449cceceb777126119d20c15cda707c17d61.zip |
sched: Make KISTSchedRunInterval non negative
Fixes #23539.
Signed-off-by: David Goulet <dgoulet@torproject.org>
Diffstat (limited to 'src/or/scheduler_kist.c')
-rw-r--r-- | src/or/scheduler_kist.c | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/src/or/scheduler_kist.c b/src/or/scheduler_kist.c index 5ba31bb87b..8fe3ff5564 100644 --- a/src/or/scheduler_kist.c +++ b/src/or/scheduler_kist.c @@ -208,8 +208,8 @@ update_socket_info_impl, (socket_table_ent_t *ent)) * support. */ log_notice(LD_SCHED, "Looks like our kernel doesn't have the support " "for KIST anymore. We will fallback to the naive " - "approach. Set KISTSchedRunInterval=-1 to disable " - "KIST."); + "approach. Remove KIST from the Schedulers list " + "to disable."); kist_no_kernel_support = 1; } goto fallback; @@ -218,8 +218,8 @@ update_socket_info_impl, (socket_table_ent_t *ent)) if (errno == EINVAL) { log_notice(LD_SCHED, "Looks like our kernel doesn't have the support " "for KIST anymore. We will fallback to the naive " - "approach. Set KISTSchedRunInterval=-1 to disable " - "KIST."); + "approach. Remove KIST from the Schedulers list " + "to disable."); /* Same reason as the above. */ kist_no_kernel_support = 1; } @@ -491,7 +491,7 @@ static void kist_scheduler_init(void) { kist_scheduler_on_new_options(); - IF_BUG_ONCE(sched_run_interval <= 0) { + IF_BUG_ONCE(sched_run_interval == 0) { log_warn(LD_SCHED, "We are initing the KIST scheduler and noticed the " "KISTSchedRunInterval is telling us to not use KIST. That's " "weird! We'll continue using KIST, but at %dms.", @@ -705,33 +705,34 @@ get_kist_scheduler(void) return &kist_scheduler; } -/* Check the torrc for the configured KIST scheduler run interval. - * - If torrc < 0, then return the negative torrc value (shouldn't even be - * using KIST) +/* Check the torrc (and maybe consensus) for the configured KIST scheduler run + * interval. * - If torrc > 0, then return the positive torrc value (should use KIST, and * should use the set value) * - If torrc == 0, then look in the consensus for what the value should be. - * - If == 0, then return -1 (don't use KIST) + * - If == 0, then return 0 (don't use KIST) * - If > 0, then return the positive consensus value - * - If consensus doesn't say anything, return 10 milliseconds + * - If consensus doesn't say anything, return 10 milliseconds, default. */ -int32_t +uint32_t kist_scheduler_run_interval(const networkstatus_t *ns) { - int32_t run_interval = (int32_t)get_options()->KISTSchedRunInterval; + uint32_t run_interval = get_options()->KISTSchedRunInterval; + if (run_interval != 0) { - log_debug(LD_SCHED, "Found KISTSchedRunInterval in torrc. Using that."); + log_debug(LD_SCHED, "Found KISTSchedRunInterval=%" PRIu32 " in torrc. " + "Using that.", run_interval); return run_interval; } - log_debug(LD_SCHED, "Turning to the consensus for KISTSchedRunInterval"); - run_interval = networkstatus_get_param(ns, "KISTSchedRunInterval", - KIST_SCHED_RUN_INTERVAL_DEFAULT, - KIST_SCHED_RUN_INTERVAL_MIN, - KIST_SCHED_RUN_INTERVAL_MAX); - if (run_interval <= 0) - return -1; - return run_interval; + log_debug(LD_SCHED, "KISTSchedRunInterval=0, turning to the consensus."); + + /* Will either be the consensus value or the default. Note that 0 can be + * returned which means the consensus wants us to NOT use KIST. */ + return networkstatus_get_param(ns, "KISTSchedRunInterval", + KIST_SCHED_RUN_INTERVAL_DEFAULT, + KIST_SCHED_RUN_INTERVAL_MIN, + KIST_SCHED_RUN_INTERVAL_MAX); } /* Set KISTLite mode that is KIST without kernel support. */ @@ -767,9 +768,9 @@ scheduler_can_use_kist(void) /* We do have the support, time to check if we can get the interval that the * consensus can be disabling. */ - int64_t run_interval = kist_scheduler_run_interval(NULL); + uint32_t run_interval = kist_scheduler_run_interval(NULL); log_debug(LD_SCHED, "Determined KIST sched_run_interval should be " - "%" PRId64 ". Can%s use KIST.", + "%" PRIu32 ". Can%s use KIST.", run_interval, (run_interval > 0 ? "" : " not")); return run_interval > 0; } |