diff options
Diffstat (limited to 'xlators/cluster/dht/src/dht-shared.c')
-rw-r--r-- | xlators/cluster/dht/src/dht-shared.c | 129 |
1 files changed, 52 insertions, 77 deletions
diff --git a/xlators/cluster/dht/src/dht-shared.c b/xlators/cluster/dht/src/dht-shared.c index 9c3eb16869c..96b9699f228 100644 --- a/xlators/cluster/dht/src/dht-shared.c +++ b/xlators/cluster/dht/src/dht-shared.c @@ -394,13 +394,60 @@ out: } int +dht_configure_throttle (xlator_t *this, dht_conf_t *conf, char *temp_str) +{ + int rebal_thread_count = 0; + int ret = 0; + + pthread_mutex_lock (&conf->defrag->dfq_mutex); + { + if (!strcasecmp (temp_str, "lazy")) { + conf->defrag->recon_thread_count = 1; + } else if (!strcasecmp (temp_str, "normal")) { + conf->defrag->recon_thread_count = 2; + } else if (!strcasecmp (temp_str, "aggressive")) { + conf->defrag->recon_thread_count = MAX (MAX_REBAL_THREADS - 4, 4); + } else if ((gf_string2int (temp_str, &rebal_thread_count) == 0)) { + if ((rebal_thread_count > 0) && (rebal_thread_count <= MAX_REBAL_THREADS)) { + gf_msg (this->name, GF_LOG_INFO, 0, 0, + "rebal thread count configured to %d", + rebal_thread_count); + conf->defrag->recon_thread_count = rebal_thread_count; + } else { + gf_msg(this->name, GF_LOG_ERROR, 0, + DHT_MSG_INVALID_OPTION, + "Invalid option: Reconfigure: " + "rebal-throttle should be " + "within range of 0 and maximum number of" + " cores available"); + ret = -1; + pthread_mutex_unlock (&conf->defrag->dfq_mutex); + goto out; + } + } else { + gf_msg (this->name, GF_LOG_ERROR, 0, + DHT_MSG_INVALID_OPTION, + "Invalid option: Reconfigure: " + "rebal-throttle should be {lazy|normal|aggressive}" + " or a number upto number of cores available," + " not (%s), defaulting to (%d)", + temp_str, conf->dthrottle); + ret = -1; + } + } + pthread_mutex_unlock (&conf->defrag->dfq_mutex); + +out: + return ret; +} + +int dht_reconfigure (xlator_t *this, dict_t *options) { dht_conf_t *conf = NULL; char *temp_str = NULL; gf_boolean_t search_unhashed; int ret = -1; - int rebal_thread_count = 0; GF_VALIDATE_OR_GOTO ("dht", this, out); GF_VALIDATE_OR_GOTO ("dht", options, out); @@ -460,45 +507,11 @@ dht_reconfigure (xlator_t *this, dict_t *options) options, bool, out); if (conf->defrag) { - pthread_mutex_lock (&conf->defrag->dfq_mutex); - { if (dict_get_str (options, "rebal-throttle", &temp_str) == 0) { - if (!strcasecmp (temp_str, "lazy")) { - conf->defrag->recon_thread_count = 1; - } else if (!strcasecmp (temp_str, "normal")) { - conf->defrag->recon_thread_count = 3; - } else if (!strcasecmp (temp_str, "aggressive")) { - conf->defrag->recon_thread_count = MAX ((MAX_REBAL_THREADS - 4), 4); - } else if ((gf_string2int (temp_str, &rebal_thread_count) == 0)) { - if ((rebal_thread_count > 0) && (rebal_thread_count <= MAX_REBAL_THREADS)) { - gf_msg_debug (this->name, 0, "rebal throttle count reconfigured to %d", rebal_thread_count); - conf->defrag->recon_thread_count = rebal_thread_count; - } else { - gf_msg(this->name, GF_LOG_ERROR, 0, - DHT_MSG_INVALID_OPTION, - "Invalid option: Reconfigure: " - "rebal-throttle should be " - "within range of 0 and maximum number of" - " cores available"); - ret = -1; - pthread_mutex_unlock (&conf->defrag->dfq_mutex); - goto out; - } - } else { - gf_msg(this->name, GF_LOG_ERROR, 0, - DHT_MSG_INVALID_OPTION, - "Invalid option: Reconfigure: " - "rebal-throttle should be {lazy|normal|aggressive}" - " or a number upto number of cores available," - " not (%s), defaulting to (%d)", - temp_str, conf->dthrottle); - ret = -1; - pthread_mutex_unlock (&conf->defrag->dfq_mutex); + ret = dht_configure_throttle (this, conf, temp_str); + if (ret == -1) goto out; - } } - } - pthread_mutex_unlock (&conf->defrag->dfq_mutex); } if (conf->defrag) { @@ -641,7 +654,6 @@ dht_init (xlator_t *this) int cmd = 0; char *node_uuid = NULL; uint32_t commit_hash = 0; - int rebal_thread_count = 0; GF_VALIDATE_OR_GOTO ("dht", this, err); @@ -843,46 +855,9 @@ dht_init (xlator_t *this) if (defrag) { GF_OPTION_INIT ("rebal-throttle", temp_str, str, err); if (temp_str) { - - pthread_mutex_lock (&conf->defrag->dfq_mutex); - { - if (!strcasecmp (temp_str, "lazy")) { - conf->defrag->recon_thread_count = 1; - } else if (!strcasecmp (temp_str, "normal")) { - conf->defrag->recon_thread_count = 2; - } else if (!strcasecmp (temp_str, "aggressive")) { - conf->defrag->recon_thread_count = MAX (MAX_REBAL_THREADS - 4, 4); - } else if ((gf_string2int (temp_str, &rebal_thread_count) == 0)) { - if ((rebal_thread_count > 0) && (rebal_thread_count <= MAX_REBAL_THREADS)) { - gf_msg (this->name, GF_LOG_INFO, 0, 0, - "rebal thread count configured to %d", - rebal_thread_count); - conf->defrag->recon_thread_count = rebal_thread_count; - } else { - gf_msg(this->name, GF_LOG_ERROR, 0, - DHT_MSG_INVALID_OPTION, - "Invalid option: Reconfigure: " - "rebal-throttle should be " - "within range of 0 and maximum number of" - " cores available"); - ret = -1; - pthread_mutex_unlock (&conf->defrag->dfq_mutex); - goto err; - } - } else { - gf_msg(this->name, GF_LOG_ERROR, 0, - DHT_MSG_INVALID_OPTION, - "Invalid option: Reconfigure: " - "rebal-throttle should be {lazy|normal|aggressive}" - " or a number upto number of cores available," - " not (%s), defaulting to (%d)", - temp_str, conf->dthrottle); - ret = -1; - pthread_mutex_unlock (&conf->defrag->dfq_mutex); + ret = dht_configure_throttle (this, conf, temp_str); + if (ret == -1) goto err; - } - } - pthread_mutex_unlock (&conf->defrag->dfq_mutex); } } |