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);