summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--glusterfsd/src/glusterfsd-mgmt.c34
-rw-r--r--glusterfsd/src/glusterfsd.c2
-rw-r--r--glusterfsd/src/glusterfsd.h2
3 files changed, 19 insertions, 19 deletions
diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c
index a4a7422cfcf..c674533e492 100644
--- a/glusterfsd/src/glusterfsd-mgmt.c
+++ b/glusterfsd/src/glusterfsd-mgmt.c
@@ -38,6 +38,8 @@
#include "glusterfs3.h"
#include "portmap.h"
+#include "glusterfsd.h"
+
static char is_mgmt_rpc_reconnect;
typedef ssize_t (*mgmt_serialize_t) (struct iovec outmsg, void *args);
@@ -224,11 +226,14 @@ out:
if (rsp.spec)
free (rsp.spec);
- if (ret && ctx && ctx->master) {
- /* Failed to get the volume file, start fuse anyways */
- xlator_notify (ctx->master,
- GF_EVENT_CHILD_CONNECTING, NULL);
-
+ if (ret && ctx && !ctx->active) {
+ /* Do it only for the first time */
+ /* Failed to get the volume file, something wrong,
+ restart the process */
+ gf_log ("mgmt", GF_LOG_ERROR,
+ "failed to fetch volume file (key:%s)",
+ ctx->cmd_args.volfile_id);
+ cleanup_and_exit (0);
}
return 0;
}
@@ -272,24 +277,19 @@ mgmt_rpc_notify (struct rpc_clnt *rpc, void *mydata, rpc_clnt_event_t event,
rpc_clnt_set_connected (ctx->mgmt);
ret = glusterfs_volfile_fetch (ctx);
- if (ret && ctx && ctx->master) {
- /* Failed to get the volume file, start fuse anyways */
- xlator_notify (ctx->master,
- GF_EVENT_CHILD_CONNECTING, NULL);
-
- gf_log ("", GF_LOG_WARNING,
- "failed to fetch volume file");
+ if (ret && ctx && (ctx->active == NULL)) {
+ /* Do it only for the first time */
+ /* Exit the process.. there is some wrong options */
+ gf_log ("mgmt", GF_LOG_ERROR,
+ "failed to fetch volume file (key:%s)",
+ ctx->cmd_args.volfile_id);
+ cleanup_and_exit (0);
}
if (is_mgmt_rpc_reconnect)
glusterfs_mgmt_pmap_signin (ctx);
break;
default:
- if (ctx->master)
- ret = xlator_notify (ctx->master,
- GF_EVENT_CHILD_CONNECTING, NULL);
- gf_log ("", GF_LOG_WARNING,
- "failed to establish mgmt rpc connection (%d)", ret);
break;
}
diff --git a/glusterfsd/src/glusterfsd.c b/glusterfsd/src/glusterfsd.c
index 36fc86af4c1..bd2d704b800 100644
--- a/glusterfsd/src/glusterfsd.c
+++ b/glusterfsd/src/glusterfsd.c
@@ -633,7 +633,7 @@ parse_opts (int key, char *arg, struct argp_state *state)
}
-static void
+void
cleanup_and_exit (int signum)
{
glusterfs_ctx_t *ctx = NULL;
diff --git a/glusterfsd/src/glusterfsd.h b/glusterfsd/src/glusterfsd.h
index c0789b6d202..9584c19b24a 100644
--- a/glusterfsd/src/glusterfsd.h
+++ b/glusterfsd/src/glusterfsd.h
@@ -80,6 +80,6 @@ enum argp_option_keys {
int glusterfs_mgmt_pmap_signout (glusterfs_ctx_t *ctx);
int glusterfs_mgmt_pmap_signin (glusterfs_ctx_t *ctx);
int glusterfs_volfile_fetch (glusterfs_ctx_t *ctx);
-
+void cleanup_and_exit (int signum);
#endif /* __GLUSTERFSD_H__ */