From ef44323b4ba58fa8c1eb89105851983f828dd91b Mon Sep 17 00:00:00 2001 From: Csaba Henk Date: Sat, 2 Oct 2010 07:30:39 +0000 Subject: volgen: reimplement volgen Generating a volfile occurs in two steps: - Build a graph (ie, glusterfs_graph_t instance) by graph manipulation primitives - Write out the graph to a file by the the graph printing API. Graph builder routines can optionally make use of a "modifier dict", which can contain overrides wrt. volume options. This can be used for a "dry-run" graph generation. Signed-off-by: Csaba Henk Signed-off-by: Vijay Bellur BUG: 1750 (clean up volgen) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1750 --- libglusterfs/src/graph.y | 40 +++------------------------------------- 1 file changed, 3 insertions(+), 37 deletions(-) (limited to 'libglusterfs/src/graph.y') diff --git a/libglusterfs/src/graph.y b/libglusterfs/src/graph.y index 14afaae6475..19dfff0fd6e 100644 --- a/libglusterfs/src/graph.y +++ b/libglusterfs/src/graph.y @@ -30,6 +30,7 @@ #include #include "xlator.h" +#include "graph-utils.h" #include "logging.h" static int new_volume (char *name); @@ -270,9 +271,6 @@ volume_sub (char *sub) { extern int yylineno; xlator_t *trav = NULL; - xlator_list_t *xlchild = NULL; - xlator_list_t *tmp = NULL; - xlator_list_t *xlparent = NULL; int ret = 0; if (!sub) { @@ -306,45 +304,13 @@ volume_sub (char *sub) goto out; } - xlparent = (void *) GF_CALLOC (1, sizeof (*xlparent), - gf_common_mt_xlator_list_t); - - if (!xlparent) { - gf_log ("parser", GF_LOG_ERROR, "Out of memory"); - ret = -1; - goto out; - } - - xlparent->xlator = curr; - - tmp = trav->parents; - if (tmp == NULL) { - trav->parents = xlparent; - } else { - while (tmp->next) - tmp = tmp->next; - tmp->next = xlparent; - } - - xlchild = (void *) GF_CALLOC (1, sizeof(*xlchild), - gf_common_mt_xlator_list_t); - if (!xlchild) { + ret = glusterfs_xlator_link (curr, trav); + if (ret) { gf_log ("parser", GF_LOG_ERROR, "Out of memory"); ret = -1; goto out; } - xlchild->xlator = trav; - - tmp = curr->children; - if (tmp == NULL) { - curr->children = xlchild; - } else { - while (tmp->next) - tmp = tmp->next; - tmp->next = xlchild; - } - gf_log ("parser", GF_LOG_TRACE, "child:%s->%s", curr->name, sub); out: -- cgit