Giuseppe Iuculano ha scritto:
> Asier ha scritto:
>> El Viernes 17 Abril 2009, Giuseppe Iuculano escribió:
>>> dmraid -r -vvv
>>> dmraid -s -vv
>> Here it goes:
> 
> Hi,
> 
> Could you please try the attached dmraid-activate script with dmraid rc15 
> please?
> 
> Restore /etc/udev/rules.d/85_dmraid.rules and
> /usr/share/initramfs-tools/hooks/dmraid (in case you have the modified script
> for debugging) and:
> 
> cat dmraid-activate > /sbin/dmraid-activate
> update-initramfs -u -k `uname -r`
> 
> 
> Cheers,
> Giuseppe.
> 


Ops, forgot to attach the file :)

Cheers,
Giuseppe
#!/bin/sh
#
# dmraid-activate: Script to reformat the output of dmraid to be useful with
# udev.
#
# (c) 2008 Canonical Ltd.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# 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.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

# Arguments: $1 = Name of array you want activated.
activate_array ()
{
        Raid_Setinfo=$(dmraid -i -si "$1")
        if [ -z "$Raid_Setinfo" ]; then
                log_error "Cannot retrieve RAID set information for $1"
                return 1
        fi

        Raid_Type=$(dmraid -i -si -ct "$1")
        Raid_Nodevs=$(dmraid -i -si -cd "$1")

        case "$Raid_Type" in
                stripe)
                        if [ "$Raid_Nodevs" -lt 2 ]; then
                                if [ -n "$Degraded" ]; then
                                        log_error "Cannot bring up a RAID0 
array in degraded mode, not all devices present."
                                fi
                                return 2
                        fi
                        ;;
                mirror)
                        if [ "$Raid_Nodevs" -lt 2 ]; then
                                if [ -z "$Degraded" ]; then
                                        log_error "Raid set $Raid_Name is 
degraded. Not activating"
                                        return 2
                                else
                                        log_warning "Activating $Raid_Name in 
degraded mode"
                                        Return_Val=3
                                fi
                        fi
                        ;;
                raid5_*)
                        modprobe -q dm_raid45
                        if [ "$Raid_Nodevs" -lt 3 ]; then
                                if [ -z "$Degraded" ]; then
                                        log_error "Raid set $Raid_Name is 
degraded. Not activating"
                                        return 2
                                else
                                        log_warning "Activating $Raid_Name in 
degraded mode"
                                        Return_Val=3
                                fi
                        fi
                        ;;
        esac

        # At this point we have the required number of devs, or the user wants 
the
        # array brought up in degraded mode, except in the case of striped 
arrays.
        dmraid -i -ay -Z "$1"
        return $Return_Val
}

log_warning()
{
        if type logger > /dev/null ; then
                logger -t dmraid-activate "WARNING: $1"
        else
                echo "dmraid-activate: WARNING: $1"
        fi
}

log_error()
{
        if type logger > /dev/null ; then
                logger -t dmraid-activate "ERROR: $1"
        else
                echo "dmraid-activate: ERROR: $1"
        fi
}

modprobe -q dm_mod

if [ -z "$1" ] || [ "$1" = "--degraded" ] && [ "$#" -lt 2 ]; then
        echo "Node name not specified." >&2
        exit 1
fi

if [ "$1" = "--degraded" ]; then
        Degraded=1
        Node_Name=$2
else
        Node_Name=$1
fi

Raid_Name=$(dmraid -i -r -cr /dev/$Node_Name | grep -vi "No RAID disks" | grep 
-vi "formats discovered")

if [ -z "$Raid_Name" ]; then
        exit 0
fi

# We need a special case for isw arrays, since it is possible to have several
# subsets of a RAID group, of varying RAID types.
case "$Raid_Name" in
        isw_*)
                Isw_Group_Name=$(echo "$Raid_Name" | cut -f 1-2 -d _)
                Isw_Subsets=$(dmraid -i -n "/dev/$Node_Name" | grep volume | 
sed 's/.*volume: " *\(.*\)"$/\1/')

                for isw_subset in $Isw_Subsets
                do
                        activate_array "${Isw_Group_Name}_${isw_subset}"
                done
                break
                ;;
        *)
                activate_array "$Raid_Name"
                break
                ;;
esac

exit $Return_Val

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to