--- cachefilesd-0.10.5.orig/Makefile +++ cachefilesd-0.10.5/Makefile @@ -39,7 +39,7 @@ all: cachefilesd cachefilesd: cachefilesd.c Makefile - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< + $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $< ############################################################################### # --- cachefilesd-0.10.5.orig/cachefilesd.c +++ cachefilesd-0.10.5/cachefilesd.c @@ -98,7 +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"; static const char *devfile = "/dev/cachefiles"; @@ -244,6 +244,7 @@ static void sigalrm(int sig) { jumpstart_scan = 1; + cull_delayed = 0; } /*****************************************************************************/ @@ -605,11 +606,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 +637,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 +1352,7 @@ /* if nothing there, scan again in a short while */ if (oldest_build < 0) { + cull_delayed = 1; signal(SIGALRM, sigalrm); alarm(30); return; --- cachefilesd-0.10.5.orig/debian/cachefilesd.default +++ cachefilesd-0.10.5/debian/cachefilesd.default @@ -0,0 +1,10 @@ +# Defaults for cachefilesd initscript +# sourced by /etc/init.d/cachefilesd + +# You must uncomment the run=yes line below for cachefilesd to start. +# Before doing so, please read /usr/share/doc/cachefilesd/howto.txt.gz as +# extended user attributes need to be enabled on the cache filesystem. +#RUN=yes + +# Additional options that are passed to the Daemon. +DAEMON_OPTS="" --- cachefilesd-0.10.5.orig/debian/changelog +++ cachefilesd-0.10.5/debian/changelog @@ -0,0 +1,39 @@ +cachefilesd (0.10.5-1ubuntu0.16.04.1) xenial; urgency=medium + + [ Daniel Axtens ] + * cachefilesd can spin when disk space is short (LP: #1810372) + + -- Dan Streetman Fri, 11 Jan 2019 09:22:23 -0500 + +cachefilesd (0.10.5-1) unstable; urgency=low + + * New upstream version + * Update copyright + * Add CPPFLAGS to Makefile to support hardening + + -- Shane Wegner Sun, 05 May 2013 21:54:43 +0100 + +cachefilesd (0.9-3.1) unstable; urgency=medium + + * Non-maintainer upload. + * Add missing headers to fix FTBFS (Closes: #625131). + + -- Luk Claes Sun, 22 May 2011 17:08:35 +0200 + +cachefilesd (0.9-3) unstable; urgency=low + + * Added logcheck ignore file. (Closes: 534581) + + -- Shane Wegner Sun, 26 Jul 2009 13:50:51 -0700 + +cachefilesd (0.9-2) unstable; urgency=low + + * Fix short description, not sure how that happend (Closes: #529006) + + -- Shane Wegner Sun, 17 May 2009 12:32:51 -0700 + +cachefilesd (0.9-1) unstable; urgency=low + + * Initial release (Closes: #524517) + + -- Shane Wegner Fri, 17 Apr 2009 12:01:12 -0700 --- cachefilesd-0.10.5.orig/debian/compat +++ cachefilesd-0.10.5/debian/compat @@ -0,0 +1 @@ +7 --- cachefilesd-0.10.5.orig/debian/control +++ cachefilesd-0.10.5/debian/control @@ -0,0 +1,17 @@ +Source: cachefilesd +Section: misc +Priority: optional +Maintainer: Shane Wegner +Build-Depends: cdbs, debhelper (>= 7) +Standards-Version: 3.9.3.1 + +Package: cachefilesd +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: support fscache on already mounted filesystem + FSCache is a generic caching manager in the Linux kernel which can be used + by network and other filesystems to cache data locally. + . + CacheFiles is an FSCache backend that's meant to use as a cache a directory on + an already mounted filesystem of a local type (such as Ext3). This package + installs the userspace support required by the cachefiles backend. --- cachefilesd-0.10.5.orig/debian/copyright +++ cachefilesd-0.10.5/debian/copyright @@ -0,0 +1,30 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: cachefilesd +Upstream-Contact: David Howells +Source: http://people.redhat.com/~dhowells/fscache/ + +files: * +Copyright: 2006-2007 Red Hat, Inc. All Rights Reserved. +License: GPL-2+ + +files: debian/* +copyright: 2009-2013 Shane Wegner +License: GPL-2+ + +License: GPL-2+ + This file is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. +Comment: + On Debian systems the 'GNU General Public License' version 2 is located + in '/usr/share/common-licenses/GPL-2'. + . + You should have received a copy of the 'GNU General Public License' + along with this program. If not, see . + --- cachefilesd-0.10.5.orig/debian/dirs +++ cachefilesd-0.10.5/debian/dirs @@ -0,0 +1 @@ +var/cache/fscache --- cachefilesd-0.10.5.orig/debian/docs +++ cachefilesd-0.10.5/debian/docs @@ -0,0 +1,2 @@ +README +howto.txt --- cachefilesd-0.10.5.orig/debian/init.d +++ cachefilesd-0.10.5/debian/init.d @@ -0,0 +1,248 @@ +#!/bin/sh +# +# Copyright (c) 2007 Javier Fernandez-Sanguino +# +# This is free software; you may redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2, +# or (at your option) any later version. +# +# This is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License with +# the Debian operating system, in /usr/share/common-licenses/GPL; if +# not, write to the Free Software Foundation, Inc., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA +# +### BEGIN INIT INFO +# Provides: cachefilesd +# Required-Start: $local_fs $remote_fs +# Required-Stop: $remote_fs +# Should-Start: +# Should-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: CacheFiles daemon +# Description: CacheFiles daemon +# <...> +# <...> +### END INIT INFO + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin + +DAEMON=/sbin/cachefilesd +NAME=cachefilesd +DESC="FilesCache daemon" + +PIDFILE=/var/run/$NAME.pid +MODPROBE=/sbin/modprobe + +test -x $DAEMON || exit 0 + +. /lib/lsb/init-functions + +# Default options, these can be overriden by the information +# at /etc/default/$NAME +DAEMON_OPTS="" + +DIETIME=10 # Time to wait for the server to die, in seconds + # If this value is set too low you might not + # let some servers to die gracefully and + # 'restart' will not work + +#STARTTIME=2 # Time to wait for the server to start, in seconds + # If this value is set each time the server is + # started (on start or restart) the script will + # stall to try to determine if it is running + # If it is not set and the server takes time + # to setup a pid file the log message might + # be a false positive (says it did not start + # when it actually did) + +# Include defaults if available +if [ -f /etc/default/$NAME ] ; then + . /etc/default/$NAME +fi + +if [ "x$RUN" != "xyes" ] ; then + log_failure_msg "$NAME disabled, please set RUN=yes in /etc/default/$NAME" + exit 0 +fi + +set -e + +running_pid() { +# Check if a given process pid's cmdline matches a given name + pid=$1 + name=$2 + [ -z "$pid" ] && return 1 + [ ! -d /proc/$pid ] && return 1 + cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1` + # Is this the expected server + [ "$cmd" != "$name" ] && return 1 + return 0 +} + +running() { +# Check if the process is running looking at /proc +# (works for all users) + + # No pidfile, probably no daemon present + [ ! -f "$PIDFILE" ] && return 1 + pid=`cat $PIDFILE` + running_pid $pid $DAEMON || return 1 + return 0 +} + +start_server() { +# Load the cachefiles module if needed + [ -x "$MODPROBE" ] && { + if ! /sbin/lsmod | grep cachefiles > /dev/null ; then + $MODPROBE cachefiles || { +echo Failed to load fscache module, +return 1 +} + fi + } + +# Start the process using the wrapper + start_daemon -p $PIDFILE $DAEMON $DAEMON_OPTS + errcode=$? + return $errcode +} + +stop_server() { +# Stop the process using the wrapper + if [ -z "$DAEMONUSER" ] ; then + killproc -p $PIDFILE $DAEMON + errcode=$? + else +# if we are using a daemonuser then look for process that match + start-stop-daemon --stop --quiet --pidfile $PIDFILE \ + --user $DAEMONUSER \ + --exec $DAEMON + errcode=$? + fi + + return $errcode +} + +reload_server() { + [ ! -f "$PIDFILE" ] && return 1 + pid=pidofproc $PIDFILE # This is the daemon's pid + # Send a SIGHUP + kill -1 $pid + return $? +} + +force_stop() { +# Force the process to die killing it manually + [ ! -e "$PIDFILE" ] && return + if running ; then + kill -15 $pid + # Is it really dead? + sleep "$DIETIME"s + if running ; then + kill -9 $pid + sleep "$DIETIME"s + if running ; then + echo "Cannot kill $NAME (pid=$pid)!" + exit 1 + fi + fi + fi + rm -f $PIDFILE +} + + +case "$1" in + start) + log_daemon_msg "Starting $DESC " "$NAME" + # Check if it's running first + if running ; then + log_progress_msg "apparently already running" + log_end_msg 0 + exit 0 + fi + if start_server ; then + # NOTE: Some servers might die some time after they start, + # this code will detect this issue if STARTTIME is set + # to a reasonable value + [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time + if running ; then + # It's ok, the server started and is running + log_end_msg 0 + else + # It is not running after we did start + log_end_msg 1 + fi + else + # Either we could not start it + log_end_msg 1 + fi + ;; + stop) + log_daemon_msg "Stopping $DESC" "$NAME" + if running ; then + # Only stop the server if we see it running + errcode=0 + stop_server || errcode=$? + log_end_msg $errcode + else + # If it's not running don't do anything + log_progress_msg "apparently not running" + log_end_msg 0 + exit 0 + fi + ;; + force-stop) + # First try to stop gracefully the program + $0 stop + if running; then + # If it's still running try to kill it more forcefully + log_daemon_msg "Stopping (force) $DESC" "$NAME" + errcode=0 + force_stop || errcode=$? + log_end_msg $errcode + fi + ;; + restart|force-reload) + log_daemon_msg "Restarting $DESC" "$NAME" + errcode=0 + stop_server || errcode=$? + # Wait some sensible amount, some server need this + [ -n "$DIETIME" ] && sleep $DIETIME + start_server || errcode=$? + [ -n "$STARTTIME" ] && sleep $STARTTIME + running || errcode=$? + log_end_msg $errcode + ;; + status) + + log_daemon_msg "Checking status of $DESC" "$NAME" + if running ; then + log_progress_msg "running" + log_end_msg 0 + else + log_progress_msg "apparently not running" + log_end_msg 1 + exit 1 + fi + ;; + # Use this if the daemon cannot reload + reload) + log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon" + log_warning_msg "cannot re-read the config file (use restart)." + ;; + + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2 + exit 1 + ;; +esac + +exit 0 --- cachefilesd-0.10.5.orig/debian/logcheck.ignore.workstation +++ cachefilesd-0.10.5/debian/logcheck.ignore.workstation @@ -0,0 +1,3 @@ +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cachefilesd\[[0-10]+\]: Refilling cull table ?$ +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cachefilesd\[[0-10]+\]: Scan complete ?$ +^\w{3} [ :0-9]{11} [._[:alnum:]-]+ cachefilesd\[[0-10]+\]: Decant (all 2) ?$ --- cachefilesd-0.10.5.orig/debian/rules +++ cachefilesd-0.10.5/debian/rules @@ -0,0 +1,10 @@ +#!/usr/bin/make -f + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/class/makefile.mk + +DEB_MAKE_INSTALL_TARGET = install DESTDIR=$(DEB_DESTDIR) + +#binary-fixup/cachefilesd:: +# chmod o-rwx $(DEB_DESTDIR)/var/cache/fscache + --- cachefilesd-0.10.5.orig/debian/watch +++ cachefilesd-0.10.5/debian/watch @@ -0,0 +1,2 @@ +version=3 +http://people.redhat.com/~dhowells/fscache/cachefilesd-(.*)\.tar\.bz2