1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #!/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
|