diff options
-rw-r--r-- | glusterfsd/src/glusterfsd.c | 22 | ||||
-rw-r--r-- | libglusterfs/src/common-utils.c | 5 |
2 files changed, 18 insertions, 9 deletions
diff --git a/glusterfsd/src/glusterfsd.c b/glusterfsd/src/glusterfsd.c index f589ce69ecd..dfc3e14beaf 100644 --- a/glusterfsd/src/glusterfsd.c +++ b/glusterfsd/src/glusterfsd.c @@ -2438,9 +2438,6 @@ daemonize (glusterfs_ctx_t *ctx) goto out; if (cmd_args->no_daemon_mode) { - ret = glusterfs_pidfile_update (ctx, getpid()); - if (ret) - goto out; goto postfork; } @@ -2496,13 +2493,26 @@ daemonize (glusterfs_ctx_t *ctx) will be available to parent process on calling exit() */ if (err) _exit (abs(err)); - ret = glusterfs_pidfile_update (ctx, child_pid); - if (ret) - _exit (1); + + /* Update pid in parent only for glusterd process */ + if (ctx->process_mode == GF_GLUSTERD_PROCESS) { + ret = glusterfs_pidfile_update(ctx, child_pid); + if (ret) + exit(1); + } _exit (0); } postfork: + /* Update pid in child either process_mode is not belong to glusterd + or process is spawned in no daemon mode + */ + if ((ctx->process_mode != GF_GLUSTERD_PROCESS) || + (cmd_args->no_daemon_mode)) { + ret = glusterfs_pidfile_update(ctx, getpid()); + if (ret) + goto out; + } ret = gf_log_inject_timer_event (ctx); glusterfs_signals_setup (ctx); diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index e2874602a84..8408bfe5eca 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -4000,15 +4000,14 @@ gf_is_service_running (char *pidfile, int *pid) ret = lockf (fno, F_TEST, 0); if (ret == -1) running = _gf_true; - if (!pid) { - goto out; - } ret = fscanf (file, "%d", pid); if (ret <= 0) { gf_msg ("", GF_LOG_ERROR, errno, LG_MSG_FILE_OP_FAILED, "Unable to read pidfile: %s", pidfile); *pid = -1; + running = _gf_false; + goto out; } running = gf_is_pid_running (*pid); |