File bug-1046421_sbd-enable-pacemaker-integration-by-default.patch of Package sbd

commit c527ba99c20b02ecbd195f74da321333a2ae534e
Author: Gao,Yan <ygao@suse.com>
Date:   Tue Jul 4 16:45:33 2017 +0200

    Fix: sbd-inquisitor: Enable pacemaker integration by default as advertised in sysconfig.sbd
    
    "Default: yes" for SBD_PACEMAKER has always been advertised in
    the example sbd.sysconfig. This commit is to ensure that's true again.
    It can be disabled by either explicitly setting SBD_PACEMAKER=no in
    sysconfig or supplying "-P" option twice like "-P -P".

diff --git a/man/sbd.8.pod b/man/sbd.8.pod
index 5df0b4e..3948bb4 100644
--- a/man/sbd.8.pod
+++ b/man/sbd.8.pod
@@ -267,7 +267,10 @@ If set to zero, processes will be restarted indefinitely and immediately.
 
 =item B<-P>
 
-Check Pacemaker quorum and node health.
+Check Pacemaker quorum and node health. Specify this once to enable, twice to
+disable.
+
+Defaults to I<enabled>.
 
 =item B<-S> I<N>
 
diff --git a/src/sbd-inquisitor.c b/src/sbd-inquisitor.c
index 2ef7c4b..4c47494 100644
--- a/src/sbd-inquisitor.c
+++ b/src/sbd-inquisitor.c
@@ -23,8 +23,8 @@
 static struct servants_list_item *servants_leader = NULL;
 
 int     disk_priority = 1;
-int	check_pcmk = 0;
-int	check_cluster = 0;
+int	check_pcmk = 1;
+int	check_cluster = 1;
 int	disk_count	= 0;
 int	servant_count	= 0;
 int	servant_restart_interval = 5;
@@ -799,11 +799,19 @@ parse_device_line(const char *line)
     return found;
 }
 
+int
+arg_enabled(int arg_count)
+{
+    return arg_count % 2;
+}
+
 int main(int argc, char **argv, char **envp)
 {
 	int exit_status = 0;
 	int c;
-	int w = 0;
+	int W_count = 0;
+	int c_count = 0;
+	int P_count = 0;
         int qb_facility;
         const char *value = NULL;
         int start_delay = 0;
@@ -928,7 +936,7 @@ int main(int argc, char **argv, char **envp)
 			cl_log(LOG_INFO, "Setting watchdog timeout disabled; using defaults.");
 			break;
 		case 'W':
-			w++;
+			W_count++;
 			break;
 		case 'w':
                         cl_log(LOG_NOTICE, "Using watchdog device '%s'", watchdogdev);
@@ -945,10 +953,10 @@ int main(int argc, char **argv, char **envp)
 #endif
 			break;
 		case 'c':
-			check_cluster = 1;
+			c_count++;
 			break;
 		case 'P':
-			check_pcmk = 1;
+			P_count++;
 			break;
 		case 'z':
 			disk_priority = 0;
@@ -1011,8 +1019,8 @@ int main(int argc, char **argv, char **envp)
 		}
 	}
 
-	if (w > 0) {
-            watchdog_use = w % 2;
+	if (W_count > 0) {
+            watchdog_use = arg_enabled(W_count);
 
 	} else if(watchdogdev == NULL || strcmp(watchdogdev, "/dev/null") == 0) {
             watchdog_use = 0;
@@ -1024,6 +1032,14 @@ int main(int argc, char **argv, char **envp)
 		cl_log(LOG_INFO, "Watchdog disabled.");
 	}
 
+	if (c_count > 0) {
+		check_cluster = arg_enabled(c_count);
+	}
+
+	if (P_count > 0) {
+		check_pcmk = arg_enabled(P_count);
+	}
+
 	if ((disk_count > 0) && (strlen(local_uname) > SECTOR_NAME_MAX)) {
 		fprintf(stderr, "Node name mustn't be longer than %d chars.\n",
 			SECTOR_NAME_MAX);
openSUSE Build Service is sponsored by