function gmirror_process_updatenotification($mode, $data)
{
    global $config;
    $retval = 0;
    switch ($mode) {
        case UPDATENOTIFY_MODE_NEW:
            $retval |= rc_exec_service("geom load mirror");
            $retval |= disks_raid_gmirror_configure($data);
            break;
        case UPDATENOTIFY_MODE_MODIFIED:
            $retval |= rc_exec_service("geom start mirror");
            break;
        case UPDATENOTIFY_MODE_DIRTY:
            $retval |= disks_raid_gmirror_delete($data);
            if (is_array($config['gmirror']['vdisk'])) {
                $index = array_search_ex($data, $config['gmirror']['vdisk'], "uuid");
                if (false !== $index) {
                    unset($config['gmirror']['vdisk'][$index]);
                    write_config();
                }
            }
            break;
    }
    return $retval;
}
    if (is_array($error_bucket)) {
        foreach ($error_bucket as $elem) {
            $input_errors[] =& $elem["error"];
        }
    }
    /* if this is an AJAX caller then handle via JSON */
    if (isAjax() && is_array($error_bucket)) {
        input_errors2Ajax(NULL, $error_bucket);
        exit;
    }
    if ($_POST['apply']) {
        $retval = 0;
        if (!file_exists($d_sysrebootreqd_path)) {
            config_lock();
            /* reload all components that create raid device */
            disks_raid_gmirror_configure();
            config_unlock();
            write_config();
        }
        $savemsg = get_std_save_message($retval);
        if ($retval == 0) {
            if (file_exists($d_raidconfdirty_path)) {
                unlink($d_raidconfdirty_path);
            }
        }
    }
}
if ($_GET['act'] == "del") {
    if ($a_raid[$_GET['id']]) {
        $raidname = $a_raid[$_GET['id']]['name'];
        disks_raid_gmirror_delete($raidname);