summaryrefslogtreecommitdiffstats
path: root/xlators/mount/fuse/src/fuse-bridge.c
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/mount/fuse/src/fuse-bridge.c')
-rw-r--r--xlators/mount/fuse/src/fuse-bridge.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c
index 4de9685d13e..18a4d7aee77 100644
--- a/xlators/mount/fuse/src/fuse-bridge.c
+++ b/xlators/mount/fuse/src/fuse-bridge.c
@@ -3290,6 +3290,30 @@ notify (xlator_t *this, int32_t event, void *data, ...)
break;
case GF_EVENT_CHILD_CONNECTING:
+ {
+ if (!private->fuse_thread_started) {
+ private->fuse_thread_started = 1;
+
+ ret = pthread_create (&private->fuse_thread, NULL,
+ fuse_thread_proc, this);
+ if (ret != 0) {
+ gf_log (this->name, GF_LOG_DEBUG,
+ "pthread_create() failed (%s)",
+ strerror (errno));
+ break;
+ }
+ }
+
+ if (data) {
+ graph = data;
+ ret = fuse_graph_setup (this, graph);
+ if (ret)
+ gf_log (this->name, GF_LOG_WARNING,
+ "failed to setup the graph");
+ }
+
+ break;
+ }
case GF_EVENT_CHILD_UP:
{
/* set priv->active_subvol */
@@ -3297,7 +3321,8 @@ notify (xlator_t *this, int32_t event, void *data, ...)
graph = data;
ret = fuse_graph_setup (this, graph);
if (ret)
- break;
+ gf_log (this->name, GF_LOG_WARNING,
+ "failed to setup the graph");
if (!private->fuse_thread_started) {
private->fuse_thread_started = 1;