#!/bin/sh set -e [ -n "$DEVNAME" ] || exit 1 . /lib/hdparm/hdparm-functions if [ -e /proc/cmdline ]; then #linux only - future proofing against BSD and Hurd :) if grep -wq nohdparm /proc/cmdline ; then exit 0 fi fi raidstat=OK if [ -e /proc/mdstat ]; then if egrep -iq "resync|repair|recover|check" /proc/mdstat; then raidstat=RESYNC fi elif [ -e /proc/rd/status ]; then raidstat=`cat /proc/rd/status` fi if ! [ "$raidstat" = 'OK' ]; then exit 1 fi die() { echo "$*" 1>&2 ; exit 1; } OPTIONS=$(hdparm_options $DEVNAME) || die "hdparm_options failed with: $OPTIONS" apmopts='' if [ -n "$OPTIONS" ]; then for opt in $OPTIONS; do case $opt in (*'-B'*|*'-S'*|*'force_spindown_time'*) apmopts='true' ;; esac done if [ "$apmopts" = true ]; then /usr/lib/pm-utils/power.d/95hdparm-apm resume fi # strip -S (spindown) and -B (apm), force_spindown_time and -q # apm options are handled by /usr/lib/pm-utils/power.d/95hdparm-apm OPTIONS=$(echo $OPTIONS | perl -pe 's/((-S|-B|force_spindown_time)[\d]{1,3})|(-q\s?)//g') if [ -n "$OPTIONS" ]; then /sbin/hdparm -q $OPTIONS $DEVNAME 2>/dev/null fi fi exit 0