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 <avati@blackhole.gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> 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
This commit is contained in:
parent
95dba6f085
commit
9c53d5daf4
@ -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");
|
||||
|
||||
|
@ -926,6 +926,8 @@ struct _xlator {
|
||||
void *private;
|
||||
};
|
||||
|
||||
#define xlator_has_parent(xl) (xl->parents != NULL)
|
||||
|
||||
int validate_xlator_volume_options (xlator_t *xl, volume_option_t *opt);
|
||||
|
||||
int32_t xlator_set_type (xlator_t *xl, const char *type);
|
||||
|
Loading…
x
Reference in New Issue
Block a user