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);  | 
