Merged update from upstream sources

This is an automated DistroBaker update from upstream sources.
If you do not know what this is about or would like to opt out,
contact the OSCI team.

Source: https://src.fedoraproject.org/rpms/sbd.git#3045a1b9b159a529231ddf470f2c82f435ee579f
This commit is contained in:
DistroBaker 2020-10-30 15:45:43 +01:00
parent 102f024b3e
commit 03fe02f1d6
9 changed files with 1952 additions and 0 deletions

2
.gitignore vendored
View File

@ -0,0 +1,2 @@
/sbd-*.tar.gz
/sbd-*.src.rpm

View File

@ -0,0 +1,82 @@
From 1d2a7b8d059d4f090b351b8decca0ddf274c82a0 Mon Sep 17 00:00:00 2001
From: Klaus Wenninger <klaus.wenninger@aon.at>
Date: Wed, 20 Nov 2019 15:20:19 +0100
Subject: [PATCH] Fix: regressions.sh: make parameter passing consistent
---
tests/regressions.sh | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/tests/regressions.sh b/tests/regressions.sh
index 6cfb303..7ab80be 100755
--- a/tests/regressions.sh
+++ b/tests/regressions.sh
@@ -32,7 +32,7 @@
: ${SBD_USE_DM:="yes"}
sbd() {
- LD_PRELOAD=${SBD_PRELOAD} SBD_WATCHDOG_TIMEOUT=5 SBD_DEVICE="${SBD_DEVICE}" SBD_PRELOAD_LOG=${SBD_PRELOAD_LOG} SBD_WATCHDOG_DEV=/dev/watchdog setsid ${SBD_BINARY} -p ${SBD_PIDFILE} $*
+ LD_PRELOAD=${SBD_PRELOAD} SBD_WATCHDOG_TIMEOUT=5 SBD_DEVICE="${SBD_DEVICE}" SBD_PRELOAD_LOG=${SBD_PRELOAD_LOG} SBD_WATCHDOG_DEV=/dev/watchdog setsid ${SBD_BINARY} -p ${SBD_PIDFILE} "$@"
}
sbd_wipe_disk() {
@@ -98,26 +98,26 @@ sbd_daemon_cleanup() {
pkill -TERM --pidfile ${SBD_PIDFILE} 2>/dev/null
sleep 5
pkill -KILL --pidfile ${SBD_PIDFILE} 2>/dev/null
- pkill -KILL --parent $(cat ${SBD_PIDFILE} 2>/dev/null) 2>/dev/null
+ pkill -KILL --parent "$(cat ${SBD_PIDFILE} 2>/dev/null)" 2>/dev/null
echo > ${SBD_PIDFILE}
}
_ok() {
- echo -- $@
- $@
+ echo "-- $*"
+ "$@"
rc=$?
if [ $rc -ne 0 ]; then
- echo "$@ failed with $rc"
+ echo "$* failed with $rc"
exit $rc
fi
}
_no() {
- echo -- $@
- $@
+ echo "-- $*"
+ "$@"
rc=$?
if [ $rc -eq 0 ]; then
- echo "$@ did NOT fail ($rc)"
+ echo "$* did NOT fail ($rc)"
exit $rc
fi
return 0
@@ -126,7 +126,7 @@ _no() {
_in_log() {
grep "$@" ${SBD_PRELOAD_LOG} >/dev/null
if [ $? -ne 0 ]; then
- echo "didn't find '$@' in log:"
+ echo "didn't find '$*' in log:"
cat ${SBD_PRELOAD_LOG}
sbd_daemon_cleanup
exit 1
@@ -227,10 +227,10 @@ test_stall_inquisitor() {
sbd_daemon_cleanup
sbd -d ${D[1]} -d ${D[2]} -d ${D[3]} -n test-1 watch
sleep 10
- _ok kill -0 $(cat ${SBD_PIDFILE})
- kill -STOP $(cat ${SBD_PIDFILE})
+ _ok kill -0 "$(cat ${SBD_PIDFILE})"
+ kill -STOP "$(cat ${SBD_PIDFILE})"
sleep 10
- kill -CONT $(cat ${SBD_PIDFILE}) 2>/dev/null
+ kill -CONT "$(cat ${SBD_PIDFILE})" 2>/dev/null
_in_log "watchdog fired"
}
--
1.8.3.1

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,152 @@
From 4bc08cf76fc01e98cbec76bf32bb333b77f69217 Mon Sep 17 00:00:00 2001
From: Klaus Wenninger <klaus.wenninger@aon.at>
Date: Thu, 27 Feb 2020 19:02:57 +0100
Subject: [PATCH] Fix: scheduling: overhaul the whole thing
- prevent possible lockup when format in proc changes
- properly get and handle scheduler policy & prio
- on SCHED_RR failing push to the max with SCHED_OTHER
---
src/sbd-common.c | 56 ++++++++++++++++++++++++++++++++++++++++++++------------
1 file changed, 44 insertions(+), 12 deletions(-)
diff --git a/src/sbd-common.c b/src/sbd-common.c
index 9ec43b2..c2da758 100644
--- a/src/sbd-common.c
+++ b/src/sbd-common.c
@@ -26,6 +26,9 @@
#include <pwd.h>
#include <unistd.h>
#include <dirent.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <limits.h>
#ifdef _POSIX_MEMLOCK
# include <sys/mman.h>
@@ -298,7 +301,7 @@ watchdog_populate_list(void)
FILE *file;
snprintf(entry_name, sizeof(entry_name),
- SYS_CLASS_WATCHDOG "/%s/dev", entry->d_name);
+ SYS_CLASS_WATCHDOG "/%s/dev", entry->d_name);
file = fopen(entry_name, "r");
if (file) {
int major, minor;
@@ -667,7 +670,7 @@ static int get_realtime_budget(void)
{
FILE *f;
char fname[PATH_MAX];
- int res = -1, lnum = 0;
+ int res = -1, lnum = 0, num;
char *cgroup = NULL, *namespecs = NULL;
snprintf(fname, PATH_MAX, "/proc/%jd/cgroup", (intmax_t)getpid());
@@ -677,7 +680,8 @@ static int get_realtime_budget(void)
(intmax_t)getpid());
goto exit_res;
}
- while( fscanf(f, "%d:%m[^:]:%m[^\n]", &lnum, &namespecs, &cgroup) !=EOF ) {
+ while( (num = fscanf(f, "%d:%m[^:]:%m[^\n]\n", &lnum,
+ &namespecs, &cgroup)) !=EOF ) {
if (namespecs && strstr(namespecs, "cpuacct")) {
free(namespecs);
break;
@@ -690,6 +694,11 @@ static int get_realtime_budget(void)
free(namespecs);
namespecs = NULL;
}
+ /* not to get stuck if format changes */
+ if ((num < 3) && ((fscanf(f, "%*[^\n]") == EOF) ||
+ (fscanf(f, "\n") == EOF))) {
+ break;
+ }
}
fclose(f);
if (cgroup == NULL) {
@@ -776,15 +785,17 @@ sbd_make_realtime(int priority, int stackgrowK, int heapgrowK)
return;
}
+do {
#ifdef SCHED_RR
if (move_to_root_cgroup) {
sbd_move_to_root_cgroup(enforce_moving_to_root_cgroup);
}
{
- int pcurrent = 0;
int pmin = sched_get_priority_min(SCHED_RR);
int pmax = sched_get_priority_max(SCHED_RR);
+ struct sched_param sp;
+ int pcurrent;
if (priority == 0) {
priority = pmax;
@@ -794,26 +805,47 @@ sbd_make_realtime(int priority, int stackgrowK, int heapgrowK)
priority = pmax;
}
- pcurrent = sched_getscheduler(0);
- if (pcurrent < 0) {
+ if (sched_getparam(0, &sp) < 0) {
cl_perror("Unable to get scheduler priority");
- } else if(pcurrent < priority) {
- struct sched_param sp;
+ } else if ((pcurrent = sched_getscheduler(0)) < 0) {
+ cl_perror("Unable to get scheduler policy");
+ } else if ((pcurrent == SCHED_RR) &&
+ (sp.sched_priority >= priority)) {
+ cl_log(LOG_INFO,
+ "Stay with priority (%d) for policy SCHED_RR",
+ sp.sched_priority);
+ break;
+ } else {
memset(&sp, 0, sizeof(sp));
sp.sched_priority = priority;
if (sched_setscheduler(0, SCHED_RR, &sp) < 0) {
- cl_perror("Unable to set scheduler priority to %d", priority);
+ cl_perror(
+ "Unable to set scheduler policy to SCHED_RR priority %d",
+ priority);
} else {
- cl_log(LOG_INFO, "Scheduler priority is now %d", priority);
+ cl_log(LOG_INFO,
+ "Scheduler policy is now SCHED_RR priority %d",
+ priority);
+ break;
}
}
}
#else
- cl_log(LOG_ERR, "System does not support updating the scheduler priority");
+ cl_log(LOG_ERR, "System does not support updating the scheduler policy");
+#endif
+#ifdef PRIO_PGRP
+ if (setpriority(PRIO_PGRP, 0, INT_MIN) < 0) {
+ cl_perror("Unable to raise the scheduler priority");
+ } else {
+ cl_log(LOG_INFO, "Scheduler priority raised to the maximum");
+ }
+#else
+ cl_perror("System does not support setting the scheduler priority");
#endif
+} while (0);
sbd_memlock(heapgrowK, stackgrowK);
}
@@ -826,7 +858,7 @@ maximize_priority(void)
return;
}
- sbd_make_realtime(0, 256, 256);
+ sbd_make_realtime(0, 256, 256);
if (ioprio_set(IOPRIO_WHO_PROCESS, getpid(),
IOPRIO_PRIO_VALUE(IOPRIO_CLASS_RT, 1)) != 0) {
--
1.8.3.1

9
gating.yaml Normal file
View File

@ -0,0 +1,9 @@
--- !Policy
product_versions:
- fedora-*
decision_context: bodhi_update_push_testing
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: dist.depcheck}
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}

227
sbd.spec Normal file
View File

@ -0,0 +1,227 @@
#
# 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 25fce8a7d5e8cd5abc2379077381b10bd6cec183
%global shortcommit %(c=%{commit}; echo ${c:0:7})
%global github_owner Clusterlabs
%global buildnum 7
Name: sbd
Summary: Storage-based death
License: GPLv2+
Version: 1.4.1
Release: %{buildnum}%{?dist}.1
Url: https://github.com/%{github_owner}/%{name}
Source0: https://github.com/%{github_owner}/%{name}/archive/%{commit}/%{name}-%{commit}.tar.gz
Patch0: 0001-Fix-regressions.sh-make-parameter-passing-consistent.patch
Patch1: 0002-Doc-add-environment-section-to-man-page.patch
Patch2: 0003-Fix-scheduling-overhaul-the-whole-thing.patch
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: make
BuildRequires: systemd
Conflicts: fence-agents-sbd < 4.5.0
%if 0%{?rhel}
ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
%endif
%if %{defined systemd_requires}
%systemd_requires
%endif
%description
This package contains the storage-based death functionality.
%package tests
Summary: Storage-based death environment for regression tests
License: GPLv2+
%description tests
This package provides an environment + testscripts for
regression-testing sbd.
###########################################################
%prep
%autosetup -n %{name}-%{commit} -p1
%ifarch s390x s390
sed -i src/sbd.sysconfig -e "s/Default: 5/Default: 15/"
sed -i src/sbd.sysconfig -e "s/SBD_WATCHDOG_TIMEOUT=5/SBD_WATCHDOG_TIMEOUT=15/"
%endif
###########################################################
%build
./autogen.sh
export CFLAGS="$RPM_OPT_FLAGS -Wall -Werror"
%configure
make %{?_smp_mflags}
###########################################################
%install
make DESTDIR=$RPM_BUILD_ROOT LIBDIR=%{_libdir} install
rm -rf ${RPM_BUILD_ROOT}%{_libdir}/stonith
install -D -m 0755 tests/regressions.sh $RPM_BUILD_ROOT/usr/share/sbd/regressions.sh
%if %{defined _unitdir}
install -D -m 0644 src/sbd.service $RPM_BUILD_ROOT/%{_unitdir}/sbd.service
install -D -m 0644 src/sbd_remote.service $RPM_BUILD_ROOT/%{_unitdir}/sbd_remote.service
%endif
mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig
install -m 644 src/sbd.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/sbd
# Don't package static libs
find %{buildroot} -name '*.a' -type f -print0 | xargs -0 rm -f
find %{buildroot} -name '*.la' -type f -print0 | xargs -0 rm -f
###########################################################
%if %{defined _unitdir}
%post
%systemd_post sbd.service
%systemd_post sbd_remote.service
if [ $1 -ne 1 ] ; then
if systemctl --quiet is-enabled sbd.service 2>/dev/null
then
systemctl --quiet reenable sbd.service 2>/dev/null || :
fi
if systemctl --quiet is-enabled sbd_remote.service 2>/dev/null
then
systemctl --quiet reenable sbd_remote.service 2>/dev/null || :
fi
fi
%preun
%systemd_preun sbd.service
%systemd_preun sbd_remote.service
%postun
%systemd_postun sbd.service
%systemd_postun sbd_remote.service
%endif
%files
###########################################################
%defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/sysconfig/sbd
%{_sbindir}/sbd
%exclude %{_datadir}/sbd/regressions.sh
%doc %{_mandir}/man8/sbd*
%if %{defined _unitdir}
%{_unitdir}/sbd.service
%{_unitdir}/sbd_remote.service
%endif
%doc COPYING
%files tests
###########################################################
%defattr(-,root,root)
%dir %{_datadir}/sbd
%{_datadir}/sbd/regressions.sh
%{_libdir}/libsbdtestbed*
%changelog
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.1-7.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Thu May 14 2020 Klaus Wenninger <kwenning@redhat.com> - 1.4.1-7
- Rebuild against libqb2.0 (f33-build-side-23348)
* Wed Mar 11 2020 Klaus Wenninger <kwenning@redhat.com> - 1.4.1-6
- Rebuild because tagging the build failed
* Thu Mar 5 2020 Klaus Wenninger <kwenning@redhat.com> - 1.4.1-5
- Rebase to upstream v1.4.1
- Make coverity happy with parameter passing in regressions.sh
- Add auto generated environment section to man-page
- Overhaul setting scheduler policy/priority
- Enable Fedora CI Gating
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Fri Feb 1 2019 Klaus Wenninger <kwenning@redhat.com> - 1.4.0-1
- Rebase to upstream v1.4.0
- Fail earlier on invalid servants (solves GCC9 build issue as well)
* Wed Nov 21 2018 Klaus Wenninger <kwenning@redhat.com> - 1.3.1-1.git4927571
- Rebased to commit 4927571f8e9b00db8242654b1329dfbd71dcfe99
- Removed disabling of shared-disk-support
Resolves rhbz#1606301
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.1-4.3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Sun Mar 18 2018 Iryna Shcherbina <ishcherb@redhat.com> - 1.2.1-4.2
- Update Python 2 dependency declarations to new packaging standards
(See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.1-4.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Tue Jan 30 2018 Merlin Mathesius <mmathesi@redhat.com> - 1.2.1-4
- Patch to use correct C inline function semantics to fix FTBFS (BZ#1424417)
Cleanup spec file conditionals
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.1-3.4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.1-3.3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.1-3.2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.1-3.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Tue Jan 19 2016 Jan Pokorný <jpokorny+rpm-sbd@redhat.com> - 1.2.1-3
- Rebuilt for libpe_status soname bump arising from Pacemaker 1.1.14
* Thu Jul 02 2015 Ralf Corsépius <corsepiu@fedoraproject.org> - 1.2.1-2
- Add dist-tag (RHBZ #1237187).
* Fri Jun 19 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2.1-1.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Thu Oct 30 2014 <andrew@beekhof.net> - 1.2.1-1
- Correctly enable /proc/pid validation for sbd_lock_running()
- Improved integration with the el7 environment
* Fri Aug 29 2014 <andrew@beekhof.net> - 1.2.1-0.2.8f912945.git
- Remove some additional SUSE-isms
* Fri Aug 29 2014 <andrew@beekhof.net> - 1.2.1-0.1.8f912945.git
- Prepare for package review
Resolves: rhbz#1134245

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (sbd-25fce8a7d5e8cd5abc2379077381b10bd6cec183.tar.gz) = 3b89ee0aa88282f17c8daf725a1e7a8c2f2affdcf6ff6f4ca4faf250760d778a65c5693e5df3fcc7554d60dd9b0cb1a0350e266fadb7668320f3c676d8799a29

4
tests/inventory Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
export TEST_DOCKER_EXTRA_ARGS="--privileged --network host"
exec merge-standard-inventory "$@"

16
tests/tests.yml Normal file
View File

@ -0,0 +1,16 @@
---
- hosts: localhost
roles:
- role: standard-test-basic
tags:
- classic
- container
tests:
- smoke:
dir: .
run: /usr/share/sbd/regressions.sh
required_packages:
- sbd
- sbd-tests
- device-mapper