diff options
Diffstat (limited to 'scripts/vyatta-raid-event')
-rwxr-xr-x | scripts/vyatta-raid-event | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/scripts/vyatta-raid-event b/scripts/vyatta-raid-event deleted file mode 100755 index 2c193da5..00000000 --- a/scripts/vyatta-raid-event +++ /dev/null @@ -1,113 +0,0 @@ -#!/bin/bash -# -# **** License **** -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# This code was originally developed by Vyatta, Inc. -# Portions created by Vyatta are Copyright (C) 2006, 2007 Vyatta, Inc. -# All Rights Reserved. -# -# Author: Bob Gilligan <gilligan@vyatta.com> -# Date: 2008 -# Description: A script to handle events from the Linux Software RAID -# subsystem. -# -# **** End License **** -# -# This script is called by the "mdadm" daemon running in "monitor" mode -# whenever an event occurs in in the RAID subsytem. The script is called -# with two or three arguments: The first argument is always the name of -# the event, e.g. "RebuildFinished". The second argument is the name of -# the RAID set device that the event pertains to, e.g. "/dev/md0". The -# third argument is provided for some events, and gives the name of the -# RAID set member that the event pertains to, e.g. "/dev/sda2". -# -# See the mdadm(8) man page for more details on the events that it provides. -# - -# Script will be called with 2 or 3 arguments, depending on the event -if [ $# -lt 2 ]; then - logger -t "RAID" -p local0.warning "vyatta-raid-event: Error: Not enough args: $*" - # We can't do anything if we don't know event and RAID device it - # pertains to. - exit 1 -fi -if [ $# -gt 3 ]; then - logger -t "RAID" -p local0.warning "vyatta-raid-event: Warning: too many args: $*" - # Be Robust: Try to complete task with args we know about -fi - -event=$1 -raid_set=$2 - -case $event in - - RebuildFinished) - logger -t "RAID" -p local0.warning "event ${event} ${raid_set}" - - # We need to update grub at the time that a resync completes - # on the root filesystem so that the new member disk will be - # bootable. - root_dir=/ - mounted_on_root=0 - mounted_on=`mount | grep "^${raid_set}" | awk '{ print $3 }'` - for dir in $mounted_on ; do - if [ "$dir" = "/" -o "$dir" = "/live/image" ]; then - mounted_on_root=1 - root_dir=$dir - fi - done - - if [ $mounted_on_root -eq 1 ]; then - raid_set_dev=${raid_set##*/} - if [ -e /sys/block/${raid_set_dev}/md/degraded ]; then - degraded=`cat /sys/block/${raid_set_dev}/md/degraded` - else - degraded=0 - fi - if [ $degraded -eq 0 ]; then - drive=${member_to_add%%[0-9]*} - logger -t "RAID" -p local0.warning \ - "RAID set ${raid_set} holds root filesystem. Updating grub." - touch /tmp/raid-grub-install-log - grub-install --no-floppy --recheck --root-directory=${root_dir} ${raid_set} \ - >> /tmp/raid-grub-install-log 2>&1 - if [ $? -ne 0 ]; then - logger -t "RAID" -p local0.warning \ - "grub-installed failed for $raid_set" - fi - else - logger -t "RAID" -p local0.warning \ - "RAID set ${raid_set} is still degraded. No action taken." - fi - else - logger -t "RAID" -p local0.warning \ - "RAID set ${raid_set} does not hold root filesystem. No action taken" - fi - ;; - - DeviceDisappeared | RebuildStarted | Rebuild?? | NewArray | \ - DegradedArray | MoveSpare | SparesMissing | TestMessage) - logger -t "RAID" -p local0.warning \ - "event ${event} ${raid_set}: No action taken" - ;; - - Fail | FailSpare | SpareActive) - member=$3 - logger -t "RAID" -p local0.warning \ - "event ${event} ${raid_set} ${member}: No action taken" - ;; - - *) - logger -t "RAID" -p local0.warning \ - "event ${event} unknown. No action taken" - ;; - - esac |