function gmirror_get_mirror_size($mirror) { if (!is_valid_mirror($mirror)) { return false; } $mirrorsize = ""; exec("/sbin/gmirror list " . escapeshellarg($mirror) . " | /usr/bin/grep 'Mediasize:' | /usr/bin/head -n 1 | /usr/bin/awk '{print \$2;}'", $mirrorsize); return $mirrorsize[0]; }
require_once "gmirror.inc"; $pgtitle = array(gettext("Diagnostics"), gettext("GEOM Mirrors")); include "head.inc"; $action_list = array("forget" => gettext("Forget all formerly connected consumers"), "clear" => gettext("Remove metadata from disk"), "insert" => gettext("Insert consumer into mirror"), "remove" => gettext("Remove consumer from mirror"), "activate" => gettext("Reactivate consumer on mirror"), "deactivate" => gettext("Deactivate consumer from mirror"), "rebuild" => gettext("Force rebuild of mirror consumer")); /* User tried to pass a bogus action */ if (!empty($_REQUEST['action']) && !array_key_exists($_REQUEST['action'], $action_list)) { header("Location: diag_gmirror.php"); return; } if ($_POST) { if (!isset($_POST['confirm']) || $_POST['confirm'] != gettext("Confirm")) { header("Location: diag_gmirror.php"); return; } $input_errors = ""; if ($_POST['action'] != "clear" && !is_valid_mirror($_POST['mirror'])) { $input_errors[] = gettext("You must supply a valid mirror name."); } if (!empty($_POST['consumer']) && !is_valid_consumer($_POST['consumer'])) { $input_errors[] = gettext("You must supply a valid consumer name"); } /* Additional action-specific validation that hasn't already been tested */ switch ($_POST['action']) { case "insert": if (!is_consumer_unused($_POST['consumer'])) { $input_errors[] = gettext("Consumer is already in use and cannot be inserted. Remove consumer from existing mirror first."); } if (gmirror_consumer_has_metadata($_POST['consumer'])) { $input_errors[] = gettext("Consumer has metadata from an existing mirror. Clear metadata before inserting consumer."); } $mstat = gmirror_get_status_single($_POST['mirror']);