summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBasavanagowda Kanur <gowda@gluster.com>2009-06-22 07:53:03 +0000
committerAnand V. Avati <avati@dev.gluster.com>2009-06-22 12:29:14 -0700
commitc699050f7634e782c776242eb95e5754fce29e55 (patch)
tree85ebd33b607c3f12e0bb0eb8fd546f9788fc1efe
parentd1a544fe60e0b72194635db927032e309c79c255 (diff)
glusterfsd - build proper mount/fuse structure.
while appending mount/fuse to a translator tree, make sure that <xlator_t-of-fuse>->next points to the first xlator in the list of xlators and not the subvolume of mount/fuse. NOTE: tree traversal should always happen through <xlator_t>->children Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
-rw-r--r--glusterfsd/src/glusterfsd.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/glusterfsd/src/glusterfsd.c b/glusterfsd/src/glusterfsd.c
index af931a93938..f0054189bc6 100644
--- a/glusterfsd/src/glusterfsd.c
+++ b/glusterfsd/src/glusterfsd.c
@@ -194,7 +194,22 @@ _gf_dump_details (int argc, char **argv)
fflush (gf_log_logfile);
}
-
+static xlator_t *
+gf_get_first_xlator (xlator_t *list)
+{
+ xlator_t *trav = NULL, *head = NULL;
+
+ trav = list;
+ do {
+ if (trav->prev == NULL) {
+ head = trav;
+ }
+
+ trav = trav->prev;
+ } while (trav != NULL);
+
+ return head;
+}
static xlator_t *
_add_fuse_mount (xlator_t *graph)
@@ -225,7 +240,7 @@ _add_fuse_mount (xlator_t *graph)
}
top->children = xlchild;
top->ctx = graph->ctx;
- top->next = graph;
+ top->next = gf_get_first_xlator (graph);
top->options = get_new_dict ();
ret = dict_set_static_ptr (top->options, ZR_MOUNTPOINT_OPT,