summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cli/src/cli-rpc-ops.c19
-rw-r--r--libglusterfs/src/circ-buff.c1
-rw-r--r--xlators/cluster/afr/src/afr-self-heald.c32
3 files changed, 40 insertions, 12 deletions
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c
index da66af6a3..434e9a6b1 100644
--- a/cli/src/cli-rpc-ops.c
+++ b/cli/src/cli-rpc-ops.c
@@ -5801,6 +5801,9 @@ cmd_heal_volume_brick_out (dict_t *dict, int brick)
char *path = NULL;
char *status = NULL;
uint64_t i = 0;
+ uint32_t time = 0;
+ char timestr[256];
+ struct tm *tm = NULL;
snprintf (key, sizeof (key), "%d-hostname", brick);
ret = dict_get_str (dict, key, &hostname);
@@ -5823,7 +5826,21 @@ cmd_heal_volume_brick_out (dict_t *dict, int brick)
ret = dict_get_str (dict, key, &path);
if (ret)
continue;
- cli_out ("%s", path);
+ time = 0;
+ snprintf (key, sizeof (key), "%d-%"PRIu64"-time", brick, i);
+ ret = dict_get_uint32 (dict, key, &time);
+ if (!time) {
+ cli_out ("%s", path);
+ } else {
+ tm = localtime ((time_t*)(&time));
+ strftime (timestr, sizeof (timestr),
+ "%Y-%m-%d %H:%M:%S", tm);
+ if (i ==0) {
+ cli_out ("at path on brick");
+ cli_out ("-----------------------------------");
+ }
+ cli_out ("%s %s", timestr, path);
+ }
}
out:
return;
diff --git a/libglusterfs/src/circ-buff.c b/libglusterfs/src/circ-buff.c
index 0eab436d4..6c7907a09 100644
--- a/libglusterfs/src/circ-buff.c
+++ b/libglusterfs/src/circ-buff.c
@@ -49,7 +49,6 @@ __cb_add_entry_buffer (buffer_t *buffer, void *item)
if (ret == -1)
gf_log_callingfn ("", GF_LOG_WARNING, "getting time of"
"the day failed");
-
buffer->w_index++;
buffer->w_index %= buffer->size_buffer - 1;
//used_buffer size cannot be greater than the total buffer size
diff --git a/xlators/cluster/afr/src/afr-self-heald.c b/xlators/cluster/afr/src/afr-self-heald.c
index 19c3dd98c..3a6295749 100644
--- a/xlators/cluster/afr/src/afr-self-heald.c
+++ b/xlators/cluster/afr/src/afr-self-heald.c
@@ -126,8 +126,8 @@ _build_index_loc (xlator_t *this, loc_t *loc, char *name, loc_t *parent)
}
int
-_add_str_to_dict (xlator_t *this, dict_t *output, int child, char *str,
- gf_boolean_t dyn)
+_add_path_to_dict (xlator_t *this, dict_t *output, int child, char *path,
+ struct timeval *tv, gf_boolean_t dyn)
{
//subkey not used for now
int ret = -1;
@@ -146,15 +146,27 @@ _add_str_to_dict (xlator_t *this, dict_t *output, int child, char *str,
snprintf (key, sizeof (key), "%d-%d-%"PRIu64, xl_id, child, count);
if (dyn)
- ret = dict_set_dynstr (output, key, str);
+ ret = dict_set_dynstr (output, key, path);
else
- ret = dict_set_str (output, key, str);
+ ret = dict_set_str (output, key, path);
if (ret) {
gf_log (this->name, GF_LOG_ERROR, "%s: Could not add to output",
- str);
+ path);
goto out;
}
+ if (!tv)
+ goto inc_count;
+ snprintf (key, sizeof (key), "%d-%d-%"PRIu64"-time", xl_id,
+ child, count);
+ ret = dict_set_uint32 (output, key, tv->tv_sec);
+ if (ret) {
+ gf_log (this->name, GF_LOG_ERROR, "%s: Could not set time",
+ path);
+ goto out;
+ }
+
+inc_count:
snprintf (key, sizeof (key), "%d-%d-count", xl_id, child);
ret = dict_set_uint64 (output, key, count + 1);
if (ret) {
@@ -209,9 +221,9 @@ _add_event_to_dict (circular_buffer_t *cb, void *data)
shd_event = cb->data;
if (shd_event->child != dump_data->child)
goto out;
- ret = _add_str_to_dict (dump_data->this, dump_data->dict,
- dump_data->child, shd_event->path,
- _gf_false);
+ ret = _add_path_to_dict (dump_data->this, dump_data->dict,
+ dump_data->child, shd_event->path, &cb->tv,
+ _gf_false);
out:
return ret;
}
@@ -248,8 +260,8 @@ _add_summary_to_dict (xlator_t *this, afr_crawl_data_t *crawl_data,
if (ret)
goto out;
- ret = _add_str_to_dict (this, output, crawl_data->child, path,
- _gf_true);
+ ret = _add_path_to_dict (this, output, crawl_data->child, path, NULL,
+ _gf_true);
out:
if (ret && path)
GF_FREE (path);