summaryrefslogtreecommitdiffstats
path: root/libglusterfs
diff options
context:
space:
mode:
authorRaghavendra Bhat <raghavendra@redhat.com>2012-11-14 19:25:14 +0530
committerAnand Avati <avati@redhat.com>2013-01-17 21:15:13 -0800
commitfd8b19af1713f2800af743d851706b96ca15d9ec (patch)
treec64194b286718ab320b328b2375901a34eb03b6e /libglusterfs
parent165044cee54ceaa8f0adec6d571e9ad54f4f8e5d (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.h1
-rw-r--r--libglusterfs/src/graph.c11
-rw-r--r--libglusterfs/src/logging.c7
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)