diff options
author | Raghavendra Bhat <raghavendra@redhat.com> | 2012-11-14 19:25:14 +0530 |
---|---|---|
committer | Anand Avati <avati@redhat.com> | 2013-01-17 21:15:13 -0800 |
commit | fd8b19af1713f2800af743d851706b96ca15d9ec (patch) | |
tree | c64194b286718ab320b328b2375901a34eb03b6e /libglusterfs | |
parent | 165044cee54ceaa8f0adec6d571e9ad54f4f8e5d (diff) |
debug/trace: save the recent fops received in the event-history
* Make use of event-history in debug/trace xlator to dump the recent fops,
when statedump is given. trace xlator saves the fop it received along
with the time in the event-history and upon statedump signal, dumps its
history. The size of the event-history can be given as a xlator option.
* Make changes in trace to take logging into log-file or logging to
history as an option. By default both are off.
Change-Id: I12baee5805c6efb55735cead4e2093fb94d7a6a0
BUG: 797171
Signed-off-by: Raghavendra Bhat <raghavendra@redhat.com>
Reviewed-on: http://review.gluster.org/4088
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'libglusterfs')
-rw-r--r-- | libglusterfs/src/common-utils.h | 1 | ||||
-rw-r--r-- | libglusterfs/src/graph.c | 11 | ||||
-rw-r--r-- | libglusterfs/src/logging.c | 7 |
3 files changed, 13 insertions, 6 deletions
diff --git a/libglusterfs/src/common-utils.h b/libglusterfs/src/common-utils.h index d9d3082c0fc..b89a988c62c 100644 --- a/libglusterfs/src/common-utils.h +++ b/libglusterfs/src/common-utils.h @@ -30,6 +30,7 @@ void trap (void); #define GF_UNIVERSAL_ANSWER 42 /* :O */ +#define TMP_MAX 238328 /* To solve type punned error */ #define VOID(ptr) ((void **) ((void *) ptr)) diff --git a/libglusterfs/src/graph.c b/libglusterfs/src/graph.c index 70b38dc504d..8a84d4cbc16 100644 --- a/libglusterfs/src/graph.c +++ b/libglusterfs/src/graph.c @@ -492,11 +492,14 @@ glusterfs_graph_activate (glusterfs_graph_t *graph, glusterfs_ctx_t *ctx) ctx->active = graph; /* XXX: attach to master and set active pointer */ - if (ctx->master) + if (ctx->master) { ret = xlator_notify (ctx->master, GF_EVENT_GRAPH_NEW, graph); - if (ret) { - gf_log ("graph", GF_LOG_ERROR, "graph new notification failed"); - return ret; + if (ret) { + gf_log ("graph", GF_LOG_ERROR, + "graph new notification failed"); + return ret; + } + ((xlator_t *)ctx->master)->next = graph->top; } /* XXX: perform parent up */ diff --git a/libglusterfs/src/logging.c b/libglusterfs/src/logging.c index d8b9a124b9e..65613f9852c 100644 --- a/libglusterfs/src/logging.c +++ b/libglusterfs/src/logging.c @@ -598,6 +598,10 @@ _gf_log_eh (const char *function, const char *fmt, ...) va_end (ap); msg = GF_MALLOC (strlen (str1) + strlen (str2) + 1, gf_common_mt_char); + if (!msg) { + ret = -1; + goto out; + } strcpy (msg, str1); strcat (msg, str2); @@ -605,8 +609,7 @@ _gf_log_eh (const char *function, const char *fmt, ...) ret = eh_save_history (this->history, msg); out: - if (str1) - GF_FREE (str1); + GF_FREE (str1); /* Use FREE instead of GF_FREE since str2 was allocated by vasprintf */ if (str2) |