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)  | 
