New upstream release
This commit is contained in:
parent
e50e0e82e9
commit
d7d8b27d08
@ -0,0 +1,43 @@
|
|||||||
|
From 80468a84ea3044a5227c57a258dc6e508c88d468 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
|
Date: Wed, 6 Feb 2019 13:25:47 +0000
|
||||||
|
Subject: [PATCH] Choose libtirpc or another RPC library for XDR headers and
|
||||||
|
library.
|
||||||
|
|
||||||
|
Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
|
||||||
|
---
|
||||||
|
configure.ac | 20 ++++++++++++++++++++
|
||||||
|
1 file changed, 20 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index 4294146..be62260 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -158,4 +158,24 @@ AC_ARG_WITH(randomseed,
|
||||||
|
AC_MSG_RESULT("/var/run/random-seed")
|
||||||
|
])
|
||||||
|
|
||||||
|
+# Check for an RPC library, starting with libtirpc.
|
||||||
|
+PKG_CHECK_MODULES([RPC], [libtirpc], [], [
|
||||||
|
+ # If we don't have libtirpc, then we must have <rpc/rpc.h> and
|
||||||
|
+ # some library to link to in libdir.
|
||||||
|
+ RPC_CFLAGS=""
|
||||||
|
+ AC_CHECK_HEADER([rpc/rpc.h],[],[
|
||||||
|
+ AC_MSG_ERROR([XDR header files are required])
|
||||||
|
+ ],
|
||||||
|
+ [#include <rpc/types.h>])
|
||||||
|
+
|
||||||
|
+ old_LIBS="$LIBS"
|
||||||
|
+ LIBS=""
|
||||||
|
+ AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
|
||||||
|
+ RPC_LIBS="$LIBS"
|
||||||
|
+ LIBS="$old_LIBS"
|
||||||
|
+
|
||||||
|
+ AC_SUBST([RPC_CFLAGS])
|
||||||
|
+ AC_SUBST([RPC_LIBS])
|
||||||
|
+])
|
||||||
|
+
|
||||||
|
AC_OUTPUT([Makefile src/Makefile])
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -1,28 +0,0 @@
|
|||||||
From c5cb4e1a0339844ae3f55ff1dc4a716c28012f05 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Paul Crawford <psc@sat.dundee.ac.uk>
|
|
||||||
Date: Tue, 28 Jun 2016 18:08:48 +0100
|
|
||||||
Subject: [PATCH 01/10] Include linux/param.h for EXEC_PAGESIZE definition
|
|
||||||
|
|
||||||
Musl does not include linux/param.h whereas glibc does, so it fails
|
|
||||||
to build on musl. Patch supplied by Khem Raj <raj.khem@gmail.com>
|
|
||||||
---
|
|
||||||
src/watchdog.c | 3 +++
|
|
||||||
1 file changed, 3 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/src/watchdog.c b/src/watchdog.c
|
|
||||||
index acf6450..486384a 100644
|
|
||||||
--- a/src/watchdog.c
|
|
||||||
+++ b/src/watchdog.c
|
|
||||||
@@ -26,6 +26,9 @@
|
|
||||||
#include <sys/param.h> /* For EXEC_PAGESIZE */
|
|
||||||
#include <linux/oom.h>
|
|
||||||
#include <linux/watchdog.h>
|
|
||||||
+#ifdef __linux__
|
|
||||||
+#include <linux/param.h>
|
|
||||||
+#endif
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include <libgen.h>
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,153 +0,0 @@
|
|||||||
From 00cf0b0afc7cac797713276435322aeacd6020cb Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Maciej S. Szmigiero" <mail@maciej.szmigiero.name>
|
|
||||||
Date: Fri, 16 Dec 2016 23:18:00 +0100
|
|
||||||
Subject: [PATCH 02/10] Generalize and make watchdog refresh "settimeout"
|
|
||||||
workaround configurable
|
|
||||||
|
|
||||||
Commit 0d156df287656 introduced a workaround for a bug in the kernel
|
|
||||||
it87_wdt driver, where on some boards the watchdog timer wasn't refreshed
|
|
||||||
correctly. The workaround was to set its timeout again every refresh.
|
|
||||||
|
|
||||||
However, this workaround was introduced unconditionally for every user of
|
|
||||||
the it87_wdt driver.
|
|
||||||
Currently, this kernel bug is supposed to be fixed ( by kernel commit
|
|
||||||
0bcd0b6a47431 ) so let's revert to old behavior by default so we by
|
|
||||||
coincidence don't mask future bugs and also comply with the kernel watchdog
|
|
||||||
API.
|
|
||||||
|
|
||||||
Let's also print an informational message for an user how to re-enable the
|
|
||||||
workaround in case this driver bug wasn't fixed completely or the user
|
|
||||||
has an older kernel version without the fix.
|
|
||||||
|
|
||||||
This change also makes this workaround available generically in case
|
|
||||||
a similar problem occurs in future in some other driver.
|
|
||||||
---
|
|
||||||
include/extern.h | 1 +
|
|
||||||
src/configfile.c | 3 +++
|
|
||||||
src/keep_alive.c | 20 +++++++++++---------
|
|
||||||
watchdog.conf | 3 +++
|
|
||||||
watchdog.conf.5 | 6 ++++++
|
|
||||||
5 files changed, 24 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/include/extern.h b/include/extern.h
|
|
||||||
index f00e4cf..cbf97fd 100644
|
|
||||||
--- a/include/extern.h
|
|
||||||
+++ b/include/extern.h
|
|
||||||
@@ -91,6 +91,7 @@ extern char *logdir;
|
|
||||||
extern char *heartbeat;
|
|
||||||
extern int hbstamps;
|
|
||||||
|
|
||||||
+extern int refresh_use_settimeout;
|
|
||||||
extern int realtime;
|
|
||||||
|
|
||||||
extern struct list *tr_bin_list;
|
|
||||||
diff --git a/src/configfile.c b/src/configfile.c
|
|
||||||
index a0996e2..10bbc69 100644
|
|
||||||
--- a/src/configfile.c
|
|
||||||
+++ b/src/configfile.c
|
|
||||||
@@ -28,6 +28,7 @@ static void add_test_binaries(const char *path);
|
|
||||||
#define ADMIN "admin"
|
|
||||||
#define CHANGE "change"
|
|
||||||
#define DEVICE "watchdog-device"
|
|
||||||
+#define DEVICE_USE_SETTIMEOUT "watchdog-refresh-use-settimeout"
|
|
||||||
#define DEVICE_TIMEOUT "watchdog-timeout"
|
|
||||||
#define FILENAME "file"
|
|
||||||
#define INTERFACE "interface"
|
|
||||||
@@ -95,6 +96,7 @@ char *logdir = "/var/log/watchdog";
|
|
||||||
char *heartbeat = NULL;
|
|
||||||
int hbstamps = 300;
|
|
||||||
|
|
||||||
+int refresh_use_settimeout = FALSE;
|
|
||||||
int realtime = FALSE;
|
|
||||||
|
|
||||||
/* Self-repairing binaries list */
|
|
||||||
@@ -206,6 +208,7 @@ void read_config(char *configfile)
|
|
||||||
} else if (READ_INT(LOGTICK, &logtick) == 0) {
|
|
||||||
ticker = logtick;
|
|
||||||
} else if (READ_STRING(DEVICE, &devname) == 0) {
|
|
||||||
+ } else if (READ_ENUM(DEVICE_USE_SETTIMEOUT, &refresh_use_settimeout) == 0) {
|
|
||||||
} else if (READ_INT(DEVICE_TIMEOUT, &dev_timeout) == 0) {
|
|
||||||
} else if (READ_LIST(TEMP, &temp_list) == 0) {
|
|
||||||
} else if (READ_INT(MAXTEMP, &maxtemp) == 0) {
|
|
||||||
diff --git a/src/keep_alive.c b/src/keep_alive.c
|
|
||||||
index 2f77665..a57b0b5 100644
|
|
||||||
--- a/src/keep_alive.c
|
|
||||||
+++ b/src/keep_alive.c
|
|
||||||
@@ -29,7 +29,6 @@
|
|
||||||
|
|
||||||
static int watchdog_fd = -1;
|
|
||||||
static int timeout_used = TIMER_MARGIN;
|
|
||||||
-static int Refresh_using_ioctl = FALSE;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Open the watchdog timer (if name non-NULL) and set the time-out value (if non-zero).
|
|
||||||
@@ -68,16 +67,19 @@ int open_watchdog(char *name, int timeout)
|
|
||||||
/* The IT8728 on Gigabyte motherboard (and similar) would trip due to the normal
|
|
||||||
* refresh in the device driver failing to reset the timer for no obvious reason
|
|
||||||
* (though the normal operation used the Consumer IR sender to refresh via an
|
|
||||||
- * interrupt - also a non-obvious method!) so this work-around simply sets the
|
|
||||||
- * time-out every refresh operation.
|
|
||||||
+ * interrupt - also a non-obvious method!) so let's warn users of these
|
|
||||||
+ * watchdogs and direct them to a workaround option.
|
|
||||||
*
|
|
||||||
- * See https://bugs.launchpad.net/ubuntu/+source/linux/+bug/932381
|
|
||||||
+ * See https://bugs.launchpad.net/ubuntu/+source/linux/+bug/932381 and
|
|
||||||
+ * https://bugzilla.kernel.org/show_bug.cgi?id=42801
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
- Refresh_using_ioctl = FALSE;
|
|
||||||
- if (strcmp("IT87 WDT", (char *)ident.identity) == 0) {
|
|
||||||
- Refresh_using_ioctl = TRUE;
|
|
||||||
- log_message(LOG_INFO, "Running IT87 module fix-up");
|
|
||||||
+ if (!refresh_use_settimeout && strcmp("IT87 WDT", (char *)ident.identity) == 0) {
|
|
||||||
+ log_message(LOG_INFO,
|
|
||||||
+ "IT87 watchdog detected, if watchdog trips by itself when the first timeout interval elapses "
|
|
||||||
+ "try updating to the latest kernel");
|
|
||||||
+ log_message(LOG_INFO, "if this does not help please report a kernel bug (not this package bug!) "
|
|
||||||
+ "and try using watchdog-refresh-use-settimeout=yes config option as a workaround");
|
|
||||||
}
|
|
||||||
|
|
||||||
return rv;
|
|
||||||
@@ -163,7 +165,7 @@ int keep_alive(void)
|
|
||||||
if (watchdog_fd == -1)
|
|
||||||
return (ENOERR);
|
|
||||||
|
|
||||||
- if (Refresh_using_ioctl) {
|
|
||||||
+ if (refresh_use_settimeout) {
|
|
||||||
int timeout = timeout_used;
|
|
||||||
if (ioctl(watchdog_fd, WDIOC_SETTIMEOUT, &timeout) < 0) {
|
|
||||||
err = errno;
|
|
||||||
diff --git a/watchdog.conf b/watchdog.conf
|
|
||||||
index 3ccdb97..dcd59ce 100644
|
|
||||||
--- a/watchdog.conf
|
|
||||||
+++ b/watchdog.conf
|
|
||||||
@@ -29,6 +29,9 @@
|
|
||||||
#repair-maximum = 1
|
|
||||||
|
|
||||||
#watchdog-device = /dev/watchdog
|
|
||||||
+# If your watchdog trips by itself when the first timeout interval elapses try
|
|
||||||
+# uncommenting the line below
|
|
||||||
+#watchdog-refresh-use-settimeout = yes
|
|
||||||
|
|
||||||
# Defaults compiled into the binary
|
|
||||||
#temperature-sensor =
|
|
||||||
diff --git a/watchdog.conf.5 b/watchdog.conf.5
|
|
||||||
index 5af519d..4e5155a 100644
|
|
||||||
--- a/watchdog.conf.5
|
|
||||||
+++ b/watchdog.conf.5
|
|
||||||
@@ -64,6 +64,12 @@ Set the watchdog device name, typically /dev/watchdog. Default is to disable
|
|
||||||
keep alive support. This should be tested by running the daemon from the
|
|
||||||
command line before configuring it to start automatically on booting.
|
|
||||||
.TP
|
|
||||||
+watchdog-refresh-use-settimeout = <yes|no>
|
|
||||||
+Refresh watchdog timer by setting its timeout instead of using a normal watchdog
|
|
||||||
+refresh operation.
|
|
||||||
+Might help if your watchdog trips by itself when the first timeout interval
|
|
||||||
+elapses.
|
|
||||||
+.TP
|
|
||||||
watchdog-timeout = <timeout>
|
|
||||||
Set the watchdog device timeout during startup. If not set, a default is used
|
|
||||||
that should be set to the kernel timer margin at compile time.
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,66 +0,0 @@
|
|||||||
From de06f50eee35e3ea0daaf77d21e8888f8d8753ad Mon Sep 17 00:00:00 2001
|
|
||||||
From: Paul Crawford <psc@sat.dundee.ac.uk>
|
|
||||||
Date: Wed, 21 Dec 2016 22:00:51 +0000
|
|
||||||
Subject: [PATCH 03/10] Ignore build products in GIT
|
|
||||||
|
|
||||||
- Added a .gitignore file to list those files we do not track in GIT
|
|
||||||
|
|
||||||
- Based on pull request by Maciej S. Szmigiero:
|
|
||||||
|
|
||||||
Currently, after doing checkout and build 'git status' on the
|
|
||||||
source tree returns a lot of untracked files. Their presence
|
|
||||||
makes it harder to spot actual tree changes, so let's make
|
|
||||||
the noise disappear from 'git status' by adding proper .gitignore
|
|
||||||
files.
|
|
||||||
---
|
|
||||||
.gitignore | 38 ++++++++++++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 38 insertions(+)
|
|
||||||
create mode 100644 .gitignore
|
|
||||||
|
|
||||||
diff --git a/.gitignore b/.gitignore
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..db2baeb
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/.gitignore
|
|
||||||
@@ -0,0 +1,38 @@
|
|
||||||
+# Ignore hidden/backup/compilation files
|
|
||||||
+
|
|
||||||
+.*
|
|
||||||
+*.o
|
|
||||||
+*~
|
|
||||||
+
|
|
||||||
+# However don't ignore this file
|
|
||||||
+
|
|
||||||
+!/.gitignore
|
|
||||||
+
|
|
||||||
+# Ignore the build programs
|
|
||||||
+
|
|
||||||
+src/watchdog
|
|
||||||
+src/wd_identify
|
|
||||||
+src/wd_keepalive
|
|
||||||
+
|
|
||||||
+# Ignore remaining files create/modified by the steps:
|
|
||||||
+# autoreconf -i
|
|
||||||
+# ./configure
|
|
||||||
+# make
|
|
||||||
+
|
|
||||||
+Makefile
|
|
||||||
+Makefile.in
|
|
||||||
+aclocal.m4
|
|
||||||
+autom4te.cache/
|
|
||||||
+compile
|
|
||||||
+config.log
|
|
||||||
+config.status
|
|
||||||
+configure
|
|
||||||
+depcomp
|
|
||||||
+include/config.h
|
|
||||||
+include/config.h.in
|
|
||||||
+include/stamp-h1
|
|
||||||
+install-sh
|
|
||||||
+missing
|
|
||||||
+src/Makefile
|
|
||||||
+src/Makefile.in
|
|
||||||
+
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
|||||||
From f52c40680f0aad44b9ae16648803453ec00cbb2c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Paul Crawford <psc@sat.dundee.ac.uk>
|
|
||||||
Date: Fri, 30 Dec 2016 15:55:45 +0000
|
|
||||||
Subject: [PATCH 04/10] Compile with musl when nfs is disabled
|
|
||||||
|
|
||||||
musl does by default not ship with rpc headers. The watchdog should
|
|
||||||
not require rpc headers when nfs support is disabled.
|
|
||||||
|
|
||||||
Patch by Felix Janda <fjanda@users.sf.net>
|
|
||||||
---
|
|
||||||
include/sundries.h | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/include/sundries.h b/include/sundries.h
|
|
||||||
index 4379982..98c489a 100644
|
|
||||||
--- a/include/sundries.h
|
|
||||||
+++ b/include/sundries.h
|
|
||||||
@@ -9,9 +9,11 @@
|
|
||||||
#include <signal.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
+#if HAVE_NFS
|
|
||||||
#if !defined(bool_t) && !defined(__GLIBC__)
|
|
||||||
#include <rpc/types.h>
|
|
||||||
#endif
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
extern int mount_mount_quiet;
|
|
||||||
extern int mount_verbose;
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
|||||||
From 2878f90d6f50e7243038f4b1221654f18b2bd475 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Paul Crawford <psc@sat.dundee.ac.uk>
|
|
||||||
Date: Fri, 30 Dec 2016 16:01:15 +0000
|
|
||||||
Subject: [PATCH 05/10] Rename READ_ENUM to READ_YESNO
|
|
||||||
|
|
||||||
- Previously we only has a single enumerated choice - the Boolean
|
|
||||||
yes/no option in the config file.
|
|
||||||
|
|
||||||
- In preparation for having yes/no/auto we should make this more
|
|
||||||
obvious.
|
|
||||||
---
|
|
||||||
src/configfile.c | 12 ++++++------
|
|
||||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/configfile.c b/src/configfile.c
|
|
||||||
index 10bbc69..809e39a 100644
|
|
||||||
--- a/src/configfile.c
|
|
||||||
+++ b/src/configfile.c
|
|
||||||
@@ -128,7 +128,7 @@ READ_LIST_END()
|
|
||||||
|
|
||||||
#define READ_INT(name, iv) read_int_func( arg, val, name, 0, 0, iv)
|
|
||||||
#define READ_STRING(name, str) read_string_func( arg, val, name, Read_allow_blank, str)
|
|
||||||
-#define READ_ENUM(name, iv) read_enumerated_func(arg, val, name, Yes_No_list, iv)
|
|
||||||
+#define READ_YESNO(name, iv) read_enumerated_func(arg, val, name, Yes_No_list, iv)
|
|
||||||
#define READ_LIST(name, list) read_list_func( arg, val, name, 0, list)
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -195,7 +195,7 @@ void read_config(char *configfile)
|
|
||||||
} else if (READ_INT(PINGCOUNT, &pingcount) == 0) {
|
|
||||||
} else if (READ_LIST(PING, &target_list) == 0) {
|
|
||||||
} else if (READ_LIST(INTERFACE, &iface_list) == 0) {
|
|
||||||
- } else if (READ_ENUM(REALTIME, &realtime) == 0) {
|
|
||||||
+ } else if (READ_YESNO(REALTIME, &realtime) == 0) {
|
|
||||||
} else if (READ_INT(PRIORITY, &schedprio) == 0) {
|
|
||||||
} else if (READ_STRING(REPAIRBIN, &repair_bin) == 0) {
|
|
||||||
} else if (READ_INT(REPAIRTIMEOUT, &repair_timeout) == 0) {
|
|
||||||
@@ -208,7 +208,7 @@ void read_config(char *configfile)
|
|
||||||
} else if (READ_INT(LOGTICK, &logtick) == 0) {
|
|
||||||
ticker = logtick;
|
|
||||||
} else if (READ_STRING(DEVICE, &devname) == 0) {
|
|
||||||
- } else if (READ_ENUM(DEVICE_USE_SETTIMEOUT, &refresh_use_settimeout) == 0) {
|
|
||||||
+ } else if (READ_YESNO(DEVICE_USE_SETTIMEOUT, &refresh_use_settimeout) == 0) {
|
|
||||||
} else if (READ_INT(DEVICE_TIMEOUT, &dev_timeout) == 0) {
|
|
||||||
} else if (READ_LIST(TEMP, &temp_list) == 0) {
|
|
||||||
} else if (READ_INT(MAXTEMP, &maxtemp) == 0) {
|
|
||||||
@@ -219,12 +219,12 @@ void read_config(char *configfile)
|
|
||||||
} else if (READ_INT(ALLOCMEM, &minalloc) == 0) {
|
|
||||||
} else if (READ_STRING(LOGDIR, &logdir) == 0) {
|
|
||||||
} else if (READ_STRING(TESTDIR, &test_dir) == 0) {
|
|
||||||
- } else if (READ_ENUM(SOFTBOOT, &softboot) == 0) {
|
|
||||||
- } else if (READ_ENUM(TEMPPOWEROFF, &temp_poweroff) == 0) {
|
|
||||||
+ } else if (READ_YESNO(SOFTBOOT, &softboot) == 0) {
|
|
||||||
+ } else if (READ_YESNO(TEMPPOWEROFF, &temp_poweroff) == 0) {
|
|
||||||
} else if (READ_INT(SIGTERM_DELAY, &sigterm_delay) == 0) {
|
|
||||||
} else if (READ_INT(RETRYTIMEOUT, &retry_timeout) == 0) {
|
|
||||||
} else if (READ_INT(REPAIRMAX, &repair_max) == 0) {
|
|
||||||
- } else if (READ_ENUM(VERBOSE, &verbose) == 0) {
|
|
||||||
+ } else if (READ_YESNO(VERBOSE, &verbose) == 0) {
|
|
||||||
} else {
|
|
||||||
log_message(LOG_WARNING, "Ignoring invalid option at line %d of config file: %s=%s", linecount, arg, val);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,183 +0,0 @@
|
|||||||
From 25fa3156526d2e4e1a9bc84a160bf7850107bf27 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Paul Crawford <psc@sat.dundee.ac.uk>
|
|
||||||
Date: Fri, 30 Dec 2016 16:39:16 +0000
|
|
||||||
Subject: [PATCH 06/10] Make IT87 fix-up automatic by default
|
|
||||||
|
|
||||||
- Update 00cf0b0 from Maciej S. Szmigiero proposed making the IT87
|
|
||||||
style of fix something that is set only by the configuration file,
|
|
||||||
however, for many users with the buggy IT87 driver this will cause
|
|
||||||
problems.
|
|
||||||
|
|
||||||
- This change make the choice a 3 state one:
|
|
||||||
|
|
||||||
NO = never use ioctl-based refresh (old way, and in keeping
|
|
||||||
with the kernel API guidelines for watchdog use).
|
|
||||||
|
|
||||||
YES = always use the ioctl-based refresh (i.e set timer every
|
|
||||||
time, instead of writing to /dev/watchdog). Might be
|
|
||||||
useful if another driver module is found to share same
|
|
||||||
sort of bug as the IT87 module.
|
|
||||||
|
|
||||||
AUTO = check for IT87 and use ioctl-based method if found. This
|
|
||||||
is the same basec behaviour as before update 00cf0b0 but
|
|
||||||
the choice for yes/no now supported.
|
|
||||||
---
|
|
||||||
include/extern.h | 4 ++++
|
|
||||||
src/configfile.c | 12 ++++++++++--
|
|
||||||
src/keep_alive.c | 43 ++++++++++++++++++++++++++++++++-----------
|
|
||||||
watchdog.conf.5 | 8 ++++----
|
|
||||||
4 files changed, 50 insertions(+), 17 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/include/extern.h b/include/extern.h
|
|
||||||
index cbf97fd..6d4ba5e 100644
|
|
||||||
--- a/include/extern.h
|
|
||||||
+++ b/include/extern.h
|
|
||||||
@@ -59,6 +59,10 @@ struct list {
|
|
||||||
#define FALSE 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#define ENUM_NO 0
|
|
||||||
+#define ENUM_YES 1
|
|
||||||
+#define ENUM_AUTO 2
|
|
||||||
+
|
|
||||||
#define TS_SIZE 12
|
|
||||||
|
|
||||||
/* === External variables === */
|
|
||||||
diff --git a/src/configfile.c b/src/configfile.c
|
|
||||||
index 809e39a..29e3464 100644
|
|
||||||
--- a/src/configfile.c
|
|
||||||
+++ b/src/configfile.c
|
|
||||||
@@ -96,7 +96,7 @@ char *logdir = "/var/log/watchdog";
|
|
||||||
char *heartbeat = NULL;
|
|
||||||
int hbstamps = 300;
|
|
||||||
|
|
||||||
-int refresh_use_settimeout = FALSE;
|
|
||||||
+int refresh_use_settimeout = ENUM_AUTO;
|
|
||||||
int realtime = FALSE;
|
|
||||||
|
|
||||||
/* Self-repairing binaries list */
|
|
||||||
@@ -120,6 +120,13 @@ READ_LIST_ADD("yes", 1)
|
|
||||||
READ_LIST_END()
|
|
||||||
};
|
|
||||||
|
|
||||||
+static const read_list_t YN_Auto_list[] = {
|
|
||||||
+READ_LIST_ADD("no", ENUM_NO)
|
|
||||||
+READ_LIST_ADD("yes", ENUM_YES)
|
|
||||||
+READ_LIST_ADD("auto", ENUM_AUTO)
|
|
||||||
+READ_LIST_END()
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
/* Use the macros below to simplify the parsing function. For now we don't use the
|
|
||||||
* integer range checking (0=0 so not checked), and assume all strings can be blank and
|
|
||||||
* enumerated choices are Yes/No, but in future we could add such settings to the #define'd
|
|
||||||
@@ -129,6 +136,7 @@ READ_LIST_END()
|
|
||||||
#define READ_INT(name, iv) read_int_func( arg, val, name, 0, 0, iv)
|
|
||||||
#define READ_STRING(name, str) read_string_func( arg, val, name, Read_allow_blank, str)
|
|
||||||
#define READ_YESNO(name, iv) read_enumerated_func(arg, val, name, Yes_No_list, iv)
|
|
||||||
+#define READ_YN_AUTO(name, iv) read_enumerated_func(arg, val, name, YN_Auto_list, iv)
|
|
||||||
#define READ_LIST(name, list) read_list_func( arg, val, name, 0, list)
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -208,7 +216,7 @@ void read_config(char *configfile)
|
|
||||||
} else if (READ_INT(LOGTICK, &logtick) == 0) {
|
|
||||||
ticker = logtick;
|
|
||||||
} else if (READ_STRING(DEVICE, &devname) == 0) {
|
|
||||||
- } else if (READ_YESNO(DEVICE_USE_SETTIMEOUT, &refresh_use_settimeout) == 0) {
|
|
||||||
+ } else if (READ_YN_AUTO(DEVICE_USE_SETTIMEOUT, &refresh_use_settimeout) == 0) {
|
|
||||||
} else if (READ_INT(DEVICE_TIMEOUT, &dev_timeout) == 0) {
|
|
||||||
} else if (READ_LIST(TEMP, &temp_list) == 0) {
|
|
||||||
} else if (READ_INT(MAXTEMP, &maxtemp) == 0) {
|
|
||||||
diff --git a/src/keep_alive.c b/src/keep_alive.c
|
|
||||||
index a57b0b5..6e721d9 100644
|
|
||||||
--- a/src/keep_alive.c
|
|
||||||
+++ b/src/keep_alive.c
|
|
||||||
@@ -29,6 +29,7 @@
|
|
||||||
|
|
||||||
static int watchdog_fd = -1;
|
|
||||||
static int timeout_used = TIMER_MARGIN;
|
|
||||||
+static int Refresh_using_ioctl = FALSE;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Open the watchdog timer (if name non-NULL) and set the time-out value (if non-zero).
|
|
||||||
@@ -67,19 +68,39 @@ int open_watchdog(char *name, int timeout)
|
|
||||||
/* The IT8728 on Gigabyte motherboard (and similar) would trip due to the normal
|
|
||||||
* refresh in the device driver failing to reset the timer for no obvious reason
|
|
||||||
* (though the normal operation used the Consumer IR sender to refresh via an
|
|
||||||
- * interrupt - also a non-obvious method!) so let's warn users of these
|
|
||||||
- * watchdogs and direct them to a workaround option.
|
|
||||||
+ * interrupt - also a non-obvious method!) so this work-around simply sets the
|
|
||||||
+ * time-out every refresh operation.
|
|
||||||
*
|
|
||||||
- * See https://bugs.launchpad.net/ubuntu/+source/linux/+bug/932381 and
|
|
||||||
- * https://bugzilla.kernel.org/show_bug.cgi?id=42801
|
|
||||||
+ * See https://bugs.launchpad.net/ubuntu/+source/linux/+bug/932381
|
|
||||||
+ * Also https://bugzilla.kernel.org/show_bug.cgi?id=42801
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
- if (!refresh_use_settimeout && strcmp("IT87 WDT", (char *)ident.identity) == 0) {
|
|
||||||
- log_message(LOG_INFO,
|
|
||||||
- "IT87 watchdog detected, if watchdog trips by itself when the first timeout interval elapses "
|
|
||||||
- "try updating to the latest kernel");
|
|
||||||
- log_message(LOG_INFO, "if this does not help please report a kernel bug (not this package bug!) "
|
|
||||||
- "and try using watchdog-refresh-use-settimeout=yes config option as a workaround");
|
|
||||||
+
|
|
||||||
+ Refresh_using_ioctl = FALSE;
|
|
||||||
+
|
|
||||||
+ switch (refresh_use_settimeout) {
|
|
||||||
+ case ENUM_NO:
|
|
||||||
+ /* Set to "no" so never use ioctl mode. */
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ case ENUM_YES:
|
|
||||||
+ /* Set to "yes" so always use ioctl mode. */
|
|
||||||
+ Refresh_using_ioctl = TRUE;
|
|
||||||
+ log_message(LOG_INFO, "Running ioctl-based refresh");
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ case ENUM_AUTO:
|
|
||||||
+ /* Set to "auto" to decide based on driver identity. */
|
|
||||||
+ Refresh_using_ioctl = FALSE;
|
|
||||||
+ if (strcmp("IT87 WDT", (char *)ident.identity) == 0) {
|
|
||||||
+ Refresh_using_ioctl = TRUE;
|
|
||||||
+ log_message(LOG_INFO, "Running IT87 module fix-up");
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
+ default:
|
|
||||||
+ log_message(LOG_ERR, "Unknown ioctl selection mode (%d)", refresh_use_settimeout);
|
|
||||||
+ break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return rv;
|
|
||||||
@@ -165,7 +186,7 @@ int keep_alive(void)
|
|
||||||
if (watchdog_fd == -1)
|
|
||||||
return (ENOERR);
|
|
||||||
|
|
||||||
- if (refresh_use_settimeout) {
|
|
||||||
+ if (Refresh_using_ioctl) {
|
|
||||||
int timeout = timeout_used;
|
|
||||||
if (ioctl(watchdog_fd, WDIOC_SETTIMEOUT, &timeout) < 0) {
|
|
||||||
err = errno;
|
|
||||||
diff --git a/watchdog.conf.5 b/watchdog.conf.5
|
|
||||||
index 4e5155a..709c36e 100644
|
|
||||||
--- a/watchdog.conf.5
|
|
||||||
+++ b/watchdog.conf.5
|
|
||||||
@@ -64,11 +64,11 @@ Set the watchdog device name, typically /dev/watchdog. Default is to disable
|
|
||||||
keep alive support. This should be tested by running the daemon from the
|
|
||||||
command line before configuring it to start automatically on booting.
|
|
||||||
.TP
|
|
||||||
-watchdog-refresh-use-settimeout = <yes|no>
|
|
||||||
+watchdog-refresh-use-settimeout = <auto|yes|no>
|
|
||||||
Refresh watchdog timer by setting its timeout instead of using a normal watchdog
|
|
||||||
-refresh operation.
|
|
||||||
-Might help if your watchdog trips by itself when the first timeout interval
|
|
||||||
-elapses.
|
|
||||||
+refresh operation. Might help if your watchdog trips by itself when the first
|
|
||||||
+timeout interval elapses. Default is 'auto' for IT87 fix-up but this can be
|
|
||||||
+disabled with 'no' or forced for other modules with 'yes'.
|
|
||||||
.TP
|
|
||||||
watchdog-timeout = <timeout>
|
|
||||||
Set the watchdog device timeout during startup. If not set, a default is used
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,116 +0,0 @@
|
|||||||
From 62face90fe89ea1dc88b6b093f4921e47461f48d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michael Meskes <meskes@debian.org>
|
|
||||||
Date: Fri, 20 Jan 2017 14:02:17 +0100
|
|
||||||
Subject: [PATCH 07/10] Synced Debian files with 5.15-2
|
|
||||||
|
|
||||||
---
|
|
||||||
debian/changelog | 9 +++++++++
|
|
||||||
debian/control | 2 +-
|
|
||||||
debian/po/nl.po | 3 ---
|
|
||||||
debian/po/ru.po | 8 ++------
|
|
||||||
debian/rules | 9 +++++----
|
|
||||||
5 files changed, 17 insertions(+), 14 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/debian/changelog b/debian/changelog
|
|
||||||
index fd436d8..1559626 100644
|
|
||||||
--- a/debian/changelog
|
|
||||||
+++ b/debian/changelog
|
|
||||||
@@ -1,3 +1,12 @@
|
|
||||||
+watchdog (5.15-2) unstable; urgency=medium
|
|
||||||
+
|
|
||||||
+ * Fix FTCBFS: Let dh_auto_configure pass --host to ./configure
|
|
||||||
+ (Closes: #851231) Thanks to Helmut Grohne <helmut@subdivi.de>
|
|
||||||
+ * Bumped Standards-Version to 3.9.8, no changes needed.
|
|
||||||
+ * Enabled bindnow linker flag.
|
|
||||||
+
|
|
||||||
+ -- Michael Meskes <meskes@debian.org> Fri, 20 Jan 2017 13:31:26 +0100
|
|
||||||
+
|
|
||||||
watchdog (5.15-1) unstable; urgency=medium
|
|
||||||
|
|
||||||
* New upstream version.
|
|
||||||
diff --git a/debian/control b/debian/control
|
|
||||||
index a9f8a68..625f820 100644
|
|
||||||
--- a/debian/control
|
|
||||||
+++ b/debian/control
|
|
||||||
@@ -3,7 +3,7 @@ Section: admin
|
|
||||||
Priority: extra
|
|
||||||
Maintainer: Michael Meskes <meskes@debian.org>
|
|
||||||
Build-Depends: debhelper (>= 9), po-debconf (>= 0.5.0), dh-systemd (>= 1.5)
|
|
||||||
-Standards-Version: 3.9.6
|
|
||||||
+Standards-Version: 3.9.8
|
|
||||||
Homepage: http://watchdog.sourceforge.net
|
|
||||||
|
|
||||||
Package: watchdog
|
|
||||||
diff --git a/debian/po/nl.po b/debian/po/nl.po
|
|
||||||
index 9f9d657..73d1d28 100644
|
|
||||||
--- a/debian/po/nl.po
|
|
||||||
+++ b/debian/po/nl.po
|
|
||||||
@@ -45,9 +45,6 @@ msgstr "Na het stoppen van watchdog wd_keepalive starten?"
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../templates:3001
|
|
||||||
-#| msgid ""
|
|
||||||
-#| "Please specify whether watchdog should be started as part of the boot "
|
|
||||||
-#| "process. This can be changed later by editing /etc/default/watchdog."
|
|
||||||
msgid ""
|
|
||||||
"Please specify whether stopping watchdog should start wd_keepalive to keep "
|
|
||||||
"on triggering the watchdog device. This can be changed later by editing /etc/"
|
|
||||||
diff --git a/debian/po/ru.po b/debian/po/ru.po
|
|
||||||
index 6b2208c..211e4d8 100644
|
|
||||||
--- a/debian/po/ru.po
|
|
||||||
+++ b/debian/po/ru.po
|
|
||||||
@@ -44,17 +44,14 @@ msgstr "Запускать wd_keepalive после остановки watchdog?"
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
#: ../templates:3001
|
|
||||||
-#| msgid ""
|
|
||||||
-#| "Please specify whether watchdog should be started as part of the boot "
|
|
||||||
-#| "process. This can be changed later by editing /etc/default/watchdog."
|
|
||||||
msgid ""
|
|
||||||
"Please specify whether stopping watchdog should start wd_keepalive to keep "
|
|
||||||
"on triggering the watchdog device. This can be changed later by editing /etc/"
|
|
||||||
"default/watchdog."
|
|
||||||
msgstr ""
|
|
||||||
"Укажите, нужно ли при остановке watchdog запускать wd_keepalive, чтобы "
|
|
||||||
-"оставить рабочим устройство watchdog. Это можно "
|
|
||||||
-"изменить позже отредактировав файл /etc/default/watchdog."
|
|
||||||
+"оставить рабочим устройство watchdog. Это можно изменить позже "
|
|
||||||
+"отредактировав файл /etc/default/watchdog."
|
|
||||||
|
|
||||||
#. Type: boolean
|
|
||||||
#. Description
|
|
||||||
@@ -91,4 +88,3 @@ msgstr ""
|
|
||||||
"Укажите модули, которые нужно загрузить перед запуском watchdog. Модуль "
|
|
||||||
"'softdog' обычно подходит для всех случаев. Введите 'none', если не хотите, "
|
|
||||||
"чтобы сценарий загружал модуль."
|
|
||||||
-
|
|
||||||
diff --git a/debian/rules b/debian/rules
|
|
||||||
index 2ca0797..0ece076 100755
|
|
||||||
--- a/debian/rules
|
|
||||||
+++ b/debian/rules
|
|
||||||
@@ -1,9 +1,10 @@
|
|
||||||
#!/usr/bin/make -f
|
|
||||||
|
|
||||||
SHELL = /bin/bash
|
|
||||||
-CFLAGS = $(shell dpkg-buildflags --get CFLAGS)
|
|
||||||
-CPPFLAGS = $(shell dpkg-buildflags --get CPPFLAGS)
|
|
||||||
-LDFLAGS = $(shell dpkg-buildflags --get LDFLAGS)
|
|
||||||
+export DEB_BUILD_MAINT_OPTIONS=hardening=+all
|
|
||||||
+CFLAGS = `dpkg-buildflags --get CFLAGS`
|
|
||||||
+CPPFLAGS = `dpkg-buildflags --get CPPFLAGS`
|
|
||||||
+LDFLAGS = `dpkg-buildflags --get LDFLAGS`
|
|
||||||
|
|
||||||
build: build-arch build-indep
|
|
||||||
build-arch: build-stamp
|
|
||||||
@@ -14,7 +15,7 @@ build-stamp: Makefile
|
|
||||||
touch build
|
|
||||||
|
|
||||||
Makefile:
|
|
||||||
- CFLAGS="${CFLAGS}" CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}" ./configure --prefix=/usr \
|
|
||||||
+ CFLAGS="${CFLAGS}" CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}" dh_auto_configure -- \
|
|
||||||
--with-configfile=/etc/watchdog.conf
|
|
||||||
|
|
||||||
clean: Makefile
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
|||||||
From d7f483a0bc6214258098894daabc2ce590ca41fc Mon Sep 17 00:00:00 2001
|
|
||||||
From: Paul Crawford <psc@sat.dundee.ac.uk>
|
|
||||||
Date: Mon, 31 Jul 2017 16:18:53 +0100
|
|
||||||
Subject: [PATCH 08/10] Fix automated CentOS 7 build
|
|
||||||
|
|
||||||
- Apply changes from Marcus Furlong to fix automated CentOS 7 build
|
|
||||||
|
|
||||||
- Update URLs to https and fix download address from sourceforge
|
|
||||||
---
|
|
||||||
redhat/watchdog.spec | 11 ++++++-----
|
|
||||||
1 file changed, 6 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/redhat/watchdog.spec b/redhat/watchdog.spec
|
|
||||||
index a13730a..85a0164 100644
|
|
||||||
--- a/redhat/watchdog.spec
|
|
||||||
+++ b/redhat/watchdog.spec
|
|
||||||
@@ -5,8 +5,8 @@ Release: 2%{?dist}
|
|
||||||
License: GPL+
|
|
||||||
Group: System Environment/Daemons
|
|
||||||
|
|
||||||
-URL: http://sourceforge.net/projects/watchdog/
|
|
||||||
-Source0: http://dl.sf.net/watchdog/watchdog-%{version}.tar.gz
|
|
||||||
+URL: https://sourceforge.net/projects/watchdog/
|
|
||||||
+Source0: https://downloads.sourceforge.net/project/watchdog/watchdog/%{version}/watchdog-%{version}.tar.gz
|
|
||||||
Source1: watchdog.init
|
|
||||||
Source2: README.watchdog.ipmi
|
|
||||||
Source3: README.Fedora
|
|
||||||
@@ -61,8 +61,6 @@ make %{?_smp_mflags}
|
|
||||||
rm -Rf ${RPM_BUILD_ROOT}
|
|
||||||
install -d -m0755 ${RPM_BUILD_ROOT}%{_sysconfdir}
|
|
||||||
make DESTDIR=${RPM_BUILD_ROOT} install
|
|
||||||
-install -Dp -m0644 %{name}.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/watchdog
|
|
||||||
-install -Dp -m0755 %{SOURCE1} ${RPM_BUILD_ROOT}%{_initrddir}/watchdog
|
|
||||||
|
|
||||||
%clean
|
|
||||||
rm -Rf ${RPM_BUILD_ROOT}
|
|
||||||
@@ -91,7 +89,6 @@ fi
|
|
||||||
%defattr(-, root, root, -)
|
|
||||||
%doc AUTHORS ChangeLog COPYING examples/ IAFA-PACKAGE NEWS README TODO README.watchdog.ipmi README.Fedora
|
|
||||||
%config(noreplace) %{_sysconfdir}/watchdog.conf
|
|
||||||
-%config(noreplace) %{_sysconfdir}/sysconfig/watchdog
|
|
||||||
%{_sysconfdir}/rc.d/init.d/watchdog
|
|
||||||
%{_sbindir}/watchdog
|
|
||||||
%{_sbindir}/wd_keepalive
|
|
||||||
@@ -101,6 +98,10 @@ fi
|
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
|
||||||
+* Tue Dec 13 2016 Paul Crawford <psc@sat.dundee.ac.uk> - 5.15
|
|
||||||
+- Apply changes from Marcus Furlong to fix automated CentOS 7 build
|
|
||||||
+- Update URLs to https and fix download address from sourceforge
|
|
||||||
+
|
|
||||||
* Thu Mar 5 2009 Richard W.M. Jones <rjones@redhat.com> - 5.5-2
|
|
||||||
- Use '-' in defattr line instead of explicit file mode.
|
|
||||||
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,101 +0,0 @@
|
|||||||
From 7310afccc11070fd4207a41881401d619dd113b1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Paul Crawford <psc@sat.dundee.ac.uk>
|
|
||||||
Date: Mon, 31 Jul 2017 16:36:10 +0100
|
|
||||||
Subject: [PATCH 09/10] Bugfix against watchdog configuration file corruption
|
|
||||||
|
|
||||||
- Apply the bugfix/patch against watchdog configuration file
|
|
||||||
corruption during runtime by Greg Vishnepolsky greg@armis.com
|
|
||||||
|
|
||||||
- Modify from Greg's patch to include the permission mode and to
|
|
||||||
declare the new fd variables immediately after the opening brace.
|
|
||||||
|
|
||||||
- Greg provided the follow description:
|
|
||||||
|
|
||||||
The following patch fixes a bug where writes/prints (out of a test
|
|
||||||
binary) that are intended for stdout/stderr may instead be written
|
|
||||||
to other files (like the watchdog configuration files).
|
|
||||||
|
|
||||||
The bug lies in the call to "freopen" on "stdout" when the actual
|
|
||||||
FD (1) for stdout had been previously closed by the daemon. Instead
|
|
||||||
this FD could have been re-used (for instance, for opening watchdog
|
|
||||||
configuration files). Thus any prints out of the daemon/test binaries
|
|
||||||
will be erroneously written into it.
|
|
||||||
---
|
|
||||||
src/test_binary.c | 13 +++++++++++--
|
|
||||||
src/watchdog.c | 13 +++++++++++--
|
|
||||||
2 files changed, 22 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/test_binary.c b/src/test_binary.c
|
|
||||||
index 2211f9e..a58c107 100644
|
|
||||||
--- a/src/test_binary.c
|
|
||||||
+++ b/src/test_binary.c
|
|
||||||
@@ -3,6 +3,7 @@
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
+#include <fcntl.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
@@ -258,16 +259,24 @@ int check_bin(char *tbinary, int timeout, int version)
|
|
||||||
|
|
||||||
child_pid = fork();
|
|
||||||
if (!child_pid) {
|
|
||||||
+ int test_stdout_fd, test_stderr_fd;
|
|
||||||
|
|
||||||
/* Don't want the stdout and stderr of our test program
|
|
||||||
* to cause trouble, so make them go to their respective files */
|
|
||||||
strcpy(filename_buf, logdir);
|
|
||||||
strcat(filename_buf, "/test-bin.stdout");
|
|
||||||
- if (!freopen(filename_buf, "a+", stdout))
|
|
||||||
+ test_stdout_fd = open(filename_buf, O_WRONLY|O_CREAT|O_APPEND, S_IWUSR|S_IRUSR|S_IRGRP);
|
|
||||||
+ if (test_stdout_fd == -1)
|
|
||||||
exit(errno);
|
|
||||||
+ if (dup2(test_stdout_fd, fileno(stdout)) == -1)
|
|
||||||
+ exit(errno);
|
|
||||||
+
|
|
||||||
strcpy(filename_buf, logdir);
|
|
||||||
strcat(filename_buf, "/test-bin.stderr");
|
|
||||||
- if (!freopen(filename_buf, "a+", stderr))
|
|
||||||
+ test_stderr_fd = open(filename_buf, O_WRONLY|O_CREAT|O_APPEND, S_IWUSR|S_IRUSR|S_IRGRP);
|
|
||||||
+ if (test_stderr_fd == -1)
|
|
||||||
+ exit(errno);
|
|
||||||
+ if (dup2(test_stderr_fd, fileno(stderr)) == -1)
|
|
||||||
exit(errno);
|
|
||||||
|
|
||||||
/* now start binary */
|
|
||||||
diff --git a/src/watchdog.c b/src/watchdog.c
|
|
||||||
index 486384a..a69dba4 100644
|
|
||||||
--- a/src/watchdog.c
|
|
||||||
+++ b/src/watchdog.c
|
|
||||||
@@ -84,16 +84,25 @@ static int repair(char *rbinary, int result, char *name, int version)
|
|
||||||
|
|
||||||
child_pid = fork();
|
|
||||||
if (!child_pid) {
|
|
||||||
+ int repair_stdout_fd, repair_stderr_fd;
|
|
||||||
+
|
|
||||||
/* Don't want the stdin and stdout of our repair program
|
|
||||||
* to cause trouble.
|
|
||||||
* So make stdout and stderr go to their respective files */
|
|
||||||
strcpy(filename_buf, logdir);
|
|
||||||
strcat(filename_buf, "/repair-bin.stdout");
|
|
||||||
- if (!freopen(filename_buf, "a+", stdout))
|
|
||||||
+ repair_stdout_fd = open(filename_buf, O_WRONLY|O_CREAT|O_APPEND, S_IWUSR|S_IRUSR|S_IRGRP);
|
|
||||||
+ if (repair_stdout_fd == -1)
|
|
||||||
exit(errno);
|
|
||||||
+ if (dup2(repair_stdout_fd, fileno(stdout)) == -1)
|
|
||||||
+ exit(errno);
|
|
||||||
+
|
|
||||||
strcpy(filename_buf, logdir);
|
|
||||||
strcat(filename_buf, "/repair-bin.stderr");
|
|
||||||
- if (!freopen(filename_buf, "a+", stderr))
|
|
||||||
+ repair_stderr_fd = open(filename_buf, O_WRONLY|O_CREAT|O_APPEND, S_IWUSR|S_IRUSR|S_IRGRP);
|
|
||||||
+ if (repair_stderr_fd == -1)
|
|
||||||
+ exit(errno);
|
|
||||||
+ if (dup2(repair_stderr_fd, fileno(stderr)) == -1)
|
|
||||||
exit(errno);
|
|
||||||
|
|
||||||
/* now start binary */
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,57 +0,0 @@
|
|||||||
From 93f5334052cf14ae1149aa0f0b3178137eec01dd Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
|
||||||
Date: Wed, 6 Feb 2019 13:25:47 +0000
|
|
||||||
Subject: [PATCH 10/10] Choose libtirpc or another RPC library for XDR headers
|
|
||||||
and library.
|
|
||||||
|
|
||||||
Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
|
|
||||||
---
|
|
||||||
configure.ac | 20 ++++++++++++++++++++
|
|
||||||
src/Makefile.am | 2 ++
|
|
||||||
2 files changed, 22 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
|
||||||
index f100829..4220411 100644
|
|
||||||
--- a/configure.ac
|
|
||||||
+++ b/configure.ac
|
|
||||||
@@ -156,4 +156,24 @@ AC_ARG_WITH(randomseed,
|
|
||||||
AC_MSG_RESULT("/var/run/random-seed")
|
|
||||||
])
|
|
||||||
|
|
||||||
+# Check for an RPC library, starting with libtirpc.
|
|
||||||
+PKG_CHECK_MODULES([RPC], [libtirpc], [], [
|
|
||||||
+ # If we don't have libtirpc, then we must have <rpc/rpc.h> and
|
|
||||||
+ # some library to link to in libdir.
|
|
||||||
+ RPC_CFLAGS=""
|
|
||||||
+ AC_CHECK_HEADER([rpc/rpc.h],[],[
|
|
||||||
+ AC_MSG_ERROR([XDR header files are required])
|
|
||||||
+ ],
|
|
||||||
+ [#include <rpc/types.h>])
|
|
||||||
+
|
|
||||||
+ old_LIBS="$LIBS"
|
|
||||||
+ LIBS=""
|
|
||||||
+ AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
|
|
||||||
+ RPC_LIBS="$LIBS"
|
|
||||||
+ LIBS="$old_LIBS"
|
|
||||||
+
|
|
||||||
+ AC_SUBST([RPC_CFLAGS])
|
|
||||||
+ AC_SUBST([RPC_LIBS])
|
|
||||||
+])
|
|
||||||
+
|
|
||||||
AC_OUTPUT([Makefile src/Makefile])
|
|
||||||
diff --git a/src/Makefile.am b/src/Makefile.am
|
|
||||||
index 4ecfd97..7f63be5 100644
|
|
||||||
--- a/src/Makefile.am
|
|
||||||
+++ b/src/Makefile.am
|
|
||||||
@@ -6,6 +6,8 @@ watchdog_SOURCES = file_stat.c file_table.c fstab.c iface.c ifdown.c keep_alive.
|
|
||||||
temp.c test_binary.c umount.c version.c watchdog.c \
|
|
||||||
logmessage.c xmalloc.c heartbeat.c lock_mem.c daemon-pid.c configfile.c \
|
|
||||||
errorcodes.c read-conf.c sigterm.c
|
|
||||||
+watchdog_CFLAGS = $(RPC_CFLAGS)
|
|
||||||
+watchdog_LDADD = $(RPC_LIBS)
|
|
||||||
|
|
||||||
wd_keepalive_SOURCES = wd_keepalive.c logmessage.c lock_mem.c daemon-pid.c xmalloc.c \
|
|
||||||
configfile.c keep_alive.c read-conf.c sigterm.c
|
|
||||||
--
|
|
||||||
2.20.1
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
|||||||
diff -ur watchdog-5.15.old/watchdog.8 watchdog-5.15/watchdog.8
|
diff --git a/watchdog.8 b/watchdog.8
|
||||||
--- watchdog-5.15.old/watchdog.8 2016-02-26 12:05:00.000000000 +0000
|
index 9b7c6e7..052b1e1 100644
|
||||||
+++ watchdog-5.15/watchdog.8 2018-02-13 08:54:00.860681339 +0000
|
--- a/watchdog.8
|
||||||
@@ -215,6 +215,7 @@
|
+++ b/watchdog.8
|
||||||
|
@@ -216,6 +216,7 @@ by
|
||||||
.BR watchdog .
|
.BR watchdog .
|
||||||
So you can for instance restart the server from your
|
So you can for instance restart the server from your
|
||||||
.IR repair-binary .
|
.IR repair-binary .
|
||||||
@ -9,7 +10,7 @@ diff -ur watchdog-5.15.old/watchdog.8 watchdog-5.15/watchdog.8
|
|||||||
.PP
|
.PP
|
||||||
.B watchdog
|
.B watchdog
|
||||||
will try periodically to fork itself to see whether the process
|
will try periodically to fork itself to see whether the process
|
||||||
@@ -241,6 +242,8 @@
|
@@ -242,6 +243,8 @@ a given interface for traffic. If no traffic arrives the network is
|
||||||
considered unreachable causing a soft reboot or action from the
|
considered unreachable causing a soft reboot or action from the
|
||||||
repair binary.
|
repair binary.
|
||||||
.PP
|
.PP
|
||||||
@ -18,7 +19,7 @@ diff -ur watchdog-5.15.old/watchdog.8 watchdog-5.15/watchdog.8
|
|||||||
.B watchdog
|
.B watchdog
|
||||||
can run an external command for user-defined tests. A return code not equal 0
|
can run an external command for user-defined tests. A return code not equal 0
|
||||||
means an error occurred and watchdog should react. If the external command is
|
means an error occurred and watchdog should react. If the external command is
|
||||||
@@ -350,6 +353,9 @@
|
@@ -348,6 +351,9 @@ Child process did not return in time.
|
||||||
246
|
246
|
||||||
Free for personal watchdog-specific use (was \-10 as an unsigned 8\-bit
|
Free for personal watchdog-specific use (was \-10 as an unsigned 8\-bit
|
||||||
number).
|
number).
|
||||||
@ -28,7 +29,7 @@ diff -ur watchdog-5.15.old/watchdog.8 watchdog-5.15/watchdog.8
|
|||||||
.TP
|
.TP
|
||||||
245
|
245
|
||||||
Reserved for an unknown result, for example a slow background test that is
|
Reserved for an unknown result, for example a slow background test that is
|
||||||
@@ -377,6 +383,9 @@
|
@@ -375,6 +381,9 @@ repair-maximum
|
||||||
controls the number of successive repair attempts that report 0 (i.e. success) but
|
controls the number of successive repair attempts that report 0 (i.e. success) but
|
||||||
fail to clear the tested fault. If this is exceeded then a reboot takes place. If set
|
fail to clear the tested fault. If this is exceeded then a reboot takes place. If set
|
||||||
to zero then a reboot can always be blocked by the repair program reporting success.
|
to zero then a reboot can always be blocked by the repair program reporting success.
|
||||||
@ -38,7 +39,7 @@ diff -ur watchdog-5.15.old/watchdog.8 watchdog-5.15/watchdog.8
|
|||||||
.SH "TEST DIRECTORY"
|
.SH "TEST DIRECTORY"
|
||||||
Executables placed in the test directory are discovered by watchdog on
|
Executables placed in the test directory are discovered by watchdog on
|
||||||
startup and are automatically executed. They are bounded time-wise by
|
startup and are automatically executed. They are bounded time-wise by
|
||||||
@@ -415,6 +424,27 @@
|
@@ -413,6 +422,27 @@ As for the repair binary, the configuration parameter
|
||||||
repair-maximum
|
repair-maximum
|
||||||
also controls the number of successive repair attempts that report success
|
also controls the number of successive repair attempts that report success
|
||||||
(return 0) but fail to clear the fault.
|
(return 0) but fail to clear the fault.
|
||||||
@ -66,27 +67,30 @@ diff -ur watchdog-5.15.old/watchdog.8 watchdog-5.15/watchdog.8
|
|||||||
.SH BUGS
|
.SH BUGS
|
||||||
None known so far.
|
None known so far.
|
||||||
.SH AUTHORS
|
.SH AUTHORS
|
||||||
@@ -433,4 +463,4 @@
|
@@ -431,4 +461,4 @@ The watchdog device.
|
||||||
The pid file of the running
|
The pid file of the running
|
||||||
.BR watchdog .
|
.BR watchdog .
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
-.BR watchdog.conf (5)
|
-.BR watchdog.conf (5)
|
||||||
+.BR watchdog.conf (5), systemd.unit (5)
|
+.BR watchdog.conf (5), systemd.unit (5)
|
||||||
diff -ur watchdog-5.15.old/watchdog.conf watchdog-5.15/watchdog.conf
|
diff --git a/watchdog.conf b/watchdog.conf
|
||||||
--- watchdog-5.15.old/watchdog.conf 2016-02-26 12:05:00.000000000 +0000
|
index 207da3e..7dd3cb3 100644
|
||||||
+++ watchdog-5.15/watchdog.conf 2018-02-13 08:52:18.899721271 +0000
|
--- a/watchdog.conf
|
||||||
@@ -16,6 +16,8 @@
|
+++ b/watchdog.conf
|
||||||
#min-memory = 1
|
@@ -75,7 +75,9 @@ priority = 1
|
||||||
#allocatable-memory = 1
|
# If you have a custom binary/script to handle errors then uncomment
|
||||||
|
# this line and provide the path. For 'v1' test binary files they also
|
||||||
|
# handle error cases.
|
||||||
|
-
|
||||||
+# With enforcing SELinux policy please use the /usr/libexec/watchdog/scripts/
|
+# With enforcing SELinux policy please use the /usr/libexec/watchdog/scripts/
|
||||||
|
+
|
||||||
+# or /etc/watchdog.d/ for your test-binary and repair-binary configuration.
|
+# or /etc/watchdog.d/ for your test-binary and repair-binary configuration.
|
||||||
#repair-binary = /usr/sbin/repair
|
#repair-binary = /usr/sbin/repair
|
||||||
#repair-timeout = 60
|
#repair-timeout = 60
|
||||||
#test-binary =
|
|
||||||
@@ -45,5 +47,12 @@
|
@@ -175,6 +177,13 @@ priority = 1
|
||||||
realtime = yes
|
#temperature-sensor =
|
||||||
priority = 1
|
#max-temperature = 90
|
||||||
|
|
||||||
+# When using custom service pid check with custom service
|
+# When using custom service pid check with custom service
|
||||||
+# systemd unit file please be aware the "Requires="
|
+# systemd unit file please be aware the "Requires="
|
||||||
@ -95,20 +99,22 @@ diff -ur watchdog-5.15.old/watchdog.conf watchdog-5.15/watchdog.conf
|
|||||||
+# in the custom service unit file may be the desired operation instead.
|
+# in the custom service unit file may be the desired operation instead.
|
||||||
+# See man 5 systemd.unit for more details.
|
+# See man 5 systemd.unit for more details.
|
||||||
+#
|
+#
|
||||||
# Check if rsyslogd is still running by enabling the following line
|
# Check for a running process/daemon by its PID file. For example,
|
||||||
#pidfile = /var/run/rsyslogd.pid
|
# check if rsyslogd is still running by enabling the following line:
|
||||||
diff -ur watchdog-5.15.old/watchdog.conf.5 watchdog-5.15/watchdog.conf.5
|
|
||||||
--- watchdog-5.15.old/watchdog.conf.5 2016-02-26 12:05:00.000000000 +0000
|
diff --git a/watchdog.conf.5 b/watchdog.conf.5
|
||||||
+++ watchdog-5.15/watchdog.conf.5 2018-02-13 08:52:18.898721271 +0000
|
index edf7c8b..72c3bc2 100644
|
||||||
@@ -105,6 +105,7 @@
|
--- a/watchdog.conf.5
|
||||||
pidfile = <pidfilename>
|
+++ b/watchdog.conf.5
|
||||||
Set pidfile name for server test mode.
|
@@ -130,6 +130,7 @@ pidfile = <pidfilename>
|
||||||
This option can be given as often as you like to check several servers.
|
Set pidfile name for daemon test mode.
|
||||||
|
This option can be given as often as you like to check several daemons, assuming
|
||||||
|
they write their post-forking PID to the specified files.
|
||||||
+See the Systemd section in watchdog (8) for more information.
|
+See the Systemd section in watchdog (8) for more information.
|
||||||
.TP
|
.TP
|
||||||
ping = <ip-addr>
|
ping = <ip-addr>
|
||||||
Set IPv4 address for ping mode.
|
Set IPv4 address for ping mode.
|
||||||
@@ -119,6 +120,8 @@
|
@@ -147,6 +148,8 @@ aliased IP interfaces.
|
||||||
.TP
|
.TP
|
||||||
test-binary = <testbin>
|
test-binary = <testbin>
|
||||||
Execute the given binary to do some user defined tests.
|
Execute the given binary to do some user defined tests.
|
||||||
@ -117,7 +123,7 @@ diff -ur watchdog-5.15.old/watchdog.conf.5 watchdog-5.15/watchdog.conf.5
|
|||||||
.TP
|
.TP
|
||||||
test-timeout = <timeout in seconds>
|
test-timeout = <timeout in seconds>
|
||||||
User defined tests may only run for <timeout> seconds. Set to 0 for unlimited.
|
User defined tests may only run for <timeout> seconds. Set to 0 for unlimited.
|
||||||
@@ -126,6 +129,8 @@
|
@@ -154,6 +157,8 @@ User defined tests may only run for <timeout> seconds. Set to 0 for unlimited.
|
||||||
repair-binary = <repbin>
|
repair-binary = <repbin>
|
||||||
Execute the given binary in case of a problem instead of shutting down the
|
Execute the given binary in case of a problem instead of shutting down the
|
||||||
system.
|
system.
|
||||||
@ -126,7 +132,7 @@ diff -ur watchdog-5.15.old/watchdog.conf.5 watchdog-5.15/watchdog.conf.5
|
|||||||
.TP
|
.TP
|
||||||
repair-timeout = <timeout in seconds>
|
repair-timeout = <timeout in seconds>
|
||||||
repair command may only run for <timeout> seconds. Set to 0 for 'unlimited', but
|
repair command may only run for <timeout> seconds. Set to 0 for 'unlimited', but
|
||||||
@@ -156,6 +161,7 @@
|
@@ -188,6 +193,7 @@ Set the schedule priority for realtime mode passed to sched_setscheduler().
|
||||||
.TP
|
.TP
|
||||||
test-directory = <test directory>
|
test-directory = <test directory>
|
||||||
Set the directory to run user test/repair scripts. Default is '/etc/watchdog.d'
|
Set the directory to run user test/repair scripts. Default is '/etc/watchdog.d'
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (watchdog-5.15.tar.gz) = a675cfadf3296d583b9163193297038fb19459daf7c6681289392d613e775e75b7afd42a3e01b136a955f25b2f45818033b56e10de9050075d7dc015535a6e75
|
SHA512 (watchdog-5.16.tar.gz) = 1c9c921570ec7ddc3e4ff88b2029f1c3865277e547fb8970575df4b61fdf1f06f443f49ad09f11c29d913ca7d6ab05c5b19ec049ac218a8bcebd20b1bf5f0bbd
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
Summary: Software and/or Hardware watchdog daemon
|
Summary: Software and/or Hardware watchdog daemon
|
||||||
Name: watchdog
|
Name: watchdog
|
||||||
Version: 5.15
|
Version: 5.16
|
||||||
Release: 11%{?dist}
|
Release: 1%{?dist}
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
|
|
||||||
URL: http://sourceforge.net/projects/watchdog/
|
URL: http://sourceforge.net/projects/watchdog/
|
||||||
@ -11,21 +11,11 @@ Source3: README.Fedora
|
|||||||
Source4: watchdog.service
|
Source4: watchdog.service
|
||||||
Source5: watchdog-ping.service
|
Source5: watchdog-ping.service
|
||||||
|
|
||||||
# Upstream patches since 5.15.
|
|
||||||
Patch1: 0001-Include-linux-param.h-for-EXEC_PAGESIZE-definition.patch
|
|
||||||
Patch2: 0002-Generalize-and-make-watchdog-refresh-settimeout-work.patch
|
|
||||||
Patch3: 0003-Ignore-build-products-in-GIT.patch
|
|
||||||
Patch4: 0004-Compile-with-musl-when-nfs-is-disabled.patch
|
|
||||||
Patch5: 0005-Rename-READ_ENUM-to-READ_YESNO.patch
|
|
||||||
Patch6: 0006-Make-IT87-fix-up-automatic-by-default.patch
|
|
||||||
Patch7: 0007-Synced-Debian-files-with-5.15-2.patch
|
|
||||||
Patch8: 0008-Fix-automated-CentOS-7-build.patch
|
|
||||||
Patch9: 0009-Bugfix-against-watchdog-configuration-file-corruptio.patch
|
|
||||||
# Fixes building on glibc without RPC. Sent upstream 2019-02-06.
|
# Fixes building on glibc without RPC. Sent upstream 2019-02-06.
|
||||||
Patch10: 0010-Choose-libtirpc-or-another-RPC-library-for-XDR-heade.patch
|
Patch1: 0001-Choose-libtirpc-or-another-RPC-library-for-XDR-heade.patch
|
||||||
|
|
||||||
# Non-upstream patch to document SELinux support.
|
# Non-upstream patch to document SELinux support.
|
||||||
Patch99: 0004-watchdog-5.13-rhseldoc.patch
|
Patch99: 0099-watchdog-5.16-rhseldoc.patch
|
||||||
|
|
||||||
BuildRequires: make
|
BuildRequires: make
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
@ -59,15 +49,6 @@ expiration) initiated by the BMC.
|
|||||||
%prep
|
%prep
|
||||||
%setup -q -n %{name}-%{version}
|
%setup -q -n %{name}-%{version}
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
%patch2 -p1
|
|
||||||
%patch3 -p1
|
|
||||||
%patch4 -p1
|
|
||||||
%patch5 -p1
|
|
||||||
%patch6 -p1
|
|
||||||
%patch7 -p1
|
|
||||||
%patch8 -p1
|
|
||||||
%patch9 -p1
|
|
||||||
%patch10 -p1
|
|
||||||
%patch99 -p1 -b .rhseldoc
|
%patch99 -p1 -b .rhseldoc
|
||||||
autoreconf -i
|
autoreconf -i
|
||||||
|
|
||||||
@ -143,6 +124,9 @@ rm %{name}.sysconfig
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Aug 10 2021 Josef Ridky <jridky@redhat.com> - 5.16-1
|
||||||
|
- New upstream release 5.16
|
||||||
|
|
||||||
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 5.15-11
|
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 5.15-11
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user