General
cancel
Showing results for 
Search instead for 
Did you mean: 

Driver problems: Proliant DL360 G4, RedHat and HP SCSI adapte

Nigel Allen_1
Occasional Visitor

Driver problems: Proliant DL360 G4, RedHat and HP SCSI adapte

Hi

Aplogies if this is in the wrong forum.

Last year my company installed a Proliant DL360G4 and a Smart Array 6400 with an MSA20 Starter Kit into a customer of ours The machine was configured with Redhat Enterprise Linux and has run solid as a rock up til now.

Recently we managed to persuade the customer that despite having a raid array, backing up the system was a "good idea" and we then supplied a DW028A Ultrium Drive in a 1U enclosure amd a 365289-B21 U320 SCSIO adapter (which I believe is actually an Adaptec 29320ALP-R?.

We fitted the controller and the tape unit last week but are now having a lot of problems identifying the correct driver to download and install to suit the O/S.

The machine can "see" the controller and the tape unit via the adaptec BIOS but the driver for RedHat is missing and therefore Linux cannot see the controller or tape drive. I tried to install the rpm from the web site named mptlinux-2.06.24-4.rhel3.i686.rpm but when I installed it I got the following error messages:


The running kernel (2.4.21-32.0.1.ELsmp) is not supported
by this binary RPM. Supported kernels:

2.4.21-15.0.3.EL
2.4.21-15.0.3.ELBOOT
2.4.21-15.0.3.ELhugemem
2.4.21-15.0.3.ELsmp
2.4.21-15.0.4.EL
2.4.21-15.0.4.ELBOOT
2.4.21-15.0.4.ELhugemem
2.4.21-15.0.4.ELsmp
2.4.21-15.EL
2.4.21-15.ELBOOT
2.4.21-15.ELhugemem
2.4.21-15.ELsmp
2.4.21-20.EL
2.4.21-20.ELBOOT
2.4.21-20.ELhugemem
2.4.21-20.ELsmp
2.4.21-9.0.1.EL
2.4.21-9.0.1.ELBOOT
2.4.21-9.0.1.ELhugemem
2.4.21-9.0.1.ELsmp
2.4.21-9.0.3.EL
2.4.21-9.0.3.ELBOOT
2.4.21-9.0.3.ELhugemem
2.4.21-9.0.3.ELsmp
2.4.21-9.EL
2.4.21-9.ELBOOT
2.4.21-9.ELhugemem
2.4.21-9.ELsmp
error: %preun(mptlinux-2.05.16.01-12) scriptlet failed, exit status 1

Rather than go back to an earlier kernel, I would prefer to find a driver that will work with the existing kernel (2.4.21-32.0.1.Elsmp).

1. Can anyone advise where I can find such a beast please?

2. Could anyone tell me what happens if we upgrade the kernel again after installation (or go back to an earlier kernel, install the driver and then go to a later kernel again)?

Thanks in advance for any suggestions

Nigel Allen
5 REPLIES
Alan_152
Honored Contributor

Re: Driver problems: Proliant DL360 G4, RedHat and HP SCSI adapte

The SA640x driver is native to red hat -- HP doesn't even list a linux driver for the A9899a because the native drive works pretty well. I don't know about that other card you tried to put it -- I could not find an equivalent HP part number for it. In any case, I'd think that native red hat drivers would work just fine for anything made by adaptec. I think you might have another problem.

But to overcome your current problem, you might want to consider doing your backup from a liveCD like knoppix or ubuntu. That way, you can get your system back to the way it was before you attached the backup devices and get the machine back to work.

Did you try hooking up the tape drive through the SA6400? That should work too...

Nigel Allen_1
Occasional Visitor

Re: Driver problems: Proliant DL360 G4, RedHat and HP SCSI adapte

Thanks for you input Alan - the silence was beginning to scare me a little :)

The part number 365289-B21 is an HP part number. I jammed it into the search box on the front of the web site and it took me directly to the part info. I presume it's a rebadged Adaptec card. I tried to attach the tape drive to the second channel of the 6400. Again the BIOS "saw" the tape drive but the O/S could not. I cannot believe that in 2006 it can be so @#$%^ difficult to attach a tape drive to a Linux box (it never has been before!).

I took the tape drive off the 6400 and re-attached it to the 365289-B21. Again the Adaptec bios "saw" the tape drive but the O/S could not. I tried to install a different RPM from HP's web site: mptlinux-2.06.24-4.rhel3.i686.rpm. This time the install "appeared" to go okay but after rebooting we got the same result (i.e. nothing). To add insult to injury, the rpm -e resulted in the files being removed but the additional kernel images being left behind which I had to clear up manually. We're now back at the original stage of booting the kernel vmlinux-2.4.21-32.0.1.ELsmp and still have no tape drive.

