diff options
| -rw-r--r-- | glusterfsd/src/glusterfsd.c | 22 | ||||
| -rw-r--r-- | libglusterfs/src/common-utils.c | 3 | 
2 files changed, 18 insertions, 7 deletions
| diff --git a/glusterfsd/src/glusterfsd.c b/glusterfsd/src/glusterfsd.c index ae74de73f29..5d46b3d9f45 100644 --- a/glusterfsd/src/glusterfsd.c +++ b/glusterfsd/src/glusterfsd.c @@ -2474,9 +2474,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;      } @@ -2532,13 +2529,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 e312b104747..a0c83c06f7e 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -4133,7 +4133,6 @@ gf_is_service_running(char *pidfile, int *pid)      ret = lockf(fno, F_TEST, 0);      if (ret == -1) {          running = _gf_true; -        goto out;      }      ret = fscanf(file, "%d", pid); @@ -4141,6 +4140,8 @@ gf_is_service_running(char *pidfile, int *pid)          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); | 
