#!/bin/sh
# /etc/rc.d/scripts/idetune - run once at boot time from rc.sysinit
#
# Turn on ide device optimization.
# There is only one file /etc/sysconfig/harddisks with default paramenetrs for all disks.
# If you need different hdparm parameters for some of your devices, copy
# /etc/sysconfig/harddisks to /etc/sysconfig/harddisk/hda (hdb, hdc...) and modify it.
# each device which has no special parameters will use the defaults.
#
# Patched Sun Feb 24 00:55:55 2002 by Vadim Illarionov <DIMMeach@pisem.net>

WITHOUT_RC_COMPAT=1

. /etc/init.d/functions

HDPARM=/sbin/hdparm && [ -x "$HDPARM" ] || exit 0
EJECT=/usr/bin/eject
CONFIG=/etc/sysconfig/harddisk

for i in a b c d e f g h; do
	unset EIDE_32BIT EXTRA_PARAMS HDFLAGS LOOKAHEAD MULTIPLE_IO SPEED UNMASKIRQ USE_DMA dev media sourced
	media=/proc/ide/hd$i/media
	if [ -e $media ]; then
		SourceIfNotEmpty $CONFIG\s    && sourced=1
		SourceIfNotEmpty $CONFIG/hd$i && sourced=1
		[ -n "$sourced" ] || continue
		case $i in
			a) disk="Primary   Master" ;;
			b) disk="Primary   Slave " ;;
			c) disk="Secondary Master" ;;
			d) disk="Secondary Slave " ;;
			e) disk="Tertiary  Master" ;;
			f) disk="Tertiary  Slave " ;;
			g) disk="Quartiary Master" ;;
			h) disk="Quartiary Slave " ;;
		esac
		case $(cat $media) in
			cdrom)
				dev="  CD-ROM  "
				if [ -n "$SPEED" -a "$SPEED" -gt 0 ]; then
					HDFLAGS="$HDFLAGS -q -E$SPEED"
					ExecIfExecutable $EJECT -x $SPEED /dev/hd$i
				fi
			;;
			disk)
				dev="hard drive"
				MULTIPLE_IO=`$HDPARM -i /dev/hd$i | grep "MaxMultSect=" | cut -d, -f3 | cut -d= -f2`
				[ -n "$MULTIPLE_IO" -a "$MULTIPLE_IO" -ge 0 ] 2>/dev/null && HDFLAGS="$HDFLAGS -q -m$MULTIPLE_IO"
				[ -n "$LOOKAHEAD"   -a "$LOOKAHEAD"   -ge 0 ] 2>/dev/null && HDFLAGS="$HDFLAGS -q -A$LOOKAHEAD"
			;;
		esac
		[ -n "$USE_DMA"    -a "$USE_DMA"    -ge 0 ] && HDFLAGS="$HDFLAGS -q -d$USE_DMA"
		[ -n "$UNMASKIRQ"  -a "$UNMASKIRQ"  -ge 0 ] && HDFLAGS="$HDFLAGS -q -u$UNMASKIRQ"
		[ -n "$EIDE_32BIT" -a "$EIDE_32BIT" -ge 0 ] && HDFLAGS="$HDFLAGS -q -c$EIDE_32BIT"
		[ -n "$EXTRA_PARAMS"					  ] && HDFLAGS="$HDFLAGS -q $EXTRA_PARAMS"
		[ -n "$HDFLAGS"							  ] && action "Setting $dev parameters for $disk:" "$HDPARM" $HDFLAGS /dev/hd$i
	fi
done