To summarise: We have a Proliant DL360G4 with a Smart Array 6400 (connected to an MSA 20) in one PCI slot. In the other slot is a 365289-B21 HP SCSI HBA with an Ultrium 448 connected. How do we get the O/S (RHEL3) to "see" the controller and tape drive.

TIA

Nigel.
Alan_152
Honored Contributor

Re: Driver problems: Proliant DL360 G4, RedHat and HP SCSI adapte

do a "modprobe sg" from command line. Sometimes that makes certain scsi devices show up better.

Also, try running this script to see if it sees all your scsi devices:

#!/bin/bash
# Skript to rescan SCSI bus, using the
# scsi add-single-device mechanism
# (w) 1998-03-19 Kurt Garloff (c) GNU GPL
# (w) 2003-07-16 Kurt Garloff (c) GNU GPL
# $Id: rescan-scsi-bus.sh,v 1.15 2004/05/08 14:47:13 garloff Exp $

setcolor ()
{
red="\e[0;31m"
green="\e[0;32m"
yellow="\e[0;33m"
norm="\e[0;0m"
}

unsetcolor ()
{
red=""; green=""
yellow=""; norm=""
}

# Return hosts. sysfs must be mounted
findhosts_26 ()
{
hosts=
if ! ls /sys/class/scsi_host/host* >/dev/null 2>&1; then
echo "No SCSI host adapters found in sysfs"
exit 1;
#hosts=" 0"
#return
fi
for hostdir in /sys/class/scsi_host/host*; do
hostno=${hostdir#/sys/class/scsi_host/host}
hostname=`cat $hostdir/proc_name`
hosts="$hosts $hostno"
echo "Host adapter $hostno ($hostname) found."
done
}

# Return hosts. /proc/scsi/HOSTADAPTER/? must exist
findhosts ()
{
hosts=
for driverdir in /proc/scsi/*; do
driver=${driverdir#/proc/scsi/}
if test $driver = scsi -o $driver = sg -o $driver = dummy -o $driver = device_info; then continue; fi
for hostdir in $driverdir/*; do
name=${hostdir#/proc/scsi/*/}
if test $name = add_map -o $name = map -o $name = mod_parm; then continue; fi
num=$name
driverinfo=$driver
if test -r $hostdir/status; then
num=$(printf '%d\n' `sed -n 's/SCSI host number://p' $hostdir/status`)
driverinfo="$driver:$name"
fi
hosts="$hosts $num"
echo "Host adapter $num ($driverinfo) found."
done
done
}

# Test if SCSI device $host $channen $id $lun exists
# Outputs description from /proc/scsi/scsi, returns new
testexist ()
{
grepstr="scsi$host Channel: 0*$channel Id: 0*$id Lun: 0*$lun"
new=`cat /proc/scsi/scsi | grep -e"$grepstr"`
if test ! -z "$new"; then
cat /proc/scsi/scsi | grep -e"$grepstr"
cat /proc/scsi/scsi | grep -A2 -e"$grepstr" | tail -n2 | pr -o4 -l1
fi
}

# Perform search (scan $host)
dosearch ()
{
for channel in $channelsearch; do
for id in $idsearch; do
for lun in $lunsearch; do
new=
devnr="$host $channel $id $lun"
echo "Scanning for device $devnr ..."
printf "${yellow}OLD: $norm"
testexist
if test ! -z "$remove" -a ! -z "$new"; then
# Device exists and we're in remove mode, so remove and readd
echo "scsi remove-single-device $devnr" >/proc/scsi/scsi
echo "scsi add-single-device $devnr" >/proc/scsi/scsi
printf "\r\x1b[A\x1b[A\x1b[A${yellow}OLD: $norm"
testexist
if test -z "$new"; then
printf "\r${red}DEL: $norm\r\n\n\n\n"; let rmvd+=1;
fi
fi
if test -z "$new"; then
# Device does not exist, try to add
printf "\r${green}NEW: $norm"
echo "scsi add-single-device $devnr" >/proc/scsi/scsi
testexist
if test -z "$new"; then
# Device not present
printf "\r\x1b[A";
# Optimization: if lun==0, stop here (only if in non-remove mode)
if test $lun = 0 -a -z "$remove" -a $optscan = 1; then
break;
fi
else
let found+=1;
fi
fi
done
done
done
}

