summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPranith Kumar K <pranithk@gluster.com>2011-04-01 03:44:02 +0000
committerVijay Bellur <vijay@dev.gluster.com>2011-04-01 06:08:38 -0700
commitc0e6146f53d3e91764e9ff602ccba9a637b2db7d (patch)
tree36e81575c727feb192fc5fe77592d5f3c21db407
parentcd4fd271c6636ecc100171403b324a65a9e77fe2 (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.c105
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;