X-Git-Url: https://git.pld-linux.org/?a=blobdiff_plain;ds=sidebyside;f=hdparm.init;h=40f7db062faa4ad9233fa0c43a47c75d5b0750de;hb=HEAD;hp=3b9b799499d2a97923502cf1c947a61dca3221b2;hpb=58940f4060c84644509d19f701ca2b4945bad885;p=packages%2Fhdparm.git diff --git a/hdparm.init b/hdparm.init index 3b9b799..40f7db0 100644 --- a/hdparm.init +++ b/hdparm.init @@ -1,63 +1,42 @@ #!/bin/sh +[ -f /etc/sysconfig/hdparm ] || exit 0 + +blockdevs=$(awk -F= '!/^#/ && !/^$/ {if ($2) print $1}' /etc/sysconfig/hdparm) +if [ -z "$blockdevs" ]; then + exit 0 +fi + # Source function library . /etc/rc.d/init.d/functions -# Get service config -[ -f /etc/sysconfig/hdparm ] && . /etc/sysconfig/hdparm - -while read major minor blocks name ; do - if [ "$minor" = "0" -o "$minor" = "64" ] ; then - case "$major" in - 3) - [ $minor = 0 ] && drive="hda" - [ $minor = 64 ] && drive="hdb" - ;; - 22) - [ $minor = 0 ] && drive="hdc" - [ $minor = 64 ] && drive="hdd" - ;; - 33) - [ $minor = 0 ] && drive="hde" - [ $minor = 64 ] && drive="hdf" - ;; - 34) - [ $minor = 0 ] && drive="hdg" - [ $minor = 64 ] && drive="hdh" - ;; - 56) - [ $minor = 0 ] && drive="hdi" - [ $minor = 64 ] && drive="hdj" - ;; - 57) - [ $minor = 0 ] && drive="hdk" - [ $minor = 64 ] && drive="hdl" - ;; - 88) - [ $minor = 0 ] && drive="hdm" - [ $minor = 64 ] && drive="hdn" - ;; - 89) - [ $minor = 0 ] && drive="hdo" - [ $minor = 64 ] && drive="hdp" - ;; - 90) - [ $minor = 0 ] && drive="hdq" - [ $minor = 64 ] && drive="hdr" - ;; - 91) - [ $minor = 0 ] && drive="hds" - [ $minor = 64 ] && drive="hdt" - ;; - esac - eval PARAMS=\$HDPARM_${drive} - if [ -n "${PARAMS}" ] ; then - show "Setting parameters for drive %s" "$drive" - busy - /sbin/hdparm ${PARAMS} /dev/$drive - deltext - ok +# Source hdparm configuration. +. /etc/sysconfig/hdparm + +for var in $blockdevs; do + drive=${var#HDPARM_} + + # check if it is some ID + if [ -L /dev/disk/by-id/ata-$drive ]; then + dev=$(readlink -f /dev/disk/by-id/ata-$drive) + elif [ -L /dev/disk/by-id/scsi-$dev ]; then + dev=$(readlink -f /dev/disk/by-id/scsi-$drive) + else + dev=$drive fi - fi -done < /proc/partitions + + # strip /dev + dev=${dev#/dev/} + + if [ -L "/proc/ide/$dev" -o -d "/sys/block/$dev" ]; then + eval PARAMS=\$$var + if [ -n "$PARAMS" ]; then + show "Setting parameters for drive %s (%s)" "$drive" "$PARAMS" + busy + /sbin/hdparm $PARAMS /dev/$dev + ok + fi + fi +done + exit 0