]> git.pld-linux.org Git - packages/hdparm.git/blobdiff - hdparm.init
- updated to 9.65
[packages/hdparm.git] / hdparm.init
index 3b9b799499d2a97923502cf1c947a61dca3221b2..40f7db062faa4ad9233fa0c43a47c75d5b0750de 100644 (file)
@@ -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
This page took 0.09262 seconds and 4 git commands to generate.