[packages/cachefilesd] - rel 2; cpu eating fix
arekm
arekm at pld-linux.org
Fri Mar 21 18:48:43 CET 2014
commit 72332ee54d3cd5aa1c7451eed03eeb8e66b19b8f
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Fri Mar 21 18:48:41 2014 +0100
- rel 2; cpu eating fix
cachefilesd-cpueating.patch | 51 +++++++++++++++++++++++++++++++++++++++++++++
cachefilesd.spec | 4 +++-
2 files changed, 54 insertions(+), 1 deletion(-)
---
diff --git a/cachefilesd.spec b/cachefilesd.spec
index 999f1ae..e6bf53f 100644
--- a/cachefilesd.spec
+++ b/cachefilesd.spec
@@ -1,12 +1,13 @@
Summary: CacheFiles user-space management daemon
Name: cachefilesd
Version: 0.10.5
-Release: 1
+Release: 2
License: GPL v2
Group: Daemons
URL: http://people.redhat.com/~dhowells/fscache/
Source0: http://people.redhat.com/dhowells/fscache/%{name}-%{version}.tar.bz2
# Source0-md5: 9e85dd0ace346ff47e188ded8c05ab3b
+Patch0: %{name}-cpueating.patch
Requires(post,preun): /sbin/chkconfig
Requires(post,preun,postun): systemd-units >= 38
Requires: systemd-units >= 38
@@ -19,6 +20,7 @@ persistent caching to the local disk.
%prep
%setup -q
+%patch0 -p1
%build
%{__make} CFLAGS="%{rpmcppflags} %{rpmcflags}" \
diff --git a/cachefilesd-cpueating.patch b/cachefilesd-cpueating.patch
new file mode 100644
index 0000000..940f3d5
--- /dev/null
+++ b/cachefilesd-cpueating.patch
@@ -0,0 +1,51 @@
+; https://www.redhat.com/archives/linux-cachefs/2014-February/msg00001.html
+diff -urN cachefilesd-0.10.5.org/cachefilesd.c cachefilesd-0.10.5/cachefilesd.c
+--- cachefilesd-0.10.5.org/cachefilesd.c 2011-12-06 14:38:00.000000000 +0100
++++ cachefilesd-0.10.5/cachefilesd.c 2014-03-21 18:47:45.739197236 +0100
+@@ -98,6 +98,7 @@
+ static int oldest_build = -1;
+ static int oldest_ready = -1;
+ static int ncullable = 0;
++static int cull_delayed = 0;
+
+
+ static const char *configfile = "/etc/cachefilesd.conf";
+@@ -244,6 +245,7 @@
+ static void sigalrm(int sig)
+ {
+ jumpstart_scan = 1;
++ cull_delayed = 0;
+ }
+
+ /*****************************************************************************/
+@@ -605,11 +607,11 @@
+
+ /* sleep without racing on reap and cull with the signal
+ * handlers */
+- if (!scan && !reap && !cull) {
++ if (!scan && !reap && !(cull && !cull_delayed)) {
+ if (sigprocmask(SIG_BLOCK, &sigs, &osigs) < 0)
+ oserror("Unable to block signals");
+
+- if (!reap && !cull) {
++ if (!reap && !stop && !jumpstart_scan) {
+ if (ppoll(pollfds, 1, NULL, &osigs) < 0 &&
+ errno != EINTR)
+ oserror("Unable to suspend process");
+@@ -636,7 +638,7 @@
+ if (cull) {
+ if (oldest_ready >= 0)
+ cull_objects();
+- else if (oldest_build < 0)
++ else if (oldest_build < 0 && !cull_delayed)
+ jumpstart_scan = 1;
+ }
+
+@@ -1351,6 +1353,7 @@
+
+ /* if nothing there, scan again in a short while */
+ if (oldest_build < 0) {
++ cull_delayed = 1;
+ signal(SIGALRM, sigalrm);
+ alarm(30);
+ return;
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/cachefilesd.git/commitdiff/72332ee54d3cd5aa1c7451eed03eeb8e66b19b8f
More information about the pld-cvs-commit
mailing list