summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjim-p <jimp@pfsense.org>2012-01-30 16:24:58 -0500
committerjim-p <jimp@pfsense.org>2012-01-30 16:24:58 -0500
commit92ac3b3d4587bdc1dac4352d6573896cf315df22 (patch)
tree1bc04b29c98f92d6c93e4ec7fefbc4999f14a0a2
parente8fc69ff43bb089f90de4f87f02db44f55a96b40 (diff)
downloadpfsense-92ac3b3d4587bdc1dac4352d6573896cf315df22.zip
pfsense-92ac3b3d4587bdc1dac4352d6573896cf315df22.tar.gz
Add a small script to disable APM on ATA drives if they claim to support it. Leaving this on will kill drives long-term, especially laptop drives, by generating excessive Load Cycles.
The APM bit set will persist until the drive is power cycled, so it's necessary to run on each boot to be sure.
-rwxr-xr-xetc/rc3
-rw-r--r--etc/rc.disable_hdd_apm10
2 files changed, 13 insertions, 0 deletions
diff --git a/etc/rc b/etc/rc
index df54104..1934ee7 100755
--- a/etc/rc
+++ b/etc/rc
@@ -80,6 +80,9 @@ if [ ! "$PLATFORM" = "cdrom" ] ; then
fi
fi
+# Disable APM on ATA drives. Leaving this on will kill drives long-term, especially laptop drives, by generating excessive Load Cycles.
+/etc/rc.disable_hdd_apm
+
if [ ! "$PLATFORM" = "jail" ]; then
# Check to see if a compact flash mountpoint exists
# If it fails to mount then run a fsck -fy
diff --git a/etc/rc.disable_hdd_apm b/etc/rc.disable_hdd_apm
new file mode 100644
index 0000000..58f3734
--- /dev/null
+++ b/etc/rc.disable_hdd_apm
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+ATAIDLE=/usr/local/sbin/ataidle
+for i in /dev/ad?; do
+ SUPPORTED=`${ATAIDLE} ${i} | grep "APM Supported" | awk '{print $3;}'`
+ if [ "${SUPPORTED}" = "yes" ] ; then
+ echo Disabling APM on $i
+ ${ATAIDLE} -P 0 ${i}
+ fi
+done
OpenPOWER on IntegriCloud