#!/bin/sh
#
# readahead:	Prereads programs required for startup into memory
#
# chkconfig: 5 96 99
# description:  This service causes the programs used during startup \
#		to be loaded into memory before they are needed,\
#		thus improving startup performance
#
# Copyright (C) 2005,2006,2007  Red Hat, Inc.
#

# Sanity checks.
[ -x /usr/sbin/readahead ] || exit 0

# Check for > 384 MB
free -m | gawk '/Mem:/ {exit ($2 >= 384)?0:1}' || exit 0

# Source function library.
. /etc/rc.d/init.d/functions

VAR_SUBSYS_READAHEAD="/var/lock/subsys/readahead_later"

start() {
    LTYPE="later"
    READAHEAD_CMD="/usr/sbin/readahead"
    READAHEAD_BASE="/etc/readahead.d"

    echo -n $"Starting background readahead ($LTYPE, "

    if [ -s "$READAHEAD_BASE/$LTYPE.sorted" ]; then
	echo -n $"fast mode): "
	$READAHEAD_CMD --dont-sort $READAHEAD_BASE/$LTYPE.sorted >/dev/null &
    elif [ -s "$READAHEAD_BASE/custom.$LTYPE" ]; then
	echo -n $"customized): "
	$READAHEAD_CMD $READAHEAD_BASE/custom.$LTYPE >/dev/null &
    else
	echo -n $"full mode): "
	$READAHEAD_CMD $READAHEAD_BASE/*.$LTYPE >/dev/null &
    fi

    touch $VAR_SUBSYS_READAHEAD

    echo_success
    echo
}


stop() {
   rm -f $VAR_SUBSYS_READAHEAD
   /bin/true
}

status() {
   [ -r $VAR_SUBSYS_READAHEAD ] || exit 2
}

# See how we were called.
case "$1" in
    start)
	start
	;;
    stop)
	stop
	;;
    status)
	status
        ;;
    restart)
	stop
	start
	;;
    reload)
	start
        ;;
    *)
	echo $"Usage: $0 {start|stop|status|restart|reload}"
	;;
esac
exit $RETVAL
