diff options
author | jim-p <jimp@pfsense.org> | 2014-11-13 14:20:21 -0500 |
---|---|---|
committer | jim-p <jimp@pfsense.org> | 2014-11-13 14:20:57 -0500 |
commit | 0373c361fe623e466ed2c9b8cf129a7f160f79cf (patch) | |
tree | 4ae7d9bb1b858a0f60777bef710ef4d453993d70 /etc | |
parent | 99b7f4b222642514183510f98bd6870646cc6760 (diff) | |
download | pfsense-0373c361fe623e466ed2c9b8cf129a7f160f79cf.zip pfsense-0373c361fe623e466ed2c9b8cf129a7f160f79cf.tar.gz |
geom part list no longer lists empty disks, compensate where needed.
Also, while I'm here, fixup copyright.
Diffstat (limited to 'etc')
-rw-r--r-- | etc/inc/gmirror.inc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/etc/inc/gmirror.inc b/etc/inc/gmirror.inc index cd6eb5f..0176c19 100644 --- a/etc/inc/gmirror.inc +++ b/etc/inc/gmirror.inc @@ -2,6 +2,7 @@ /* gmirror.inc Copyright (C) 2009-2014 Jim Pingle + Copyright (C) 2013-2014 Electric Sheep Fencing, LP Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -107,6 +108,7 @@ function gmirror_get_disks() { /* List all potential gmirror consumers */ function gmirror_get_unused_consumers() { $consumerlist = ""; + $disklist = gmirror_get_disks(); /* Get a list of consumers, exclude existing mirrors and diskid entries */ exec("/sbin/geom part status -s | /usr/bin/egrep -v '(mirror|diskid)' | /usr/bin/awk '{print $1, $3;}'", $consumerlist); $all_consumers = array(); @@ -115,6 +117,11 @@ function gmirror_get_unused_consumers() { foreach ($parts as $part) $all_consumers[] = $part; } + foreach ($disklist as $d) { + if (!is_consumer_used($d) && !in_array($d, $all_consumers)) { + $all_consumers[] = $d; + } + } return $all_consumers; } @@ -290,6 +297,9 @@ function gmirror_get_all_unused_consumer_sizes_on_disk($disk) { return array(); $output = ""; exec("/sbin/geom part list " . escapeshellarg($disk) . " | /usr/bin/egrep '(Name:|Mediasize:)' | /usr/bin/cut -c4- | /usr/bin/sed -l -e 'N;s/\\nMediasize://;P;D;' | /usr/bin/cut -c7-", $output); + if (empty($output)) { + exec("/sbin/geom disk list " . escapeshellarg($disk) . " | /usr/bin/egrep '(Name:|Mediasize:)' | /usr/bin/cut -c4- | /usr/bin/sed -l -e 'N;s/\\nMediasize://;P;D;' | /usr/bin/cut -c7-", $output); + } $disk_contents = array(); foreach ($output as $line) { list($name, $size, $humansize) = explode(" ", $line, 3); |