summaryrefslogtreecommitdiffstats
path: root/glusterfsd/src
diff options
context:
space:
mode:
authorPrasanna Kumar Kalever <prasanna.kalever@redhat.com>2016-04-27 19:29:09 +0530
committerJeff Darcy <jdarcy@redhat.com>2016-04-29 06:23:59 -0700
commit36d025ef6f178ce5d8c6f7fa09e1cf236976b5ea (patch)
treef1d77f1176ddf4defffa7b98e06b5a512f5f1982 /glusterfsd/src
parentc2865e83d414e375443adac0791887c8adf444f2 (diff)
glusterfsd: fix to return actual exit status on mount process
Problem: Currently, we always exit mount process with the pid as the exit number which is return value of the waitpid(), it is not the exit value of the child process Solution: Extract the actual exit code/status in case if the child terminated normally, that is, by calling exit(3) or _exit(2), or by returning from main() Change-Id: Iefec6e27b5a5a98a22f016e49967978853662e37 BUG: 1331042 Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com> Reviewed-on: http://review.gluster.org/14094 Tested-by: Prasanna Kumar Kalever <pkalever@redhat.com> Smoke: Gluster Build System <jenkins@build.gluster.com> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Raghavendra Talur <rtalur@redhat.com> Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Diffstat (limited to 'glusterfsd/src')
-rw-r--r--glusterfsd/src/glusterfsd.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/glusterfsd/src/glusterfsd.c b/glusterfsd/src/glusterfsd.c
index 3d54229d894..09ba9cd8086 100644
--- a/glusterfsd/src/glusterfsd.c
+++ b/glusterfsd/src/glusterfsd.c
@@ -2117,7 +2117,7 @@ daemonize (glusterfs_ctx_t *ctx)
int ret = -1;
cmd_args_t *cmd_args = NULL;
int cstatus = 0;
- int err = 0;
+ int err = 1;
cmd_args = &ctx->cmd_args;
@@ -2162,14 +2162,17 @@ daemonize (glusterfs_ctx_t *ctx)
if (ctx->mnt_pid > 0) {
ret = waitpid (ctx->mnt_pid, &cstatus, 0);
- if (!(ret == ctx->mnt_pid && cstatus == 0)) {
+ if (!(ret == ctx->mnt_pid)) {
+ if (WIFEXITED(cstatus)) {
+ err = WEXITSTATUS(cstatus);
+ } else {
+ err = cstatus;
+ }
gf_msg ("daemonize", GF_LOG_ERROR, 0,
glusterfsd_msg_25);
- exit (1);
+ exit (err);
}
}
-
- err = 1;
sys_read (ctx->daemon_pipe[0], (void *)&err, sizeof (err));
_exit (err);
}