From 0d7bab226067a44a9f1b978924e8201a3fa60764 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 24 Oct 2011 23:14:47 +0000 Subject: Mon Oct 24 23:14:47 UTC 2011 --- extra/watchdog/PKGBUILD | 27 ++++--- .../watchdog/watchdog-5.9-use-oom_score_adj.patch | 91 ++++++++++++++++++++++ 2 files changed, 106 insertions(+), 12 deletions(-) create mode 100644 extra/watchdog/watchdog-5.9-use-oom_score_adj.patch (limited to 'extra/watchdog') diff --git a/extra/watchdog/PKGBUILD b/extra/watchdog/PKGBUILD index 70ec8a57b..cb4c36d88 100644 --- a/extra/watchdog/PKGBUILD +++ b/extra/watchdog/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 111485 2011-02-27 10:22:27Z thomas $ +# $Id: PKGBUILD 141081 2011-10-23 14:16:24Z thomas $ # Maintainer: Thomas Bächler pkgname=watchdog pkgver=5.9 -pkgrel=1 +pkgrel=2 pkgdesc="Watchdog daemon" arch=(i686 x86_64) url="http://sourceforge.net/projects/watchdog" @@ -14,14 +14,17 @@ backup=(etc/watchdog.conf etc/conf.d/wd_keepalive) source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz watchdog.sh - watchdog.cf) + watchdog.cf + watchdog-5.9-use-oom_score_adj.patch) md5sums=('d7cae3c9829f5d9a680764f314234867' '854451f554718b55186599faaa8d85f6' - '01c1e2e13f515131180b4ebe9b8b7cc3') + '01c1e2e13f515131180b4ebe9b8b7cc3' + '9a1ab454e42a7f2969ef6bf2da8a4543') build() { - cd "${srcdir}/${pkgname}-${pkgver}" + cd "${srcdir}"/${pkgname}-${pkgver} + patch -p1 -i "${srcdir}"/watchdog-5.9-use-oom_score_adj.patch ./configure \ --prefix=/usr \ --mandir=/usr/share/man \ @@ -31,14 +34,14 @@ build() { } package() { - cd "${srcdir}/${pkgname}-${pkgver}" - make install DESTDIR=${pkgdir} + cd "${srcdir}"/${pkgname}-${pkgver} + make install DESTDIR="${pkgdir}" for fil in watchdog wd_keepalive ; do - install -D -m755 ${srcdir}/watchdog.sh ${pkgdir}/etc/rc.d/${fil} - install -D -m644 ${srcdir}/watchdog.cf ${pkgdir}/etc/conf.d/${fil} + install -D -m755 "${srcdir}"/watchdog.sh "${pkgdir}"/etc/rc.d/${fil} + install -D -m644 "${srcdir}"/watchdog.cf "${pkgdir}"/etc/conf.d/${fil} done - sed -i 's/watchdog/wd_keepalive/g' ${pkgdir}/etc/rc.d/wd_keepalive - sed -i 's/watchdog/wd_keepalive/g' ${pkgdir}/etc/conf.d/wd_keepalive - sed -i 's/Watchdog/Simple Watchdog/' ${pkgdir}/etc/rc.d/wd_keepalive + sed -i 's/watchdog/wd_keepalive/g' "${pkgdir}"/etc/rc.d/wd_keepalive + sed -i 's/watchdog/wd_keepalive/g' "${pkgdir}"/etc/conf.d/wd_keepalive + sed -i 's/Watchdog/Simple Watchdog/' "${pkgdir}"/etc/rc.d/wd_keepalive } diff --git a/extra/watchdog/watchdog-5.9-use-oom_score_adj.patch b/extra/watchdog/watchdog-5.9-use-oom_score_adj.patch new file mode 100644 index 000000000..90508d777 --- /dev/null +++ b/extra/watchdog/watchdog-5.9-use-oom_score_adj.patch @@ -0,0 +1,91 @@ +diff -ur watchdog-5.9.orig/src/watchdog.c watchdog-5.9/src/watchdog.c +--- watchdog-5.9.orig/src/watchdog.c 2010-06-16 15:45:51.000000000 +0200 ++++ watchdog-5.9/src/watchdog.c 2011-10-23 15:51:58.631689778 +0200 +@@ -636,7 +636,7 @@ + + /* allocate some memory to store a filename, this is needed later on even + * if the system runs out of memory */ +- filename_buf = (char*)malloc(max(strlen(logdir) + sizeof("/repair-bin.stdout") + 1, strlen("/proc//oom_adj") + sizeof(int) * CHAR_BIT * 10 / 3 + 1)); ++ filename_buf = (char*)malloc(max(strlen(logdir) + sizeof("/repair-bin.stdout") + 1, strlen("/proc//oom_score_adj") + sizeof(int) * CHAR_BIT * 10 / 3 + 1)); + if (!filename_buf) { + error(progname); + exit(1); +@@ -886,11 +886,19 @@ + #endif + + /* tell oom killer to not kill this process */ +- sprintf(filename_buf, "/proc/%d/oom_adj", pid); ++ sprintf(filename_buf, "/proc/%d/oom_score_adj", pid); + fp = fopen(filename_buf, "w"); + if (fp != NULL) { +- fprintf(fp, "-17\n"); +- (void) fclose(fp); ++ fprintf(fp, "-1000\n"); ++ (void) fclose(fp); ++ } ++ else { ++ sprintf(filename_buf, "/proc/%d/oom_adj", pid); ++ fp = fopen(filename_buf, "w"); ++ if (fp != NULL) { ++ fprintf(fp, "-17\n"); ++ (void) fclose(fp); ++ } + } + + /* main loop: update after seconds */ +diff -ur watchdog-5.9.orig/src/wd_keepalive.c watchdog-5.9/src/wd_keepalive.c +--- watchdog-5.9.orig/src/wd_keepalive.c 2010-06-16 15:45:49.000000000 +0200 ++++ watchdog-5.9/src/wd_keepalive.c 2011-10-23 15:50:43.061563281 +0200 +@@ -212,7 +212,7 @@ + FILE *fp; + char *configfile = CONFIG_FILENAME; + char *filename_buf; +- pid_t child_pid; ++ pid_t pid, child_pid; + int count = 0; + int c; + /* allow all options watchdog understands too */ +@@ -284,7 +284,7 @@ + + /* allocate some memory to store a filename, this is needed later on even + * if the system runs out of memory */ +- filename_buf = (char*)malloc(strlen("/proc//oom_adj") + sizeof(int) * CHAR_BIT * 10 / 3 + 1); ++ filename_buf = (char*)malloc(strlen("/proc//oom_score_adj") + sizeof(int) * CHAR_BIT * 10 / 3 + 1); + if (!filename_buf) { + error(progname); + exit(1); +@@ -363,9 +363,10 @@ + #endif + + /* tuck my process id away */ ++ pid = getpid(); + fp = fopen(KA_PIDFILE, "w"); + if ( fp != NULL ) { +- fprintf(fp, "%d\n", getpid()); ++ fprintf(fp, "%d\n", pid); + (void) fclose(fp); + } + +@@ -403,12 +404,20 @@ + #endif + + /* tell oom killer to not kill this process */ +- sprintf(filename_buf, "/proc/%d/oom_adj", getpid()); ++ sprintf(filename_buf, "/proc/%d/oom_score_adj", pid); + fp = fopen(filename_buf, "w"); + if (fp != NULL) { +- fprintf(fp, "-17\n"); ++ fprintf(fp, "-1000\n"); + (void) fclose(fp); + } ++ else { ++ sprintf(filename_buf, "/proc/%d/oom_adj", pid); ++ fp = fopen(filename_buf, "w"); ++ if (fp != NULL) { ++ fprintf(fp, "-17\n"); ++ (void) fclose(fp); ++ } ++ } + + /* main loop: update after seconds */ + while ( _running ) { -- cgit v1.2.3-54-g00ecf