From 9c53d5daf403f6fbfde76dec121295a4c156b32e Mon Sep 17 00:00:00 2001 From: Anand Avati Date: Sat, 23 Jan 2010 05:13:24 +0000 Subject: core: fix initialization of disjoint xlator graph if graph has disjoint subgraphs, send GF_EVENT_PARENT_UP to every top node Signed-off-by: Anand V. Avati Signed-off-by: Anand V. Avati BUG: 272 (Server backend storage hang should not cause the mount point to hang) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=272 --- glusterfsd/src/glusterfsd.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'glusterfsd') diff --git a/glusterfsd/src/glusterfsd.c b/glusterfsd/src/glusterfsd.c index d3f1be02867..14627f0af94 100644 --- a/glusterfsd/src/glusterfsd.c +++ b/glusterfsd/src/glusterfsd.c @@ -606,6 +606,31 @@ _xlator_graph_init (xlator_t *xl) return ret; } +int +glusterfs_graph_parent_up (xlator_t *graph) +{ + xlator_t *trav = NULL; + int ret = -1; + + trav = graph; + + while (trav->prev) + trav = trav->prev; + + while (trav) { + if (!xlator_has_parent (trav)) { + ret = trav->notify (trav, GF_EVENT_PARENT_UP, trav); + } + + if (ret) + break; + + trav = trav->next; + } + + return ret; +} + int glusterfs_graph_init (xlator_t *graph, int fuse) { @@ -1366,7 +1391,7 @@ main (int argc, char *argv[]) } /* Send PARENT_UP notify to all the translators now */ - graph->notify (graph, GF_EVENT_PARENT_UP, ctx->graph); + glusterfs_graph_parent_up (graph); gf_log ("glusterfs", GF_LOG_NORMAL, "Successfully started"); -- cgit