#!/bin/sh # PROVIDE: atacontrol # REQUIRE: # BEFORE: FILESYSTEMS fsck zvol # KEYWORD: nojail # Usage: /etc/rc.conf # atacontrol_enable="YES" # Enable # atacontrol_devs="ad4 ad5 ad6 ad7" # List of devices to care about # atacontrol_all_mode="UDMA100" # Mode for all devices in _devs # atacontrol_all_spindown="900" # Spindown time for all devices in _devs # atacontrol_ad7_mode="UDMA133" # Override _mode for ad7 # atacontrol_ad7_spindown="900" # Override _spindown for ad7 . /etc/rc.subr name="atacontrol" start_cmd="atacontrol_start" atacontrol_start() { local dev mode spin if [ "${atacontrol_devs}" ] then for dev in ${atacontrol_devs} do dev="$(basename "${dev}")" [ -e "/dev/${dev}" ] || continue mode="$(eval echo \${atacontrol_${dev}_mode:-${atacontrol_all_mode}})" spin="$(eval echo \${atacontrol_${dev}_spindown:-${atacontrol_all_spindown}})" printf "atacontrol %s: ${mode:+mode: %s }${spin:+spindown: %s}\n" "${dev}" "${mode}" "${spin}" [ "${mode}" ] && /sbin/atacontrol mode "${dev}" "${mode}" >&- [ "${spin}" ] && /sbin/atacontrol spindown "${dev}" "${spin}" && \ /bin/dd if="/dev/${dev}" of=/dev/null bs=512 count=1 2>&- & done fi } load_rc_config $name run_rc_command "$1"