OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [Documentation/] [rmdev_dyn.cciss] - Rev 1765

Compare with Previous | Blame | View Log

#!/bin/sh 
#
# Author: Francis Wiran <Francis.Wiran@hp.com>
#
# Script to remove device nodes for SMART Array controllers. This will
# be the device nodes with major numbers which are dynamically allocated
# by the kernel. This script will not attempt to remove the device
# nodes with major number 104 thru 111 (c0 thru c7), which are 
# the major numbers that's allocated for cciss controllers by kernel.org.
#
# Usage:
# rmdev_dyn.cciss [ctlr num]
#
# With no arguments, the script will check to see if there are any nodes
# under /dev/cciss, whose major number no longer shows in /proc/partitions,
# or to be exact, no longer shows to be owned by cciss driver.
# If there is, then it will be removed.
#
# Note that it is a good idea to run rmdev_dyn.cciss script if you remove
# those controllers (the ones which major numbers were dynamically allocated)
# This will unclutter /dev, as well as preventing possible problems due to
# referenced devices and major numbers no longer available or taken by
# other non-cciss drivers.
#
# Passing arguments:
# If you know that one of your controllers, say cciss8, has been removed
# and the nodes are no longer valid, you could do
#
# rmdev_dyn.cciss 8 
#
# This is the same as doing `rm -f /dev/cciss/c8*` 

# Inputs
NR_CTLR=${1}

echo_usage()
{
        echo "Usage: rmdev_dyn.cciss [ctlr num]"
        echo "The script will not attempt to remove nodes for controllers"
        echo "0 thru 7, therefore if you want to pass an argument,"
        echo "make sure that ctlr num is equal or greater than 8"
}

rm_nod1()
{
        if [ $1 -lt 8 ]; then
                echo_usage;
                exit
        else
                rm -f /dev/cciss/c${1}*
                echo "removed /dev/cciss/c${1}*"
        fi
}

rm_nod2()
{
        for X in `ls -l /dev/cciss/c* |\
                awk '{print $5-i}' |\
                uniq`; do
                if [ \( $X -ge 104 \) -a \( $X -le 111 \) ]; then
                        :
                elif [ `cat /proc/devices |\
                        grep cciss |\
                        grep $X |\
                        wc -l` -eq 0 ]; then

                        Y=`ls -l /dev/cciss/ |\
                                awk '{print $5-i ":"  $10}'|\
                                tr d ':' |\
                                grep $X |\
                                awk -F: '{print $2}' |\
                                uniq`

                        Z="/dev/cciss/${Y}*"

                        rm -f $Z
                        echo "removed $Z"
                fi
        done
}

# Start here
if [ $# -gt 0 ]; then
        rm_nod1 $NR_CTLR;
else
        rm_nod2;
fi

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.