diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e9cd8f8 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/sbd-1ee3503cbc52b73876b6aae5471d3b6f7c092bf5.tar.gz diff --git a/.sbd.metadata b/.sbd.metadata new file mode 100644 index 0000000..a89201e --- /dev/null +++ b/.sbd.metadata @@ -0,0 +1 @@ +6f21f7bb644b717fdf433be308abae1e06f3c77c SOURCES/sbd-1ee3503cbc52b73876b6aae5471d3b6f7c092bf5.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 98f42b4..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/sbd-local-debug.patch b/SOURCES/sbd-local-debug.patch new file mode 100644 index 0000000..a9d26d7 --- /dev/null +++ b/SOURCES/sbd-local-debug.patch @@ -0,0 +1,28 @@ +commit 617e138b4c3786208238a43ef2ff6e9543535161 +Author: Andrew Beekhof +Date: Fri Oct 24 11:13:14 2014 +1100 + + Correctly turn on just sbd's debug logging + +diff --git a/src/sbd-inquisitor.c b/src/sbd-inquisitor.c +index 61ee8be..6f7d3e4 100644 +--- a/src/sbd-inquisitor.c ++++ b/src/sbd-inquisitor.c +@@ -805,14 +805,15 @@ int main(int argc, char **argv, char **envp) + case 'v': + debug++; + if(debug == 1) { +- qb_log_filter_ctl(QB_LOG_SYSLOG, QB_LOG_FILTER_ADD, QB_LOG_FILTER_FILE, "sbd-*", LOG_DEBUG); +- qb_log_filter_ctl(QB_LOG_STDERR, QB_LOG_FILTER_ADD, QB_LOG_FILTER_FILE, "sbd-*", LOG_DEBUG); ++ qb_log_filter_ctl(QB_LOG_SYSLOG, QB_LOG_FILTER_ADD, QB_LOG_FILTER_FILE, "sbd-common.c,sbd-inquisitor.c,sbd-md.c,sbd-pacemaker.c", LOG_DEBUG); ++ qb_log_filter_ctl(QB_LOG_STDERR, QB_LOG_FILTER_ADD, QB_LOG_FILTER_FILE, "sbd-common.c,sbd-inquisitor.c,sbd-md.c,sbd-pacemaker.c", LOG_DEBUG); + cl_log(LOG_INFO, "Verbose mode enabled."); + + } else if(debug == 2) { + /* Go nuts, turn on pacemaker's logging too */ + qb_log_filter_ctl(QB_LOG_SYSLOG, QB_LOG_FILTER_ADD, QB_LOG_FILTER_FILE, "*", LOG_DEBUG); + qb_log_filter_ctl(QB_LOG_STDERR, QB_LOG_FILTER_ADD, QB_LOG_FILTER_FILE, "*", LOG_DEBUG); ++ cl_log(LOG_INFO, "Verbose library mode enabled."); + } + break; + case 'T': diff --git a/SOURCES/sbd-no-storage-option.patch b/SOURCES/sbd-no-storage-option.patch new file mode 100644 index 0000000..3665c1a --- /dev/null +++ b/SOURCES/sbd-no-storage-option.patch @@ -0,0 +1,17 @@ +diff --git a/src/sbd.sysconfig b/src/sbd.sysconfig +index 9ac2d15..f5b0b8c 100644 +--- a/src/sbd.sysconfig ++++ b/src/sbd.sysconfig +@@ -1,12 +1,3 @@ +-## Type: string +-## Default: "" +-# +-# SBD_DEVICE specifies the devices to use for exchanging sbd messages +-# and to monitor. If specifying more than one path, use ";" as +-# separator. +-# +-#SBD_DEVICE="" +- + ## Type: yesno + ## Default: yes + # diff --git a/SOURCES/sbd-pcmk-health.patch b/SOURCES/sbd-pcmk-health.patch new file mode 100644 index 0000000..fe89820 --- /dev/null +++ b/SOURCES/sbd-pcmk-health.patch @@ -0,0 +1,45 @@ +commit bfc01977f7413977c51f15f61fef801d2bf9c5f9 +Author: Andrew Beekhof +Date: Fri Oct 24 12:03:41 2014 +1100 + + Repair startup when no disks are present + +diff --git a/src/sbd-pacemaker.c b/src/sbd-pacemaker.c +index f62d728..7296ad2 100644 +--- a/src/sbd-pacemaker.c ++++ b/src/sbd-pacemaker.c +@@ -104,7 +104,8 @@ static int check_ais = 0; + cl_log(lvl, fmt, ##args); \ + last_state = state; \ + } \ +- } while(0) ++ healthy = state; \ ++ } while(0) + + static cib_t *cib = NULL; + static xmlNode *current_cib = NULL; +@@ -300,7 +301,6 @@ compute_status(pe_working_set_t * data_set) + + if (data_set->dc_node == NULL) { + LOGONCE(pcmk_health_transient, LOG_INFO, "We don't have a DC right now."); +- healthy = 2; + goto out; + } + +@@ -325,13 +325,13 @@ compute_status(pe_working_set_t * data_set) + LOGONCE(pcmk_health_online, LOG_INFO, "Node state: online"); + ever_had_quorum = TRUE; + +- } else if(ever_had_quorum == FALSE) { +- LOGONCE(pcmk_health_transient, LOG_INFO, "We do not have quorum yet"); +- + } else if(servant_count > 0) { + LOGONCE(pcmk_health_noquorum, LOG_WARNING, "Quorum lost"); + goto out; + ++ } else if(ever_had_quorum == FALSE) { ++ LOGONCE(pcmk_health_online, LOG_INFO, "We do not have quorum yet"); ++ + } else { + /* We lost quorum, and there are no disks present + * Setting healthy > 2 here will result in us self-fencing diff --git a/SOURCES/sbd-proc-pid.patch b/SOURCES/sbd-proc-pid.patch new file mode 100644 index 0000000..45a4775 --- /dev/null +++ b/SOURCES/sbd-proc-pid.patch @@ -0,0 +1,28 @@ +commit d172f2bb9e6e530039df3a001b9ce3eb76dc4a75 +Author: Andrew Beekhof +Date: Mon Oct 27 10:28:51 2014 +1100 + + Correctly enable /proc/pid validation in sbd_lock_running() + +diff --git a/configure.ac b/configure.ac +index ec7fced..540fd57 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -78,9 +78,17 @@ DISK=0 + if test "x${enable_shared_disk}" != xno ; then + DISK=1 + fi ++ + AC_DEFINE_UNQUOTED(SUPPORT_SHARED_DISK, $DISK, Turn on functionality that requires shared disk) + AM_CONDITIONAL(SUPPORT_SHARED_DISK, test "$DISK" = "1") + ++if ++ test -e /proc/$$ ++then ++ echo "/proc/{pid} is supported" ++ AC_DEFINE_UNQUOTED(HAVE_PROC_PID, 1, Define to 1 if /proc/{pid} is supported.) ++fi ++ + dnl ********************************************************************** + dnl Check for various argv[] replacing functions on various OSs + dnl diff --git a/SOURCES/sbd-timeout-in-seconds.patch b/SOURCES/sbd-timeout-in-seconds.patch new file mode 100644 index 0000000..dc0232d --- /dev/null +++ b/SOURCES/sbd-timeout-in-seconds.patch @@ -0,0 +1,19 @@ +commit 39adc895b1bd3455de3cea8f77a0aa6252116a04 +Author: Andrew Beekhof +Date: Mon Jan 12 13:53:22 2015 +1100 + + Leave SBD_WATCHDOG_TIMEOUT in sectods + +diff --git a/src/sbd-inquisitor.c b/src/sbd-inquisitor.c +index 52ca9ff..918dc35 100644 +--- a/src/sbd-inquisitor.c ++++ b/src/sbd-inquisitor.c +@@ -767,7 +767,7 @@ int main(int argc, char **argv, char **envp) + + value = getenv("SBD_WATCHDOG_TIMEOUT"); + if(value) { +- timeout_watchdog = crm_get_msec(value); ++ timeout_watchdog = crm_get_msec(value) / 1000; + } + + value = getenv("SBD_PIDFILE"); diff --git a/SPECS/sbd.spec b/SPECS/sbd.spec new file mode 100644 index 0000000..239401b --- /dev/null +++ b/SPECS/sbd.spec @@ -0,0 +1,143 @@ +# +# spec file for package sbd +# +# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2013 Lars Marowsky-Bree +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# +%global commit 1ee3503cbc52b73876b6aae5471d3b6f7c092bf5 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global github_owner beekhof +%global buildnum 3 + +Name: sbd +Summary: Storage-based death +License: GPLv2+ +Group: System Environment/Daemons +Version: 1.2.1 +#Release: 0.%{buildnum}.%{shortcommit}.git%{?dist} +Release: %{buildnum} +Url: https://github.com/%{github_owner}/%{name} +Source0: https://github.com/%{github_owner}/%{name}/archive/%{commit}/%{name}-%{commit}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: libuuid-devel +BuildRequires: glib2-devel +BuildRequires: libaio-devel +BuildRequires: corosync-devel +BuildRequires: pacemaker-libs-devel +BuildRequires: libtool +BuildRequires: libuuid-devel +BuildRequires: libxml2-devel +BuildRequires: pkgconfig +BuildRequires: python-devel +Patch1: sbd-no-storage-option.patch +Patch2: sbd-local-debug.patch +Patch3: sbd-pcmk-health.patch +Patch4: sbd-proc-pid.patch +Patch5: sbd-timeout-in-seconds.patch + +%if 0%{?rhel} > 0 +ExclusiveArch: i686 x86_64 s390x +%endif + +%if %{defined systemd_requires} +%systemd_requires +%endif + +%description + +This package contains the storage-based death functionality. +Currently it is limited to watchdog integration. + +########################################################### + +%prep +%autosetup -n %{name}-%{commit} -p1 + +########################################################### + +%build +autoreconf -i +export CFLAGS="$RPM_OPT_FLAGS -Wall -Werror" +%configure --disable-shared-disk +make %{?_smp_mflags} + +########################################################### + +%install + +make DESTDIR=$RPM_BUILD_ROOT LIBDIR=%{_libdir} install +rm -rf ${RPM_BUILD_ROOT}%{_libdir}/stonith +rm -rf ${RPM_BUILD_ROOT}%{_mandir}/man8/sbd* + +%if %{defined _unitdir} +install -D -m 0644 src/sbd.service $RPM_BUILD_ROOT/%{_unitdir}/sbd.service +%endif + +mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig +install -m 644 src/sbd.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/sbd + +########################################################### + +%clean +rm -rf %{buildroot} + +%if %{defined _unitdir} +%post +%systemd_post sbd.service + +%preun +%systemd_preun sbd.service + +%postun +%systemd_postun sbd.service +%endif + +%files +########################################################### +%defattr(-,root,root) +%config(noreplace) %{_sysconfdir}/sysconfig/sbd +%{_sbindir}/sbd +#doc %{_mandir}/man8/sbd* +%if %{defined _unitdir} +%{_unitdir}/sbd.service +%endif +%doc COPYING + +%changelog +* Mon Jan 12 2015 - 1.2.1-3 +- Correctly parse SBD_WATCHDOG_TIMEOUT into seconds (not milliseconds) + +* Mon Oct 27 2014 - 1.2.1-2 +- Correctly enable /proc/pid validation for sbd_lock_running() + +* Fri Oct 24 2014 - 1.2.1-1 +- Further improve integration with the el7 environment + +* Thu Oct 16 2014 - 1.2.1-0.5.872e82f3.git +- Disable unsupported functionality (for now) + +* Wed Oct 15 2014 - 1.2.1-0.4.872e82f3.git +- Improved integration with the el7 environment + +* Tue Sep 30 2014 - 1.2.1-0.3.8f912945.git +- Only build on archs supported by the HA Add-on + +* Fri Aug 29 2014 - 1.2.1-0.2.8f912945.git +- Remove some additional SUSE-isms + +* Fri Aug 29 2014 - 1.2.1-0.1.8f912945.git +- Prepare for package review + Resolves: rhbz#1134245