summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authordoktornotor <notordoktor@gmail.com>2015-08-28 13:52:04 +0200
committerdoktornotor <notordoktor@gmail.com>2015-08-28 13:52:04 +0200
commit3e4f8fc4f431c48ee3132f3a3c9e6899b1656b04 (patch)
treec371f520af49ce724655c2d3b34f2842784892d8 /src
parent4566dcdd945236daee1e7d1a631c5599a3271944 (diff)
downloadpfsense-3e4f8fc4f431c48ee3132f3a3c9e6899b1656b04.zip
pfsense-3e4f8fc4f431c48ee3132f3a3c9e6899b1656b04.tar.gz
Bug #4569 - system_set_harddisk_standby() rewritte for current CAM-based ATA stack
Resubmit of #1767
Diffstat (limited to 'src')
-rw-r--r--src/etc/inc/system.inc17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/etc/inc/system.inc b/src/etc/inc/system.inc
index 41e798e..94ef368 100644
--- a/src/etc/inc/system.inc
+++ b/src/etc/inc/system.inc
@@ -2042,6 +2042,11 @@ function system_dmesg_save() {
function system_set_harddisk_standby() {
global $g, $config;
+ // Get only suitable candidates for standby; using get_smart_drive_list()
+ // from utils.inc to get the list of drives.
+ $harddisks = array();
+ $harddisks = get_smart_drive_list();
+
if (isset($config['system']['developerspew'])) {
$mt = microtime();
echo "system_set_harddisk_standby() being called $mt\n";
@@ -2055,11 +2060,13 @@ function system_set_harddisk_standby() {
$standby = $config['system']['harddiskstandby'];
// Check for a numeric value
if (is_numeric($standby)) {
- // Sync the disk(s)
- pfSense_sync();
- if (set_single_sysctl('hw.ata.standby', (int)$standby)) {
- // Reinitialize ATA-drives
- mwexec('/usr/local/sbin/atareinit');
+ // Since get_smart_drive_list() only matches ad|da|ada; lets put the check below
+ // just in case of some weird pfSense platform installs.
+ if (count($harddisks) > 0) {
+ // Iterate disks and run the camcontrol command for each
+ foreach ($harddisks as $harddisk) {
+ mwexec("/sbin/camcontrol standby {$harddisk} -t {$standby}");
+ }
if (platform_booting()) {
echo gettext("done.") . "\n";
}
OpenPOWER on IntegriCloud