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