# Mark Huang <mlhuang@cs.princeton.edu>
# Copyright (c) 2004 The Trustees of Princeton University (Trustees).
#
-# $Id: vcached,v 1.1 2004/07/30 16:46:24 mlh-pl_kernel Exp $
+# $Id: vcached,v 1.4 2004/08/26 16:48:48 mlh-pl_kernel Exp $
#
-# number of images to keep cached
-slots=32
-
-# fill the cache periodically
-period=$((60 * 15))
-
-# nice adjustment
-nice=10
-
-# PID file
-pidfile=/var/run/vcached.pid
-
-# log file
-logfile=/var/log/vcached.log
-
-# run in foreground
-foreground=0
-
-# debug
-debug=0
+# get configuration
+. /etc/vcached.conf
# parse options
while getopts 'fd' OPT ; do
fi
# record PID
-trap "killall -q -w vbuild ; rm -f $pidfile ; exit 255" EXIT
+trap "rm -f $pidfile ; exit 255" EXIT
echo $$ > $pidfile
: ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars}
if [ ! -d "$VROOTDIR/.vcache/v$i" ] ; then
echo "$(date) Caching v$i"
# build image in .vtmp
- "$PKGLIBDIR/vbuild" "$VROOTDIR/vserver-reference" "$VROOTDIR/.vtmp/v$i"
+ TMP=$(mktemp -d "$VROOTDIR/.vtmp/v$i.XXXXXX")
+ "$PKGLIBDIR/vbuild" "$VROOTDIR/vserver-reference" "$TMP"
+ RETVAL=$?
# move it to .vcache when complete
- mv "$VROOTDIR/.vtmp/v$i" "$VROOTDIR/.vcache/v$i"
- echo "$(date) v$i ready"
+ if [ $RETVAL -eq 0 ] ; then
+ mv "$TMP" "$VROOTDIR/.vcache/v$i"
+ echo "$(date) v$i ready"
+ else
+ echo "$(date) Error $RETVAL building v$i"
+ chattr -R -i "$TMP"
+ rm -rf "$TMP"
+ fi
fi
done
[ $debug -ne 0 ] && echo "$(date) Sleeping for $period seconds"