- zap immutable bit before nuking failed vserver build
[util-vserver.git] / scripts / vcached
index e79b5b9..1d83161 100755 (executable)
 # 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
@@ -58,7 +40,7 @@ if [ $foreground -eq 0 ] ; then
 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}
@@ -82,10 +64,18 @@ while : ; do
        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"