51 lines
1.4 KiB
Bash
Executable File
51 lines
1.4 KiB
Bash
Executable File
#!/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
|