diff options
| -rw-r--r-- | xlators/mount/fuse/src/fuse-bridge.c | 11 | ||||
| -rw-r--r-- | xlators/mount/fuse/src/fuse-bridge.h | 2 | 
2 files changed, 7 insertions, 6 deletions
diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c index 9f273a3968a..ec10cc4d6f2 100644 --- a/xlators/mount/fuse/src/fuse-bridge.c +++ b/xlators/mount/fuse/src/fuse-bridge.c @@ -3039,7 +3039,7 @@ fuse_graph_sync (xlator_t *this)                  priv->next_graph = NULL;                  need_first_lookup = 1; -                while (!priv->child_up) { +                while (!priv->event_recvd) {                          ret = pthread_cond_wait (&priv->sync_cond,                                                   &priv->sync_mutex);                          if (ret != 0) { @@ -3301,7 +3301,7 @@ fuse_graph_setup (xlator_t *this, glusterfs_graph_t *graph)          pthread_mutex_lock (&priv->sync_mutex);          {                  priv->next_graph = graph; -                priv->child_up = 0; +                priv->event_recvd = 0;                  pthread_cond_signal (&priv->sync_cond);          } @@ -3344,10 +3344,11 @@ notify (xlator_t *this, int32_t event, void *data, ...)                                          "failed to setup the graph");                  } -                if (event == GF_EVENT_CHILD_UP) { +                if ((event == GF_EVENT_CHILD_UP) +                    || (event == GF_EVENT_CHILD_DOWN)) {                          pthread_mutex_lock (&private->sync_mutex);                          { -                                private->child_up = 1; +                                private->event_recvd = 1;                                  pthread_cond_broadcast (&private->sync_cond);                          }                          pthread_mutex_unlock (&private->sync_mutex); @@ -3632,7 +3633,7 @@ init (xlator_t *this_xl)          pthread_mutex_init (&priv->fuse_dump_mutex, NULL);          pthread_cond_init (&priv->sync_cond, NULL);          pthread_mutex_init (&priv->sync_mutex, NULL); -        priv->child_up = 0; +        priv->event_recvd = 0;          for (i = 0; i < FUSE_OP_HIGH; i++) {                  if (!fuse_std_ops[i]) diff --git a/xlators/mount/fuse/src/fuse-bridge.h b/xlators/mount/fuse/src/fuse-bridge.h index f20e47272d4..85acab77742 100644 --- a/xlators/mount/fuse/src/fuse-bridge.h +++ b/xlators/mount/fuse/src/fuse-bridge.h @@ -91,7 +91,7 @@ struct fuse_private {          pthread_cond_t       sync_cond;          pthread_mutex_t      sync_mutex; -        char                 child_up; +        char                 event_recvd;          char                 init_recvd;  | 
