diff options
author | Holger Brueckner <darks@gentoo.org> | 2001-10-12 11:16:26 +0000 |
---|---|---|
committer | Holger Brueckner <darks@gentoo.org> | 2001-10-12 11:16:26 +0000 |
commit | 449d3c7dfe948e485fe104f194a560b40e0f9fcc (patch) | |
tree | 24bb9003689c6d03385f9338152927adf439dbcc /net-fs/openafs | |
parent | updated to latest available version (diff) | |
download | gentoo-2-449d3c7dfe948e485fe104f194a560b40e0f9fcc.tar.gz gentoo-2-449d3c7dfe948e485fe104f194a560b40e0f9fcc.tar.bz2 gentoo-2-449d3c7dfe948e485fe104f194a560b40e0f9fcc.zip |
hmpf .. forgot the init script
Diffstat (limited to 'net-fs/openafs')
-rw-r--r-- | net-fs/openafs/files/afs.rc.rc6 | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/net-fs/openafs/files/afs.rc.rc6 b/net-fs/openafs/files/afs.rc.rc6 new file mode 100644 index 000000000000..cea7ec992505 --- /dev/null +++ b/net-fs/openafs/files/afs.rc.rc6 @@ -0,0 +1,220 @@ +#! /sbin/runscript +#RCUPDATE:3 4:77:This line is required for script management + +# Copyright 2000, International Business Machines Corporation and others. +# All Rights Reserved. +# +# This software has been released under the terms of the IBM Public +# License. For details, see the LICENSE file in the top-level source +# directory or online at http://www.openafs.org/dl/license10.html + +# AFS Start and stop AFS components +# +# +# chkconfig: 345 60 20 +# description: AFS is a distributed file system which provides location +# transparency, caching and secure authentication. +# Additional configuration can be done in the /etc/sysconfig/afs +# file. Read the documentation in that file for more information. +# +# Note that AFS does not use a pid file in /var/run. It is turned off by +# unmounting /afs. +# +# Modified by Holger Brueckner <darks@fet.org> for gentoo-linux + +# Gather up options and post startup script name, if present +if [ -f /etc/afs/afs.conf ]; then + . /etc/afs/afs.conf +fi + + +# dependecies +depend() { + need net +} + +# check for ext2 partition + +check_ext2() { + PART=`cat /proc/mounts | grep vice | grep ext2 | awk '{print $1}'` + if [ -z $PART ] + then + echo ">>> PLEASE CREATE A EXT2 (no reiserfs) PARTITION (of aprox. 200M)" + echo ">>> AND MOUNT IT TO /USR/VICE/CACHE !!!" + exit 1 + fi +} + +# check if cacheinfo exist, otherwise create it !! + +check_cacheinfo(){ + [ ! -f /usr/vice/etc/cacheinfo ] && { + PART=`cat /proc/mounts | grep vice | grep ext2 | awk '{print $1}'` + CACHESIZE=`df $PART | grep ^/ | awk '{print $4}'` + CACHESIZE=`expr $CACHESIZE \* 9` + CACHESIZE=`expr $CACHESIZE / 10` + echo "/afs:/usr/vice/cache:$CACHESIZE" > /usr/vice/etc/cacheinfo + } +} + +# is_on returns 1 if value of arg is "on" +is_on() { + if test "$1" = "on" ; then return 0 + else return 1 + fi +} + +# If choose_client can't correctly determine which client to use, set +# LIBAFS manually. +choose_client() { + + # Use the second field of the uname -v output instead of just + # doing a match on the whole thing to protect against matching + # a timezone named SMP -- I don't know of one, but let's be + # paranoid. + + set X `uname -v`; shift + case $2 in + SMP) MP=.mp ;; # MP system + *) MP= ;; # SP system + esac + + # For now, just use uname -r to get the module version. + VERSION=`uname -r` + + LIBAFS=libafs-$VERSION$MP.o +} + +# +# Find prefix symbol to use with insmod. We find the unregister_filesystem +# string from /proc/ksyms since we know it's there. If /proc/ksyms does not +# exist, we print that info to the console and use the uname -v output to +# decide on a prefix. +# unregister_filesystem_Rsmp_b240cad8 is a typcial SMP version string from +# a kernel built from ftp.kernel.org +# + +KSYMS_FILE=/proc/ksyms +SEARCH_STR="unregister_filesystem" +DEFAULT_SMP_PREFIX="smp_" # Redhat kernels need "smp" instead +PREFIX="" # none needed for UP with <= 1Gig memory + +set_prefix() +{ + h='[0-9a-fA-F]' + h8="$h$h$h$h$h$h$h$h" + prefix_set=0 + + set X `fgrep $SEARCH_STR $KSYMS_FILE 2> /dev/null`; shift + str=$2 + case $str in + ${SEARCH_STR}_R$h8) + # No prefix required + ;; + $SEARCH_STR) + # No versioning in kernel symbols + ;; + ${SEARCH_STR}_R*$h8) + suffix=${str#${SEARCH_STR}_R} + PREFIX=${suffix%$h8} + ;; + *) + case $str in + '') + echo afsd: Cannot find \"$SEARCH_STR\" in file $KSYMS_FILE + ;; + *) + echo afsd: Malformed kernel version symbol \"$str\" + ;; + esac + + echo Guessing prefix from output of uname -v + set X `uname -v`; shift + case $2 in + SMP) + PREFIX=$DEFAULT_SMP_PREFIX + ;; + esac + ;; + esac +} + + +MODLOADDIR=/usr/vice/etc/modload +# load_client loads the AFS client module if it's not already loaded. +load_client() { + # If LIBAFS is set, use it. + if [ -z "$LIBAFS" ] ; then + # Try to determine the right client. + choose_client + fi + + if [ ! -f $MODLOADDIR/$LIBAFS ] ; then + echo AFS module $MODLOADDIR/$LIBAFS does not exist. Not starting AFS. + exit 1 + fi + + # use the prefix command if required + set_prefix + /sbin/insmod ${PREFIX:+-P $PREFIX} -f -m $MODLOADDIR/$LIBAFS > $MODLOADDIR/libafs.map 2>&1 +} + +start(){ + # Load kernel extensions + + check_ext2 + check_cacheinfo + + ebegin "Starting AFS services" + + if load_client ; then : + else + echo Failed to load AFS client, not starting AFS services. + eend 1 "Error Starting AFS client" + fi + + # Start bosserver, it if exists + if is_on $AFS_SERVER && test -x /usr/afs/bin/bosserver ; then + /usr/afs/bin/bosserver + fi + + # Start AFS client + if is_on $AFS_CLIENT && test -x /usr/sbin/afsd ; then + /usr/sbin/afsd ${OPTIONS} 1>&2 + STATUS=$? + # Start AFS version of inetd.conf if present. + if test -f /usr/afsws/etc/inetd.conf -a -x /usr/afsws/etc/inetd.afs ; then + /usr/afsws/etc/inetd.afs /usr/afsws/etc/inetd.conf + fi + $AFS_POST_INIT + fi + eend $STATUS "Error starting AFS" + +} + +stop() { + # Stop AFS + ebegin "Stopping AFS services" + + if is_on $AFS_CLIENT ; then +# killall inetd.afs + umount /afs + STATUS=$? + fi + + if is_on $AFS_SERVER && test -x /usr/afs/bin/bos ; then + echo "Stopping AFS bosserver" + /usr/afs/bin/bos shutdown localhost -localauth -wait + killall -HUP bosserver + fi + + LIBAFS=`/sbin/lsmod | fgrep libafs` + if [ -n "$LIBAFS" ] ; then + LIBAFS=`echo $LIBAFS | awk 'BEGIN { FS = " " } { print $1 }'` + /sbin/rmmod $LIBAFS + STATUS=$? + fi + eend $STATUS "Error starting AFS" + +} + |