50dc83
From 79fff98f9ca5f815cf0227312b9a997d555dad29 Mon Sep 17 00:00:00 2001
50dc83
From: Mohammed Rafi KC <rkavunga@redhat.com>
50dc83
Date: Wed, 22 May 2019 13:32:23 +0530
50dc83
Subject: [PATCH 166/169] glusterd/svc: glusterd_svcs_stop should call
50dc83
 individual wrapper function
50dc83
50dc83
glusterd_svcs_stop should call individual wrapper function to stop a
50dc83
daemon rather than calling glusterd_svc_stop. For example for shd,
50dc83
it should call glusterd_shdsvc_stop instead of calling basic API
50dc83
function to stop. Because the individual functions for each daemon
50dc83
could be doing some specific operation in their wrapper function.
50dc83
50dc83
Upstream patch: https://review.gluster.org/#/c/glusterfs/+/22761/
50dc83
50dc83
>Change-Id: Ie6d40590251ad470ef3901d1141ab7b22c3498f5
50dc83
>fixes: bz#1712741
50dc83
>Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
50dc83
50dc83
Change-Id: I6df03e53f08c337d5d9b0e855a0b77894a2aacc9
50dc83
BUG: 1716865
50dc83
Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
50dc83
Reviewed-on: https://code.engineering.redhat.com/gerrit/172288
50dc83
Tested-by: RHGS Build Bot <nigelb@redhat.com>
50dc83
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
50dc83
---
50dc83
 xlators/mgmt/glusterd/src/glusterd-shd-svc.c    | 12 ++++++++++--
50dc83
 xlators/mgmt/glusterd/src/glusterd-svc-helper.c | 10 +++++-----
50dc83
 2 files changed, 15 insertions(+), 7 deletions(-)
50dc83
50dc83
diff --git a/xlators/mgmt/glusterd/src/glusterd-shd-svc.c b/xlators/mgmt/glusterd/src/glusterd-shd-svc.c
50dc83
index 75f9a07..981cc87 100644
50dc83
--- a/xlators/mgmt/glusterd/src/glusterd-shd-svc.c
50dc83
+++ b/xlators/mgmt/glusterd/src/glusterd-shd-svc.c
50dc83
@@ -656,10 +656,18 @@ glusterd_shdsvc_stop(glusterd_svc_t *svc, int sig)
50dc83
     int pid = -1;
50dc83
 
50dc83
     conf = THIS->private;
50dc83
+    GF_VALIDATE_OR_GOTO("glusterd", conf, out);
50dc83
     GF_VALIDATE_OR_GOTO("glusterd", svc, out);
50dc83
     svc_proc = svc->svc_proc;
50dc83
-    GF_VALIDATE_OR_GOTO("glusterd", svc_proc, out);
50dc83
-    GF_VALIDATE_OR_GOTO("glusterd", conf, out);
50dc83
+    if (!svc_proc) {
50dc83
+        /*
50dc83
+         * This can happen when stop was called on a volume that is not shd
50dc83
+         * compatible.
50dc83
+         */
50dc83
+        gf_msg_debug("glusterd", 0, "svc_proc is null, ie shd already stopped");
50dc83
+        ret = 0;
50dc83
+        goto out;
50dc83
+    }
50dc83
 
50dc83
     /* Get volinfo->shd from svc object */
50dc83
     shd = cds_list_entry(svc, glusterd_shdsvc_t, svc);
50dc83
diff --git a/xlators/mgmt/glusterd/src/glusterd-svc-helper.c b/xlators/mgmt/glusterd/src/glusterd-svc-helper.c
50dc83
index f7be394..6a3ca52 100644
50dc83
--- a/xlators/mgmt/glusterd/src/glusterd-svc-helper.c
50dc83
+++ b/xlators/mgmt/glusterd/src/glusterd-svc-helper.c
50dc83
@@ -86,25 +86,25 @@ glusterd_svcs_stop(glusterd_volinfo_t *volinfo)
50dc83
     priv = this->private;
50dc83
     GF_ASSERT(priv);
50dc83
 
50dc83
-    ret = glusterd_svc_stop(&(priv->nfs_svc), SIGKILL);
50dc83
+    ret = priv->nfs_svc.stop(&(priv->nfs_svc), SIGKILL);
50dc83
     if (ret)
50dc83
         goto out;
50dc83
 
50dc83
-    ret = glusterd_svc_stop(&(priv->quotad_svc), SIGTERM);
50dc83
+    ret = priv->quotad_svc.stop(&(priv->quotad_svc), SIGTERM);
50dc83
     if (ret)
50dc83
         goto out;
50dc83
 
50dc83
     if (volinfo) {
50dc83
-        ret = glusterd_svc_stop(&(volinfo->shd.svc), PROC_START_NO_WAIT);
50dc83
+        ret = volinfo->shd.svc.stop(&(volinfo->shd.svc), SIGTERM);
50dc83
         if (ret)
50dc83
             goto out;
50dc83
     }
50dc83
 
50dc83
-    ret = glusterd_svc_stop(&(priv->bitd_svc), SIGTERM);
50dc83
+    ret = priv->bitd_svc.stop(&(priv->bitd_svc), SIGTERM);
50dc83
     if (ret)
50dc83
         goto out;
50dc83
 
50dc83
-    ret = glusterd_svc_stop(&(priv->scrub_svc), SIGTERM);
50dc83
+    ret = priv->scrub_svc.stop(&(priv->scrub_svc), SIGTERM);
50dc83
 out:
50dc83
     return ret;
50dc83
 }
50dc83
-- 
50dc83
1.8.3.1
50dc83