diff options
Diffstat (limited to 'xlators')
-rw-r--r-- | xlators/mount/fuse/src/fuse-bridge.c | 32 | ||||
-rw-r--r-- | xlators/protocol/client/src/client-protocol.c | 27 |
2 files changed, 23 insertions, 36 deletions
diff --git a/xlators/mount/fuse/src/fuse-bridge.c b/xlators/mount/fuse/src/fuse-bridge.c index 6cdba9ea6d1..d6dbf7604c3 100644 --- a/xlators/mount/fuse/src/fuse-bridge.c +++ b/xlators/mount/fuse/src/fuse-bridge.c @@ -2630,27 +2630,8 @@ notify (xlator_t *this, int32_t event, switch (event) { case GF_EVENT_CHILD_UP: - -#ifndef GF_DARWIN_HOST_OS - /* - * This is because macfuse sends statfs() once the fuse thread - * gets activated, and by that time if the client is not - * connected, it give 'Device not configured' error. Hence, - * create thread only when client sends CHILD_UP (ie, client - * is connected). - */ - - /* TODO: somehow, try to get the mountpoint active as soon as - * init() is complete, so that the hang effect when the - * server is not not started is removed. - */ - - /* This code causes problem with 'automount' too */ - /* case GF_EVENT_CHILD_CONNECTING: */ -#endif /* DARWIN */ - + case GF_EVENT_CHILD_CONNECTING: { - if (!private->fuse_thread_started) { private->fuse_thread_started = 1; @@ -2658,10 +2639,15 @@ notify (xlator_t *this, int32_t event, ret = pthread_create (&private->fuse_thread, NULL, fuse_thread_proc, this); - if (ret != 0) + if (ret != 0) { gf_log ("glusterfs-fuse", GF_LOG_ERROR, - "pthread_create() failed (%s)", strerror (errno)); - assert (ret == 0); + "pthread_create() failed (%s)", + strerror (errno)); + + /* If fuse thread is not started, that means, + its hung, we can't use this process. */ + raise (SIGTERM); + } } break; } diff --git a/xlators/protocol/client/src/client-protocol.c b/xlators/protocol/client/src/client-protocol.c index 11e66983324..5212d67c6e6 100644 --- a/xlators/protocol/client/src/client-protocol.c +++ b/xlators/protocol/client/src/client-protocol.c @@ -5956,6 +5956,20 @@ client_setvolume_cbk (call_frame_t *frame, } out: + if (-1 == op_ret) { + /* Let the connection/re-connection happen in + * background, for now, don't hang here, + * tell the parents that i am all ok.. + */ + parent = trans->xl->parents; + while (parent) { + parent->xlator->notify (parent->xlator, + GF_EVENT_CHILD_CONNECTING, + trans->xl); + parent = parent->next; + } + } + STACK_DESTROY (frame->root); if (reply) @@ -6608,7 +6622,6 @@ notify (xlator_t *this, case GF_EVENT_PARENT_UP: { - xlator_list_t *parent = NULL; client_conf_t *conf = NULL; int i = 0; transport_t *trans = NULL; @@ -6630,18 +6643,6 @@ notify (xlator_t *this, client_protocol_reconnect (trans); } - - /* Let the connection/re-connection happen in - * background, for now, don't hang here, - * tell the parents that i am all ok.. - */ - parent = trans->xl->parents; - while (parent) { - parent->xlator->notify (parent->xlator, - GF_EVENT_CHILD_CONNECTING, - trans->xl); - parent = parent->next; - } } break; |