Subject: kern/7300: 'chio ielem' does not work well
To: None <gnats-bugs@gnats.netbsd.org>
From: None <woods@mail.weird.com>
List: netbsd-bugs
Date: 04/01/1999 19:02:04
>Number: 7300
>Category: kern
>Synopsis: 'chio ielem' does not work well
>Confidential: no
>Severity: non-critical
>Priority: high
>Responsible: kern-bug-people (Kernel Bug People)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu Apr 1 16:05:00 1999
>Last-Modified:
>Originator: Greg A. Woods
>Organization:
Planix, Inc.; Toronto, Ontario; Canada
>Release: NetBSD-1.3.3
>Environment:
System: NetBSD 1.3.3 i386
>Description:
I've been trying to get an Exabyte 10e tape changer library
(with an EXB-8505XL tape drive) working for a client, but so far
I've encountered more frustration than success (though I must
say I am extremely happy that it was merely a matter of plugging
the thing in and issuing simple "chio" commands to load and
unload tapes, etc.! Yeah NetBSD! Yeah robotics and automation!).
When the device boots it reports, if you're lucky, that all
slots and drives as accessable, but are in the "abnormal"
<EXCEPT> state:
17:31 [735] # chio status
picker 0:
slot 0: <ACCESS,EXCEPT>
slot 1: <ACCESS,EXCEPT>
slot 2: <ACCESS,EXCEPT>
slot 3: <ACCESS,EXCEPT>
slot 4: <ACCESS,EXCEPT>
slot 5: <ACCESS,EXCEPT>
slot 6: <ACCESS,EXCEPT>
slot 7: <ACCESS,EXCEPT>
slot 8: <ACCESS,EXCEPT>
slot 9: <ACCESS,EXCEPT>
drive 0: <ACCESS>
Unforunately there doesn't seem to be an easy way to get the
library to check the status of the tape slots when it's
rebooted, and the "chio" command that I thought would do the
trick (chio ielem) only causes the following errors:
17:52 [755] # chio ielem
chio: /dev/ch0: CHIOIELEM: Input/output error
ch0(ahc1:4:0): timed out in dataout phase, SCSISIGI == 0x0
ch0(ahc1:4:0): BUS DEVICE RESET message queued.
Bus Device Reset Message Sent
ch0(ahc1:4:0): Bus Device Reset delivered. 1 SCBs aborted
So far as I can tell the library is properly configured and
there's no obvious option in its configuration to force it to do
a status check on restart (the manual says this is something the
driver or application must do). It is possible that these
problems are due to the rather old firmware in it, and perhaps
we should try updating it.... (and the drive too?). I don't
expect this is a 1.3.3 issue, but I've not had a chance to plug
the library into a -current system to prove it.
FYI the 1.3.3 kernel device probes report: (these are the only
devices on the second host adapter)
ahc1 at pci1 dev 7 function 0
ahc1: interrupting at irq 10
ahc1: aic7870 Single Channel, SCSI Id=7, 16 SCBs
scsibus1 at ahc1 channel 0: 8 targets
ahc1: target 3 synchronous at 5.0MHz, offset = 0xb
st0 at scsibus1 targ 3 lun 0: <EXABYTE, EXB-85058SQANXR1, 0781> SCSI2 1/sequential removable
st0: drive empty
ch0 at scsibus1 targ 4 lun 0: <EXABYTE, EXB-10e, 1.5> SCSI2 8/changer removable
ch0: 10 slots, 1 drive, 1 picker, 0 portals
Also I often get the following (either from chio or from
amanda's chg-scsi):
ch0(ahc1:4:0): Check Condition on opcode 0xa5
SENSE KEY: Illegal Request
ASC/ASCQ: ASC 0x3b ASCQ 0x83
ch0(ahc1:4:0): Check Condition on opcode 0xa5
SENSE KEY: Illegal Request
ASC/ASCQ: ASC 0x3b ASCQ 0x84
FYI the 1.3.3 kernel is also very verbose about things it
probably shouldn't even bother printing (but I think this issue
has already been discussed, and may already be corrected for
1.4):
st0(ahc1:3:0): Check Condition on opcode 0x0
SENSE KEY: Not Ready
ASC/ASCQ: Logical Unit Is in Process Of Becoming Ready
st0(ahc1:3:0): Check Condition on opcode 0x0
SENSE KEY: Not Ready
ASC/ASCQ: Logical Unit Is in Process Of Becoming Ready
st0(ahc1:3:0): Check Condition on opcode 0x0
SENSE KEY: Not Ready
ASC/ASCQ: Logical Unit Is in Process Of Becoming Ready
st0(ahc1:3:0): Check Condition on opcode 0x0
SENSE KEY: Not Ready
ASC/ASCQ: Logical Unit Is in Process Of Becoming Ready
st0(ahc1:3:0): Check Condition on opcode 0x0
SENSE KEY: Not Ready
EOM Detected
ASC/ASCQ: Logical Unit Is in Process Of Becoming Ready
st0(ahc1:3:0): Check Condition on opcode 0x8
SENSE KEY: Blank Check
EOM Detected
INFO FIELD: 32768
ASC/ASCQ: End-Of-Data Detected
>How-To-Repeat:
run "chio ielem" with /dev/ch0 connected to an Exabyte-10e
library.
>Fix:
unknown.
Workaround:
for tslot in 0 1 2 3 4 5 6 7 8 9 ; do
chio move slot $tslot drive 0
sleep 90
eject /dev/rst0
sleep 10
chio move drive 0 slot $tslot
done
...and wait, and wait, and wait some more.... :-)
Possibly better idea:
only move slots which are in the <ACCESS,EXCEPT> status....
Should also fix Amanda's chg-scsi to assume the best if the slot
status is <ACCESS,EXCEPT> too (it currently considers the slot
is empty and won't even try to move the "phantom" tape to the
drive and see if anything gets loaded).
>Audit-Trail:
>Unformatted: