summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Darcy <jdarcy@redhat.com>2016-07-26 08:49:36 -0400
committerVijay Bellur <vbellur@redhat.com>2016-07-29 12:35:36 -0700
commit9206f5b770bbfc2cf1697f10c1e650cae35272f1 (patch)
tree32ea9ef6b6cf47fe0d4e90ec4dd8b969b8a715f3
parent138bea7ea65987ca23f73c1f0c4f8868fd38cdff (diff)
io-stats: fix translator names
Change-Id: Icf5afaee8b7c704aecab7f8a8a1df9f1bc9288ce BUG: 1360401 Signed-off-by: Jeff Darcy <jdarcy@redhat.com> Reviewed-on: http://review.gluster.org/15016 Smoke: Gluster Build System <jenkins@build.gluster.org> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
-rw-r--r--glusterfsd/src/glusterfsd-mgmt.c9
-rw-r--r--xlators/debug/io-stats/src/io-stats.c30
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-volgen.c9
3 files changed, 42 insertions, 6 deletions
diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c
index d5dc5607cd8..51680e68b67 100644
--- a/glusterfsd/src/glusterfsd-mgmt.c
+++ b/glusterfsd/src/glusterfsd-mgmt.c
@@ -341,6 +341,15 @@ cont:
goto out;
}
+ /*
+ * Searching by name will only get us to the decompounder translator,
+ * but we really want io-stats. Since we know the exact relationship
+ * between these two, it's easy to get from one to the other.
+ *
+ * TBD: should this even be notify, or something else?
+ */
+ xlator = FIRST_CHILD(xlator);
+
output = dict_new ();
ret = xlator->notify (xlator, GF_EVENT_TRANSLATOR_INFO, dict, output);
diff --git a/xlators/debug/io-stats/src/io-stats.c b/xlators/debug/io-stats/src/io-stats.c
index 5e82fb4c029..d7684e16470 100644
--- a/xlators/debug/io-stats/src/io-stats.c
+++ b/xlators/debug/io-stats/src/io-stats.c
@@ -146,6 +146,18 @@ struct ios_conf {
ios_sample_buf_t *ios_sample_buf;
struct dnscache *dnscache;
int32_t ios_dnscache_ttl_sec;
+ /*
+ * What we really need here is just a unique value to keep files
+ * created by this instance distinct from those created by any other.
+ * On the client side this isn't a problem, so we just use the
+ * translator name. On the server side conflicts can occur, so the
+ * volfile-generation code automatically sets this (via an option)
+ * to be the brick path.
+ *
+ * NB While the *field* name has changed, it didn't seem worth changing
+ * all of the cases where "xlator_name" is used as a *variable* name.
+ */
+ char *unique_id;
};
@@ -702,8 +714,9 @@ _io_stats_get_key_prefix (xlator_t *this, char **key_prefix) {
int bytes_written = 0;
int i = 0;
int ret = 0;
+ struct ios_conf *conf = this->private;
- xlator_name = strdupa (this->name);
+ xlator_name = strdupa (conf->unique_id);
for (i = 0; i < strlen (xlator_name); i++) {
if (xlator_name[i] == '/')
xlator_name[i] = '_';
@@ -1036,7 +1049,7 @@ _io_stats_write_latency_sample (xlator_t *this, ios_sample_t *sample,
hostname = "Unknown";
}
- xlator_name = this->name;
+ xlator_name = conf->unique_id;
if (!xlator_name || strlen (xlator_name) == 0)
xlator_name = "Unknown";
@@ -2911,7 +2924,7 @@ _ios_dump_thread (xlator_t *this) {
conf = this->private;
gf_log (this->name, GF_LOG_INFO, "IO stats dump thread started, "
"polling IO stats every %d seconds", conf->ios_dump_interval);
- xlator_name = strdupa (this->name);
+ xlator_name = strdupa (conf->unique_id);
for (i = 0; i < strlen (xlator_name); i++) {
if (xlator_name[i] == '/')
xlator_name[i] = '_';
@@ -3654,6 +3667,11 @@ init (xlator_t *this)
if (!conf)
goto out;
+ if (dict_get_str (this->options, "unique-id", &conf->unique_id) != 0) {
+ /* This is always set on servers, so we must be a client. */
+ conf->unique_id = this->name;
+ }
+
/*
* Init it just after calloc, so that we are sure the lock is inited
* in case of error paths.
@@ -3724,7 +3742,6 @@ init (xlator_t *this)
GF_OPTION_INIT ("log-flush-timeout", log_flush_timeout, time, out);
gf_log_set_log_flush_timeout (log_flush_timeout);
-
this->private = conf;
if (conf->ios_dump_interval > 0) {
pthread_create (&conf->dump_thread, NULL,
@@ -4086,6 +4103,11 @@ struct volume_options options[] = {
"log messages that can be buffered for a time equal to"
" the value of the option brick-log-flush-timeout."
},
+ { .key = {"unique-id"},
+ .type = GF_OPTION_TYPE_STR,
+ .default_value = "/no/such/path",
+ .description = "Unique ID for our files."
+ },
{ .key = {NULL} },
};
diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c
index 9eefd2a8491..699137d8f9e 100644
--- a/xlators/mgmt/glusterd/src/glusterd-volgen.c
+++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c
@@ -1555,7 +1555,8 @@ brick_graph_add_decompounder (volgen_graph_t *graph, glusterd_volinfo_t *volinfo
conf = this->private;
GF_VALIDATE_OR_GOTO (this->name, conf, out);
- xl = volgen_graph_add (graph, "performance/decompounder", volinfo->volname);
+ xl = volgen_graph_add_as (graph, "performance/decompounder",
+ brickinfo->path);
if (xl)
ret = 0;
out:
@@ -2170,10 +2171,14 @@ brick_graph_add_io_stats (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
if (!graph || !volinfo || !set_dict || !brickinfo)
goto out;
- xl = volgen_graph_add_as (graph, "debug/io-stats", brickinfo->path);
+ xl = volgen_graph_add (graph, "debug/io-stats", volinfo->volname);
if (!xl)
goto out;
+ ret = xlator_set_option (xl, "unique-id", brickinfo->path);
+ if (ret)
+ goto out;
+
ret = 0;
out:
return ret;