#!/bin/bash
#
# chkconfig: 2345 01 99
# description: Starts scsi autodetection script

MODULES_CONF='/etc/modules.conf'

modules_template()
{
cat <<EOF
alias scsi_hostadapter aic7xxx
alias scsi_hostadapter sym53c8xx
alias scsi_hostadapter megaraid
alias scsi_hostadapter 3w-xxxx
alias scsi_hostadapter qla1280
alias scsi_hostadapter qlogicfas
alias scsi_hostadapter qlogicfc
alias scsi_hostadapter qlogicisp
alias scsi_hostadapter eata
alias scsi_hostadapter gdth
alias scsi_hostadapter BusLogic
EOF
}

detect_scsi()
{
    local pcilist=/etc/pcilist
    local function idpci rest row module
    
    cat /proc/bus/pci/devices | while read function idpci rest; do
	row=`sed -n "/^$idpci/p" $pcilist`
	if [ "$row" ]; then
		set $row
		module=`echo $2|sed -e 's/\"//g'`
		shift; shift
		cat $MODULES_CONF | grep -q "$module" || modules_template | sed -n "/$module/p" >> $MODULES_CONF
		modprobe $module > /dev/null 2>&1
	fi
    done
    lsmod | grep -q scsi && modprobe sd_mod > /dev/null 2>&1
}

start() {
    detect_scsi
    depmod -A
}

case $1 in
                start) start
                        ;;
                        *) echo "Usage: `basename $0` start"
                        ;;
esac
