Blob Blame History Raw
From 3aa40844f2125c3121ae9c7d7ede92c9007ae5ca Mon Sep 17 00:00:00 2001
From: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Date: Sat, 30 Apr 2016 14:59:26 +0530
Subject: [PATCH 166/167] 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()

Backport of:
>> Backport of:
>> 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>
>
> Change-Id: Ib9fd878461b0b409c9d55d526cf60d7276c31775
> BUG: 1331938
> Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
> Reviewed-on: http://review.gluster.org/14129
> 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: Atin Mukherjee <amukherj@redhat.com>
> Reviewed-by: Raghavendra G <rgowdapp@redhat.com>

Change-Id: Ide9bdd33c5c20be5105e7c0373f1358735091c50
BUG: 1336332
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/74768
Reviewed-by: Raghavendra Gowdappa <rgowdapp@redhat.com>
---
 glusterfsd/src/glusterfsd.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/glusterfsd/src/glusterfsd.c b/glusterfsd/src/glusterfsd.c
index 9f171da..ac2dcf1 100644
--- a/glusterfsd/src/glusterfsd.c
+++ b/glusterfsd/src/glusterfsd.c
@@ -2106,7 +2106,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;
 
@@ -2151,14 +2151,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;
                 read (ctx->daemon_pipe[0], (void *)&err, sizeof (err));
                 _exit (err);
         }
-- 
1.7.1