# main
if test @$1 = @--help -o @$1 = @-h -o @$1 = @-?; then
echo "Usage: rescan-scsi-bus.sh [options] [host [host ...]]"
echo "Options:"
echo " -l activates scanning for LUNs 0-7 [default: 0]"
echo " -w scan for target device IDs 0 .. 15 [default: 0-7]"
echo " -c enables scanning of channels 0 1 [default: 0]"
echo " -r enables removing of devices [default: disabled]"
echo "--remove: same as -r"
echo "--nooptscan: don't stop looking for LUNs is 0 is not found"
echo "--color: use coloured prefixes OLD/NEW/DEL"
echo "--hosts=LIST: Scan only host(s) in LIST"
echo "--channels=LIST: Scan only channel(s) in LIST"
echo "--ids=LIST: Scan only target ID(s) in LIST"
echo "--luns=LIST: Scan only lun(s) in LIST"
echo " Host numbers may thus be specified either directly on cmd line (deprecated) or"
echo " or with the --hosts=LIST parameter (recommended)."
echo "LIST: A[-B][,C[-D]]... is a comma separated list of single values and ranges"
echo " (No spaces allowed.)"
exit 0
fi

expandlist ()
{
list=$1
result=""
first=${list%%,*}
rest=${list#*,}
while test ! -z "$first"; do
beg=${first%%-*};
if test "$beg" = "$first"; then
result="$result $beg";
else
end=${first#*-}
result="$result `seq $beg $end`"
fi
test "$rest" = "$first" && rest=""
first=${rest%%,*}
rest=${rest#*,}
done
echo $result
}

if test ! -d /proc/scsi/; then
echo "Error: SCSI subsystem not active"
exit 1
fi

# defaults
unsetcolor
lunsearch="0"
idsearch=`seq 0 7`
channelsearch="0"
remove=""
optscan=1
if test -d /sys/class/scsi_host; then
findhosts_26
else
findhosts
fi

# Scan options
opt="$1"
while test ! -z "$opt" -a -z "${opt##-*}"; do
opt=${opt#-}
case "$opt" in
l) lunsearch=`seq 0 7` ;;
w) idsearch=`seq 0 15` ;;
c) channelsearch="0 1" ;;
r) remove=1 ;;
-remove) remove=1 ;;
-hosts=*) arg=${opt#-hosts=}; hosts=`expandlist $arg` ;;
-channels=*) arg=${opt#-channels=};channelsearch=`expandlist $arg` ;;
-ids=*) arg=${opt#-ids=}; idsearch=`expandlist $arg` ;;
-luns=*) arg=${opt#-luns=}; lunsearch=`expandlist $arg` ;;
-color) setcolor ;;
-nooptscan) optscan=0 ;;
*) echo "Unknown option -$opt !" ;;
esac
shift
opt="$1"
done

# Hosts given ?
if test "@$1" != "@"; then
hosts=$*;
fi

echo "Scanning hosts $hosts channels $channelsearch for "
echo " SCSI target IDs " $idsearch ", LUNs " $lunsearch
test -z "$remove" || echo " and remove devices that have disappeared"
declare -i found=0
declare -i rmvd=0
for host in $hosts; do
dosearch;
done
echo "$found new device(s) found. "
echo "$rmvd device(s) removed. "

Nigel Allen_1
Occasional Visitor

Re: Driver problems: Proliant DL360 G4, RedHat and HP SCSI adapte

Hi Alan

Thanks again for you quick response.

Did as you suggested - nada. Here is the output of the "rescan" script:

Host adapter 0 (ata_piix) found.
Host adapter 1 (ata_piix) found.
Host adapter 2 (ide-scsi) found.
Scanning hosts 0 1 2 channels 0 for
SCSI target IDs 0 1 2 3 4 5 6 7 , LUNs 0
Scanning for device 0 0 0 0 ...
OLD: Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: Maxtor 6Y160M0 Rev: YAR5
Type: Direct-Access ANSI SCSI revision: 05
Scanning for device 1 0 0 0 ...
OLD: Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: Maxtor 6Y160M0 Rev: YAR5
Type: Direct-Access ANSI SCSI revision: 05
Scanning for device 2 0 0 0 ...
OLD: Host: scsi2 Channel: 00 Id: 00 Lun: 00
Vendor: TEAC Model: DW-224E-B Rev: C.6F
Type: CD-ROM ANSI SCSI revision: 02
0 new device(s) found. 7 0 ...
0 device(s) removed.

Looks to me like the Adaptec/HP HBA is not being see at all by the O/S. .

Nigel.

"It's gotta be something so simple"
Alan_152
Honored Contributor

Re: Driver problems: Proliant DL360 G4, RedHat and HP SCSI adapte

You sure that the differential voltages are the same between the tape device and scsi device? I know that the I/O cards you have listed are LVD. Maybe your tape drive is a DF or HVD?

Or maybe one end or the other isn't properly terminated?