Blame SOURCES/04-Refactor-servant-type-helpers.patch

f46b0e
From d1222864f4fcca63c7426272b0cdd22bdaa60b9e Mon Sep 17 00:00:00 2001
f46b0e
From: Klaus Wenninger <klaus.wenninger@aon.at>
f46b0e
Date: Tue, 6 Jun 2017 09:38:07 +0200
f46b0e
Subject: [PATCH] Refactor servant type helpers
f46b0e
f46b0e
---
f46b0e
 src/sbd-common.c     | 33 +++++++++++++++++++++++++++++++++
f46b0e
 src/sbd-inquisitor.c | 35 +++++++++++------------------------
f46b0e
 src/sbd-md.c         |  2 +-
f46b0e
 src/sbd.h            |  2 ++
f46b0e
 4 files changed, 47 insertions(+), 25 deletions(-)
f46b0e
f46b0e
diff --git a/src/sbd-common.c b/src/sbd-common.c
f46b0e
index 55e636b..964f422 100644
f46b0e
--- a/src/sbd-common.c
f46b0e
+++ b/src/sbd-common.c
f46b0e
@@ -694,3 +694,36 @@ set_servant_health(enum pcmk_health state, int level, char const *format, ...)
f46b0e
         free(string);
f46b0e
     }
f46b0e
 }
f46b0e
+
f46b0e
+bool
f46b0e
+sbd_is_disk(struct servants_list_item *servant)
f46b0e
+{
f46b0e
+    if ((servant != NULL) &&
f46b0e
+        (servant->devname != NULL) &&
f46b0e
+        (servant->devname[0] == '/')) {
f46b0e
+        return true;
f46b0e
+    }
f46b0e
+    return false;
f46b0e
+}
f46b0e
+
f46b0e
+bool
f46b0e
+sbd_is_cluster(struct servants_list_item *servant)
f46b0e
+{
f46b0e
+    if ((servant != NULL) &&
f46b0e
+        (servant->devname != NULL) &&
f46b0e
+        (strcmp("cluster", servant->devname) == 0)) {
f46b0e
+        return true;
f46b0e
+    }
f46b0e
+    return false;
f46b0e
+}
f46b0e
+
f46b0e
+bool
f46b0e
+sbd_is_pcmk(struct servants_list_item *servant)
f46b0e
+{
f46b0e
+    if ((servant != NULL) &&
f46b0e
+        (servant->devname != NULL) &&
f46b0e
+        (strcmp("pcmk", servant->devname) == 0)) {
f46b0e
+        return true;
f46b0e
+    }
f46b0e
+    return false;
f46b0e
+}
f46b0e
diff --git a/src/sbd-inquisitor.c b/src/sbd-inquisitor.c
f46b0e
index 3c3a5a0..5a1f639 100644
f46b0e
--- a/src/sbd-inquisitor.c
f46b0e
+++ b/src/sbd-inquisitor.c
f46b0e
@@ -34,17 +34,6 @@ char*	pidfile = NULL;
f46b0e
 
f46b0e
 int parse_device_line(const char *line);
f46b0e
 
f46b0e
-bool
f46b0e
-sbd_is_disk(struct servants_list_item *servant) 
f46b0e
-{
f46b0e
-    if (servant == NULL
f46b0e
-        || servant->devname == NULL
f46b0e
-        || servant->devname[0] == '/') {
f46b0e
-        return true;
f46b0e
-    }
f46b0e
-    return false;
f46b0e
-}
f46b0e
-
f46b0e
 void recruit_servant(const char *devname, pid_t pid)
