diff options
author | Pranith Kumar K <pranithk@gluster.com> | 2011-04-01 03:44:02 +0000 |
---|---|---|
committer | Vijay Bellur <vijay@dev.gluster.com> | 2011-04-01 06:08:38 -0700 |
commit | c0e6146f53d3e91764e9ff602ccba9a637b2db7d (patch) | |
tree | 36e81575c727feb192fc5fe77592d5f3c21db407 | |
parent | cd4fd271c6636ecc100171403b324a65a9e77fe2 (diff) |
debug/io-stats: Fix bugs in re-configure options
If the options are not present in vol file reset the option values.
If there is an invalid option log an error and continue,
no need to exit
Signed-off-by: Pranith Kumar K <pranithk@gluster.com>
Signed-off-by: Vijay Bellur <vijay@dev.gluster.com>
BUG: 2638 ()
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2638
-rw-r--r-- | xlators/debug/io-stats/src/io-stats.c | 105 |
1 files changed, 43 insertions, 62 deletions
diff --git a/xlators/debug/io-stats/src/io-stats.c b/xlators/debug/io-stats/src/io-stats.c index d4dd786ab..0a702d5a9 100644 --- a/xlators/debug/io-stats/src/io-stats.c +++ b/xlators/debug/io-stats/src/io-stats.c @@ -2352,32 +2352,26 @@ io_stats_forget (xlator_t *this, inode_t *inode) } int -reconfigure (xlator_t *this, dict_t *options) +iostats_configure_options (xlator_t *this, dict_t *options, + struct ios_conf *conf) { - struct ios_conf *conf = NULL; - char *str = NULL; int ret = 0; char *log_str = NULL; - glusterfs_ctx_t *ctx = NULL; - - if (!this || !this->private) - return -1; - - conf = this->private; - ret = dict_get_str (options, "dump-fd-stats", &str); - if (ret == 0) { - ret = gf_string2boolean (str, &conf->dump_fd_stats); - if (ret == -1) { - gf_log (this->name, GF_LOG_ERROR, - "'dump-fd-stats' takes only boolean arguments"); - return -1; - } + GF_ASSERT (this); + GF_ASSERT (options); + GF_ASSERT (conf); - if (conf->dump_fd_stats) { - gf_log (this->name, GF_LOG_DEBUG, - "enabling dump-fd-stats"); - } + ret = dict_get_str_boolean (options, "dump-fd-stats", _gf_false); + if (ret == -1) { + gf_log (this->name, GF_LOG_ERROR, + "'dump-fd-stats' takes only boolean arguments"); + } else { + conf->dump_fd_stats = ret; + if (conf->dump_fd_stats) + gf_log (this->name, GF_LOG_DEBUG, "enabling dump-fd-stats"); + else + gf_log (this->name, GF_LOG_DEBUG, "disabling dump-fd-stats"); } ret = dict_get_str_boolean (options, "latency-measurement", 0); @@ -2388,14 +2382,15 @@ reconfigure (xlator_t *this, dict_t *options) conf->measure_latency, ret); } conf->measure_latency = ret; + } else { + gf_log (this->name, GF_LOG_ERROR, + "'latency-measurement' takes only boolean arguments"); } - ctx = glusterfs_ctx_get (); - if (!ctx) - return -1; ret = dict_get_str (options, "log-level", &log_str); if (!ret) { - if (!is_gf_log_command(this, "trusted.glusterfs.set-log-level", log_str)) { + if (!is_gf_log_command(this, "trusted.glusterfs.set-log-level", + log_str)) { gf_log (this->name, GF_LOG_DEBUG, "changing log-level to %s", log_str); } @@ -2403,6 +2398,25 @@ reconfigure (xlator_t *this, dict_t *options) return 0; } +int +reconfigure (xlator_t *this, dict_t *options) +{ + struct ios_conf *conf = NULL; + glusterfs_ctx_t *ctx = NULL; + + if (!this || !this->private) + return -1; + + conf = this->private; + + iostats_configure_options (this, options, conf); + ctx = glusterfs_ctx_get (); + if (!ctx) + return -1; + + return 0; +} + int32_t mem_acct_init (xlator_t *this) { @@ -2412,7 +2426,7 @@ mem_acct_init (xlator_t *this) return ret; ret = xlator_mem_acct_init (this, gf_io_stats_mt_end + 1); - + if (ret != 0) { gf_log (this->name, GF_LOG_ERROR, "Memory accounting init" " failed"); @@ -2427,9 +2441,6 @@ init (xlator_t *this) { dict_t *options = NULL; struct ios_conf *conf = NULL; - char *str = NULL; - int ret = 0; - char *log_str = NULL; int i = 0; if (!this) @@ -2465,8 +2476,8 @@ init (xlator_t *this) gettimeofday (&conf->incremental.started_at, NULL); for (i = 0; i <IOS_STATS_TYPE_MAX; i++) { - conf->list[i].iosstats = GF_CALLOC (1, - sizeof(*conf->list[i].iosstats), + conf->list[i].iosstats = GF_CALLOC (1, + sizeof(*conf->list[i].iosstats), gf_io_stats_mt_ios_stat); if (!conf->list[i].iosstats) { @@ -2494,37 +2505,7 @@ init (xlator_t *this) LOCK_INIT (&conf->thru_list[i].lock); } - ret = dict_get_str (options, "dump-fd-stats", &str); - if (ret == 0) { - ret = gf_string2boolean (str, &conf->dump_fd_stats); - if (ret == -1) { - gf_log (this->name, GF_LOG_ERROR, - "'dump-fd-stats' takes only boolean arguments"); - return -1; - } - - if (conf->dump_fd_stats) { - gf_log (this->name, GF_LOG_DEBUG, - "enabling dump-fd-stats"); - } - } - - ret = dict_get_str_boolean (options, "latency-measurement", 0); - if (ret != -1) { - conf->measure_latency = ret; - if (conf->measure_latency) - gf_log (this->name, GF_LOG_DEBUG, - "enabling latency measurement"); - } - - ret = dict_get_str (options, "log-level", &log_str); - if (!ret) { - if (!is_gf_log_command(this, "trusted.glusterfs.set-log-level", log_str)) { - gf_log (this->name, GF_LOG_DEBUG, - "changing log-level to %s", log_str); - } - } - + iostats_configure_options (this, options, conf); this->private = conf; return 0; |