-# 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