f46b0e
 {
f46b0e
 	struct servants_list_item *s = servants_leader;
f46b0e
@@ -162,11 +151,11 @@ void servant_start(struct servants_list_item *s)
f46b0e
                 cl_log(LOG_ERR, "Shared disk functionality not supported");
f46b0e
                 return;
f46b0e
 #endif
f46b0e
-	} else if(strcmp("pcmk", s->devname) == 0) {
f46b0e
+	} else if(sbd_is_pcmk(s)) {
f46b0e
 		DBGLOG(LOG_INFO, "Starting Pacemaker servant");
f46b0e
 		s->pid = assign_servant(s->devname, servant_pcmk, start_mode, NULL);
f46b0e
 
f46b0e
-	} else if(strcmp("cluster", s->devname) == 0) {
f46b0e
+	} else if(sbd_is_cluster(s)) {
f46b0e
 		DBGLOG(LOG_INFO, "Starting Cluster servant");
f46b0e
 		s->pid = assign_servant(s->devname, servant_cluster, start_mode, NULL);
f46b0e
 
f46b0e
@@ -401,7 +390,7 @@ int cluster_alive(bool all)
f46b0e
     }
f46b0e
 
f46b0e
     for (s = servants_leader; s; s = s->next) {
f46b0e
-        if (sbd_is_disk(s) == false) {
f46b0e
+        if (sbd_is_cluster(s) || sbd_is_pcmk(s)) {
f46b0e
             if(s->outdated) {
f46b0e
                 alive = 0;
f46b0e
             } else if(all == false) {
f46b0e
@@ -490,16 +479,14 @@ void inquisitor_child(void)
f46b0e
 			}
f46b0e
 		} else if (sig == SIG_PCMK_UNHEALTHY) {
f46b0e
 			s = lookup_servant_by_pid(sinfo.si_pid);
f46b0e
-			if (sbd_is_disk(s)) {
f46b0e
-				cl_log(LOG_WARNING, "Ignoring SIG_PCMK_UNHEALTHY from unknown source");
f46b0e
-
f46b0e
-                        } else {
f46b0e
-                            if(s->outdated == 0) {
f46b0e
-                                cl_log(LOG_WARNING, "%s health check: UNHEALTHY", s->devname);
f46b0e
-                            }
f46b0e
-                            s->t_last.tv_sec = 1;
f46b0e
-			}
f46b0e
-
f46b0e
+			if (sbd_is_cluster(s) || sbd_is_pcmk(s)) {
f46b0e
+                if (s->outdated == 0) {
f46b0e
+                    cl_log(LOG_WARNING, "%s health check: UNHEALTHY", s->devname);
f46b0e
+                }
f46b0e
+                s->t_last.tv_sec = 1;
f46b0e
+            } else {
f46b0e
+                cl_log(LOG_WARNING, "Ignoring SIG_PCMK_UNHEALTHY from unknown source");
f46b0e
+            }
f46b0e
 		} else if (sig == SIG_IO_FAIL) {
f46b0e
 			s = lookup_servant_by_pid(sinfo.si_pid);
f46b0e
 			if (s) {
f46b0e
diff --git a/src/sbd-md.c b/src/sbd-md.c
f46b0e
index 10b1925..bbf9018 100644
f46b0e
--- a/src/sbd-md.c
f46b0e
+++ b/src/sbd-md.c
f46b0e
@@ -833,7 +833,7 @@ int ping_via_slots(const char *name, struct servants_list_item *servants)
f46b0e
 					break;
f46b0e
 				} else {
f46b0e
 					s = lookup_servant_by_pid(pid);
f46b0e
-					if (s && sbd_is_disk(s)) {
f46b0e
+					if (sbd_is_disk(s)) {
f46b0e
 						servants_finished++;
f46b0e
 					}
f46b0e
 				}
f46b0e
diff --git a/src/sbd.h b/src/sbd.h
f46b0e
index 07a476d..07d2706 100644
f46b0e
--- a/src/sbd.h
f46b0e
+++ b/src/sbd.h
f46b0e
@@ -191,3 +191,5 @@ extern int servant_health;
f46b0e
 void set_servant_health(enum pcmk_health state, int level, char const *format, ...) __attribute__ ((__format__ (__printf__, 3, 4)));
f46b0e
 
f46b0e
 bool sbd_is_disk(struct servants_list_item *servant);
f46b0e
+bool sbd_is_pcmk(struct servants_list_item *servant);
f46b0e
+bool sbd_is_cluster(struct servants_list_item *servant);
f46b0e
-- 
f46b0e
1.8.3.1
f46b0e