xref: /csrg-svn/share/man/man4/man4.vax/uda.4 (revision 61600)
1*61600Sbostic.\" Copyright (c) 1980, 1987, 1991, 1993
2*61600Sbostic.\"	The Regents of the University of California.  All rights reserved.
320628Smckusick.\"
447674Scael.\" %sccs.include.redist.man%
520628Smckusick.\"
6*61600Sbostic.\"     @(#)uda.4	8.1 (Berkeley) 06/05/93
747674Scael.\"
847674Scael.Dd
947674Scael.Dt UDA 4 vax
1047674Scael.Os BSD 4
1147674Scael.Sh NAME
1247674Scael.Nm uda
1347674Scael.Nd
1447674Scael.Tn UDA50
1547674Scaeldisk controller interface
1647674Scael.Sh SYNOPSIS
1747674Scael.Cd "controller uda0 at uba0 csr 0172150 vector udaintr"
1847674Scael.Cd "disk ra0 at uda0 drive 0"
1947674Scael.Cd "options MSCP_PARANOIA"
2047674Scael.Sh DESCRIPTION
2147674ScaelThis is a driver for the
2247674Scael.Tn DEC UDA50
2347674Scaeldisk controller and other
2447674Scaelcompatible controllers.  The
2547674Scael.Tn UDA50
2647674Scaelcommunicates with the host through
2747674Scaela packet protocol known as the Mass Storage Control Protocol
2847674Scael.Pq Tn MSCP .
2920629SmckusickConsult the file
3047674Scael.Aq Pa vax/mscp.h
3120629Smckusickfor a detailed description of this protocol.
3247674Scael.Pp
3333442SbosticThe
3447674Scael.Nm uda
3547674Scaeldriver
3647674Scaelis a typical block-device disk driver; see
3747674Scael.Xr physio 4
3847674Scaelfor a description of block
3947674Scael.Tn I/O .
4047674ScaelThe script
4147674Scael.Xr MAKEDEV 8
4247674Scaelshould be used to create the
4347674Scael.Nm uda
4447674Scaelspecial files; should a special
4547674Scaelfile need to be created by hand, consult
4647674Scael.Xr mknod 8 .
4747674Scael.Pp
4847674ScaelThe
4947674Scael.Dv MSCP_PARANOIA
5033442Sbosticoption enables runtime checking on all transfer completion responses
5147674Scaelfrom the controller.  This increases disk
5247674Scael.Tn I/O
5347674Scaeloverhead and may
5433442Sbosticbe undesirable on slow machines, but is otherwise recommended.
5547674Scael.Pp
5634730SkarelsThe first sector of each disk contains both a first-stage bootstrap program
5734730Skarelsand a disk label containing geometry information and partition layouts (see
5847674Scael.Xr disklabel 5 ) .
5934730SkarelsThis sector is normally write-protected, and disk-to-disk copies should
6034730Skarelsavoid copying this sector.
6134730SkarelsThe label may be updated with
6247674Scael.Xr disklabel 8 ,
6334730Skarelswhich can also be used to write-enable and write-disable the sector.
6434730SkarelsThe next 15 sectors contain a second-stage bootstrap program.
6547674Scael.Sh DISK SUPPORT
6634730SkarelsDuring autoconfiguration,
6734730Skarelsas well as when a drive is opened after all partitions are closed,
6834730Skarelsthe first sector of the drive is examined for a disk label.
6934730SkarelsIf a label is found, the geometry of the drive and the partition tables
7034730Skarelsare taken from it.
7134730SkarelsIf no label is found,
7234730Skarelsthe driver configures the type of each drive when it is first
7333442Sbosticencountered.  A default partition table in the driver is used for each type
7433442Sbosticof disk when a pack is not labelled.  The origin and size
7533442Sbostic(in sectors) of the default pseudo-disks on each
7632527Sbosticdrive are shown below.  Not all partitions begin on cylinder
7732527Sbosticboundaries, as on other drives, because previous drivers used one
7832527Sbosticpartition table for all drive types.  Variants of the partition tables
7932527Sbosticare common; check the driver and the file
8047674Scael.Pa /etc/disktab
8147674Scael.Pq Xr disktab 5
8228257Skarelsfor other possibilities.
8347674Scael.Pp
8447674ScaelSpecial file names begin with
8547674Scael.Sq Li ra
8647674Scaeland
8747674Scael.Sq Li rra
8847674Scaelfor the block and character files respectively. The second
8947674Scaelcomponent of the name, a drive unit number in the range of zero to
9047674Scaelseven, is represented by a
9147674Scael.Sq Li ?
9247674Scaelin the disk layouts below. The last component of the name is the
9347674Scaelfile system partition
9447674Scaeldesignated
9547674Scaelby a letter from
9647674Scael.Sq Li a
9747674Scaelto
9847674Scael.Sq Li h
9947674Scaeland which corresponds to a minor device number set: zero to seven,
10047674Scaeleight to 15, 16 to 23 and so forth for drive zero, drive two and drive
10147674Scaelthree respectively, (see
10247674Scael.Xr physio 4) .
10347674ScaelThe location and size (in sectors) of the partitions:
10447674Scael.Bl -column header diskx undefined length
10547674Scael.Tn RA60 No partitions
10647674Scael.Sy	disk	start	length
10720629Smckusick	ra?a	0	15884
10820629Smckusick	ra?b	15884	33440
10920629Smckusick	ra?c	0	400176
11028257Skarels	ra?d	49324	82080	same as 4.2BSD ra?g
11128257Skarels	ra?e	131404	268772	same as 4.2BSD ra?h
11228257Skarels	ra?f	49324	350852
11328257Skarels	ra?g	242606	157570
11428257Skarels	ra?h	49324	193282
11547674Scael
11647674Scael.Tn RA70 No partitions
11747674Scael.Sy	disk	start	length
11833442Sbostic	ra?a	0	15884
11933442Sbostic	ra?b	15972	33440
12033442Sbostic	ra?c	0	547041
12133442Sbostic	ra?d	34122	15884
12233442Sbostic	ra?e	357192	55936
12333442Sbostic	ra?f	413457	133584
12433442Sbostic	ra?g	341220	205821
12533442Sbostic	ra?h	49731	29136
12647674Scael
12747674Scael.Tn RA80 No partitions
12847674Scael.Sy	disk	start	length
12920629Smckusick	ra?a	0	15884
13020629Smckusick	ra?b	15884	33440
13120629Smckusick	ra?c	0	242606
13228257Skarels	ra?e	49324	193282	same as old Berkeley ra?g
13328257Skarels	ra?f	49324	82080	same as 4.2BSD ra?g
13428257Skarels	ra?g	49910	192696
13528257Skarels	ra?h	131404	111202	same as 4.2BSD
13647674Scael
13747674Scael.Tn RA81 No partitions
13847674Scael.Sy	disk	start	length
13920629Smckusick	ra?a	0	15884
14028257Skarels	ra?b	16422	66880
14120629Smckusick	ra?c	0	891072
14228257Skarels	ra?d	375564	15884
14328257Skarels	ra?e	391986	307200
14428257Skarels	ra?f	699720	191352
14528257Skarels	ra?g	375564	515508
14628257Skarels	ra?h	83538	291346
14747674Scael
14847674Scael.Tn RA81 No partitions with 4.2BSD-compatible partitions
14947674Scael.Sy	disk	start	length
15028257Skarels	ra?a	0	15884
15128257Skarels	ra?b	16422	66880
15228257Skarels	ra?c	0	891072
15328257Skarels	ra?d	49324	82080	same as 4.2BSD ra?g
15428257Skarels	ra?e	131404	759668	same as 4.2BSD ra?h
15528257Skarels	ra?f	412490	478582	same as 4.2BSD ra?f
15628257Skarels	ra?g	375564	515508
15728257Skarels	ra?h	83538	291346
15847674Scael
15947674Scael.Tn RA82 No partitions
16047674Scael.Sy	disk	start	length
16133442Sbostic	ra?a	0	15884
16233442Sbostic	ra?b	16245	66880
16333442Sbostic	ra?c	0	1135554
16433442Sbostic	ra?d	375345	15884
16533442Sbostic	ra?e	391590	307200
16633442Sbostic	ra?f	669390	466164
16733442Sbostic	ra?g	375345	760209
16833442Sbostic	ra?h	83790	291346
16947674Scael.El
17047674Scael.Pp
17132527SbosticThe ra?a partition is normally used for the root file system, the ra?b
17232527Sbosticpartition as a paging area, and the ra?c partition for pack-pack
17332527Sbosticcopying (it maps the entire disk).
17447674Scael.Sh FILES
17547674Scael.Bl -tag -width /dev/rra[0-9][a-f] -compact
17647674Scael.It Pa /dev/ra[0-9][a-f]
17747674Scael.It Pa /dev/rra[0-9][a-f]
17847674Scael.El
17947674Scael.Sh DIAGNOSTICS
18047674Scael.Bl -diag
18147674Scael.It "panic: udaslave"
18232527SbosticNo command packets were available while the driver was looking
18332527Sbosticfor disk drives.  The controller is not extending enough credits
18432527Sbosticto use the drives.
18547674Scael.Pp
18647674Scael.It "uda%d: no response to Get Unit Status request"
18732527SbosticA disk drive was found, but did not respond to a status request.
18832527SbosticThis is either a hardware problem or someone pulling unit number
18932527Sbosticplugs very fast.
19047674Scael.Pp
19147674Scael.It "uda%d: unit %d off line"
19232527SbosticWhile searching for drives, the controller found one that
19332527Sbosticseems to be manually disabled.  It is ignored.
19447674Scael.Pp
19547674Scael.It "uda%d: unable to get unit status"
19632527SbosticSomething went wrong while trying to determine the status of
19732527Sbostica disk drive.  This is followed by an error detail.
19847674Scael.Pp
19947674Scael.It uda%d: unit %d, next %d
20032527SbosticThis probably never happens, but I wanted to know if it did.  I
20132527Sbostichave no idea what one should do about it.
20247674Scael.Pp
20347674Scael.It "uda%d: cannot handle unit number %d (max is %d)"
20432527SbosticThe controller found a drive whose unit number is too large.
20532527SbosticValid unit numbers are those in the range [0..7].
20647674Scael.Pp
20747674Scael.It "ra%d: don't have a partition table for %s; using (s,t,c)=(%d,%d,%d)"
20833442SbosticThe controller found a drive whose media identifier (e.g. `RA 25')
20933442Sbosticdoes not have a default partition table.  A temporary partition
21033442Sbostictable containing only an `a' partition has been created covering
21133442Sbosticthe entire disk, which has the indicated numbers of sectors per
21233442Sbostictrack (s), tracks per cylinder (t), and total cylinders (c).
21333442SbosticGive the pack a label with the
21447674Scael.Xr disklabel
21533442Sbosticutility.
21647674Scael.Pp
21747674Scael.It "uda%d: uballoc map failed"
21832527SbosticUnibus resource map allocation failed during initialisation.  This
21932527Sbosticcan only happen if you have 496 devices on a Unibus.
22047674Scael.Pp
22147674Scael.It uda%d: timeout during init
22232527SbosticThe controller did not initialise within ten seconds.  A hardware
22332527Sbosticproblem, but it sometimes goes away if you try again.
22447674Scael.Pp
22547674Scael.It uda%d: init failed, sa=%b
22632527SbosticThe controller refused to initalise.
22747674Scael.Pp
22847674Scael.It uda%d: controller hung
22932527SbosticThe controller never finished initialisation.  Retrying may sometimes
23032527Sbosticfix it.
23147674Scael.Pp
23247674Scael.It ra%d: drive will not come on line
23332527SbosticThe drive will not come on line, probably because it is spun down.
23432527SbosticThis should be preceded by a message giving details as to why the
23532527Sbosticdrive stayed off line.
23647674Scael.Pp
23747674Scael.It uda%d: still hung
23832527SbosticWhen the controller hangs, the driver occasionally tries to reinitialise
23932527Sbosticit.  This means it just tried, without success.
24047674Scael.Pp
24147674Scael.It panic: udastart: bp==NULL
24232527SbosticA bug in the driver has put an empty drive queue on a controller queue.
24347674Scael.Pp
24447674Scael.It uda%d: command ring too small
24547674ScaelIf you increase
24647674Scael.Dv NCMDL2 ,
24747674Scaelyou may see a performance improvement.
24847674Scael(See
24947674Scael.Pa /sys/vaxuba/uda.c . )
25047674Scael.Pp
25147674Scael.It panic: udastart
25232527SbosticA drive was found marked for status or on-line functions while performing
25332527Sbosticstatus or on-line functions.  This indicates a bug in the driver.
25447674Scael.Pp
25547674Scael.It "uda%d: controller error, sa=0%o (%s)"
25633442SbosticThe controller reported an error.  The error code is printed in
25733442Sbosticoctal, along with a short description if the code is known (see the
25847674Scael.%T UDA50 Maintenance Guide ,
25947674Scael.Tn DEC
26047674Scaelpart number
26147674Scael.Tn AA-M185B-TC ,
26247674Scaelpp. 18-22).
26333442SbosticIf this occurs during normal
26447674Scaeloperation, the driver will reset it and retry pending
26547674Scael.Tn I/O .
26647674ScaelIf
26733442Sbosticit occurs during configuration, the controller may be ignored.
26847674Scael.Pp
26947674Scael.It uda%d: stray intr
27032527SbosticThe controller interrupted when it should have stayed quiet.  The
27132527Sbosticinterrupt has been ignored.
27247674Scael.Pp
27347674Scael.It "uda%d: init step %d failed, sa=%b"
27432527SbosticThe controller reported an error during the named initialisation step.
27532527SbosticThe driver will retry initialisation later.
27647674Scael.Pp
27747674Scael.It uda%d: version %d model %d
27832527SbosticAn informational message giving the revision level of the controller.
27947674Scael.Pp
28047674Scael.It uda%d: DMA burst size set to %d
28147674ScaelAn informational message showing the
28247674Scael.Tn DMA
28347674Scaelburst size, in words.
28447674Scael.Pp
28547674Scael.It panic: udaintr
28647674ScaelIndicates a bug in the generic
28747674Scael.Tn MSCP
28847674Scaelcode.
28947674Scael.Pp
29047674Scael.It uda%d: driver bug, state %d
29132527SbosticThe driver has a bogus value for the controller state.  Something
29232527Sbosticis quite wrong.  This is immediately followed by a `panic: udastate'.
29347674Scael.Pp
29447674Scael.It uda%d: purge bdp %d
29532527SbosticA benign message tracing BDP purges.  I have been trying to figure
29632527Sbosticout what BDP purges are for.  You might want to comment out this
29732527Sbosticcall to log() in /sys/vaxuba/uda.c.
29847674Scael.Pp
29947674Scael.It uda%d: SETCTLRC failed:  `detail'
30032527SbosticThe Set Controller Characteristics command (the last part of the
30132527Sbosticcontroller initialisation sequence) failed.  The
30247674Scael.Em detail
30332527Sbosticmessage tells why.
30447674Scael.Pp
30547674Scael.It "uda%d: attempt to bring ra%d on line failed:  `detail'"
30632527SbosticThe drive could not be brought on line.  The
30747674Scael.Em detail
30832527Sbosticmessage tells why.
30947674Scael.Pp
31047674Scael.It uda%d: ra%d: unknown type %d
31132527SbosticThe type index of the named drive is not known to the driver, so the
31232527Sbosticdrive will be ignored.
31347674Scael.Pp
31447674Scael.It "ra%d: changed types! was %d now %d"
31547674ScaelA drive somehow changed from one kind to another, e.g., from an
31647674Scael.Tn RA80
31747674Scaelto an
31847674Scael.Tn RA60 .
31947674ScaelThe numbers printed are the encoded media identifiers (see
32047674Scael.Ao Pa vax/mscp.h Ac
32133442Sbosticfor the encoding).
32233442SbosticThe driver believes the new type.
32347674Scael.Pp
32447674Scael.It "ra%d: uda%d, unit %d, size = %d sectors"
32533442SbosticThe named drive is on the indicated controller as the given unit,
32633442Sbosticand has that many sectors of user-file area.  This is printed
32733442Sbosticduring configuration.
32847674Scael.Pp
32947674Scael.It "uda%d: attempt to get status for ra%d failed:  `detail'"
33032527SbosticA status request failed.  The
33147674Scael.Em detail
33232527Sbosticmessage should tell why.
33347674Scael.Pp
33447674Scael.It ra%d: bad block report: %d
33532527SbosticThe drive has reported the given block as bad.  If there are multiple
33632527Sbosticbad blocks, the drive will report only the first; in this case this
33747674Scaelmessage will be followed by `+ others'.  Get
33847674Scael.Tn DEC
33947674Scaelto forward the
34047674Scaelblock with
34147674Scael.Tn EVRLK .
34247674Scael.Pp
34347674Scael.It ra%d: serious exception reported
34432527SbosticI have no idea what this really means.
34547674Scael.Pp
34647674Scael.It panic: udareplace
34747674ScaelThe controller reported completion of a
34847674Scael.Tn REPLACE
34947674Scaeloperation.  The
35047674Scaeldriver never issues any
35147674Scael.Tn REPLACE Ns s ,
35247674Scaelso something is wrong.
35347674Scael.Pp
35447674Scael.It panic: udabb
35547674ScaelThe controller reported completion of bad block related
35647674Scael.Tn I/O .
35747674ScaelThe
35832527Sbosticdriver never issues any such, so something is wrong.
35947674Scael.Pp
36047674Scael.It uda%d: lost interrupt
36132527SbosticThe controller has gone out to lunch, and is being reset to try to bring
36232527Sbosticit back.
36347674Scael.Pp
36447674Scael.It panic: mscp_go: AEB_MAX_BP too small
36547674ScaelYou defined
36647674Scael.Dv AVOID_EMULEX_BUG
36747674Scaeland increased
36847674Scael.Dv NCMDL2
36947674Scaeland Emulex has
37047674Scaelnew firmware.  Raise
37147674Scael.Dv AEB_MAX_BP
37247674Scaelor turn off
37347674Scael.Dv AVOID_EMULEX_BUG .
37447674Scael.Pp
37547674Scael.It "uda%d: unit %d: unknown message type 0x%x ignored"
37632527SbosticThe controller responded with a mysterious message type. See
37747674Scael.Pa /sys/vax/mscp.h
37847674Scaelfor a list of known message types.  This is probably
37932527Sbostica controller hardware problem.
38047674Scael.Pp
38147674Scael.It "uda%d: unit %d out of range"
38232527SbosticThe disk drive unit number (the unit plug) is higher than the
38332527Sbosticmaximum number the driver allows (currently 7).
38447674Scael.Pp
38547674Scael.It "uda%d: unit %d not configured, message ignored"
38632527SbosticThe named disk drive has announced its presence to the controller,
38732527Sbosticbut was not, or cannot now be, configured into the running system.
38847674Scael.Em Message
38932527Sbosticis one of `available attention' (an `I am here' message) or
39032527Sbostic`stray response op 0x%x status 0x%x' (anything else).
39147674Scael.Pp
39247674Scael.It ra%d: bad lbn (%d)?
39332527SbosticThe drive has reported an invalid command error, probably due to an
39432527Sbosticinvalid block number.  If the lbn value is very much greater than the
39532527Sbosticsize reported by the drive, this is the problem.  It is probably due to
39632527Sbostican improperly configured partition table.  Other invalid commands
39732527Sbosticindicate a bug in the driver, or hardware trouble.
39847674Scael.Pp
39947674Scael.It ra%d: duplicate ONLINE ignored
40032527SbosticThe drive has come on-line while already on-line.  This condition
40132527Sbosticcan probably be ignored (and has been).
40247674Scael.Pp
40347674Scael.It ra%d: io done, but no buffer?
40447674ScaelHardware trouble, or a bug; the drive has finished an
40547674Scael.Tn I/O
40647674Scaelrequest,
40732527Sbosticbut the response has an invalid (zero) command reference number.
40847674Scael.Pp
40947674Scael.It "Emulex SC41/MS screwup: uda%d, got %d correct, then changed 0x%x to 0x%x"
41047674ScaelYou turned on
41147674Scael.Dv AVOID_EMULEX_BUG ,
41247674Scaeland the driver successfully
41332527Sbosticavoided the bug.  The number of correctly-handled requests is
41432527Sbosticreported, along with the expected and actual values relating to
41532527Sbosticthe bug being avoided.
41647674Scael.Pp
41747674Scael.It panic: unrecoverable Emulex screwup
41847674ScaelYou turned on
41947674Scael.Dv AVOID_EMULEX_BUG ,
42047674Scaelbut Emulex was too clever and
42147674Scaelavoided the avoidance.  Try turning on
42247674Scael.Dv MSCP_PARANOIA
42347674Scaelinstead.
42447674Scael.Pp
42547674Scael.It uda%d: bad response packet ignored
42647674ScaelYou turned on
42747674Scael.Dv MSCP_PARANOIA ,
42847674Scaeland the driver caught the controller in
42932527Sbostica lie.  The lie has been ignored, and the controller will soon be
43032527Sbosticreset (after a `lost' interrupt).  This is followed by a hex dump of
43132527Sbosticthe offending packet.
43247674Scael.Pp
43347674Scael.It ra%d: bogus REPLACE end
43432527SbosticThe drive has reported finishing a bad sector replacement, but the
43532527Sbosticdriver never issues bad sector replacement commands.  The report
43632527Sbosticis ignored.  This is likely a hardware problem.
43747674Scael.Pp
43847674Scael.It "ra%d: unknown opcode 0x%x status 0x%x ignored"
43932527SbosticThe drive has reported something that the driver cannot understand.
44047674ScaelPerhaps
44147674Scael.Tn DEC
44247674Scaelhas been inventive, or perhaps your hardware is ill.
44332527SbosticThis is followed by a hex dump of the offending packet.
44447674Scael.Pp
44547674Scael.It "ra%d%c: hard error %sing fsbn %d [of %d-%d] (ra%d bn %d cn %d tn %d sn %d)."
44634730SkarelsAn unrecoverable error occurred during transfer of the specified
44734730Skarelsfilesystem block number(s),
44834730Skarelswhich are logical block numbers on the indicated partition.
44934730SkarelsIf the transfer involved multiple blocks, the block range is printed as well.
45034730SkarelsThe parenthesized fields list the actual disk sector number
45134730Skarelsrelative to the beginning of the drive,
45234730Skarelsas well as the cylinder, track and sector number of the block.
45347674Scael.Pp
45447674Scael.It uda%d: %s error datagram
45532527SbosticThe controller has reported some kind of error, either `hard'
45632527Sbostic(unrecoverable) or `soft' (recoverable).  If the controller is going on
45732527Sbostic(attempting to fix the problem), this message includes the remark
45832527Sbostic`(continuing)'.  Emulex controllers wrongly claim that all soft errors
45932527Sbosticare hard errors.  This message may be followed by
46032527Sbosticone of the following 5 messages, depending on its type, and will always
46132527Sbosticbe followed by a failure detail message (also listed below).
46247674Scael.Bd -filled -offset indent
46347674Scael.It memory addr 0x%x
46432527SbosticA host memory access error; this is the address that could not be
46532527Sbosticread.
46647674Scael.Pp
46747674Scael.It "unit %d: level %d retry %d, %s %d"
46832527SbosticA typical disk error; the retry count and error recovery levels are
46932527Sbosticprinted, along with the block type (`lbn', or logical block; or `rbn',
47047674Scaelor replacement block) and number.  If the string is something else,
47147674Scael.Tn DEC
47232527Sbostichas been clever, or your hardware has gone to Australia for vacation
47332527Sbostic(unless you live there; then it might be in New Zealand, or Brazil).
47447674Scael.Pp
47547674Scael.It unit %d: %s %d
47632527SbosticAlso a disk error, but an `SDI' error, whatever that is.  (I doubt
47732527Sbosticit has anything to do with Ronald Reagan.)  This lists the block
47833442Sbostictype (`lbn' or `rbn') and number.  This is followed by a second
47933442Sbosticmessage indicating a microprocessor error code and a front panel
48033442Sbosticcode.  These latter codes are drive-specific, and are intended to
48133442Sbosticbe used by field service as an aid in locating failing hardware.
48233442SbosticThe codes for RA81s can be found in the
48347674Scael.%T RA81 Maintenance Guide ,
48433442SbosticDEC order number AA-M879A-TC, in appendices E and F.
48547674Scael.Pp
48647674Scael.It "unit %d: small disk error, cyl %d"
48732527SbosticYet another kind of disk error, but for small disks.  (`That's what
48832527Sbosticit says, guv'nor.  Dunnask me what it means.')
48947674Scael.Pp
49047674Scael.It "unit %d: unknown error, format 0x%x"
49132527SbosticA mysterious error: the given format code is not known.
49247674Scael.Ed
49347674Scael.Pp
49432527SbosticThe detail messages are as follows:
49547674Scael.Bd -filled -offset indent
49647674Scael.It success (%s) (code 0, subcode %d)
49732527SbosticEverything worked, but the controller thought it would let you know
49832527Sbosticthat something went wrong.  No matter what subcode, this can probably
49932527Sbosticbe ignored.
50047674Scael.Pp
50147674Scael.It "invalid command (%s) (code 1, subcode %d)"
50232527SbosticThis probably cannot occur unless the hardware is out; %s should be
50332527Sbostic`invalid msg length', meaning some command was too short or too long.
50447674Scael.Pp
50547674Scael.It "command aborted (unknown subcode) (code 2, subcode %d)"
50632527SbosticThis should never occur, as the driver never aborts commands.
50747674Scael.Pp
50847674Scael.It "unit offline (%s) (code 3, subcode %d)"
50932527SbosticThe drive is offline, either because it is not around (`unknown
51032527Sbosticdrive'), stopped (`not mounted'), out of order (`inoperative'), has the
51132527Sbosticsame unit number as some other drive (`duplicate'), or has been
51232527Sbosticdisabled for diagnostics (`in diagnosis').
51347674Scael.Pp
51447674Scael.It "unit available (unknown subcode) (code 4, subcode %d)"
51532527SbosticThe controller has decided to report a perfectly normal event as
51632527Sbostican error.  (Why?)
51747674Scael.Pp
51847674Scael.It "media format error (%s) (code 5, subcode %d)"
51932527SbosticThe drive cannot be used without reformatting.  The Format Control
52032527SbosticTable cannot be read (`fct unread - edc'), there is a bad sector
52132527Sbosticheader (`invalid sector header'), the drive is not set for 512-byte
52232527Sbosticsectors (`not 512 sectors'), the drive is not formatted (`not formatted'),
52347674Scaelor the
52447674Scael.Tn FCT
52547674Scaelhas an uncorrectable
52647674Scael.Tn ECC
52747674Scaelerror (`fct ecc').
52847674Scael.Pp
52947674Scael.It "write protected (%s) (code 6, subcode %d)"
53032527SbosticThe drive is write protected, either by the front panel switch
53132527Sbostic(`hardware') or via the driver (`software').  The driver never
53232527Sbosticsets software write protect.
53347674Scael.Pp
53447674Scael.It "compare error (unknown subcode) (code 7, subcode %d)"
53532527SbosticA compare operation showed some sort of difference.  The driver
53632527Sbosticnever uses compare operations.
53747674Scael.Pp
53847674Scael.It "data error (%s) (code 7, subcode %d)"
53932527SbosticSomething went wrong reading or writing a data sector.  A `forced
54032527Sbosticerror' is a software-asserted error used to mark a sector that contains
54132527Sbosticsuspect data.  Rewriting the sector will clear the forced error.  This
54232527Sbosticis normally set only during bad block replacment, and the driver does
54332527Sbosticno bad block replacement, so these should not occur.  A `header
54432527Sbosticcompare' error probably means the block is shot.  A `sync timeout'
54532527Sbosticpresumably has something to do with sector synchronisation.
54632527SbosticAn `uncorrectable ecc' error is an ordinary data error that cannot
54747674Scaelbe fixed via
54847674Scael.Tn ECC
54947674Scaellogic.  A `%d symbol ecc' error is a data error
55047674Scaelthat can be (and presumably has been) corrected by the
55147674Scael.Tn ECC
55247674Scaellogic.
55332527SbosticIt might indicate a sector that is imperfect but usable, or that
55432527Sbosticis starting to go bad.  If any of these errors recur, the sector
55532527Sbosticmay need to be replaced.
55647674Scael.Pp
55747674Scael.It "host buffer access error (%s) (code %d, subcode %d)"
55832527SbosticSomething went wrong while trying to copy data to or from the host
55932527Sbostic(Vax).  The subcode is one of `odd xfer addr', `odd xfer count',
56032527Sbostic`non-exist. memory', or `memory parity'.  The first two could be a
56132527Sbosticsoftware glitch; the last two indicate hardware problems.
56247674Scael.It controller error (%s) (code %d, subcode %d)
56332527SbosticThe controller has detected a hardware error in itself.  A
56432527Sbostic`serdes overrun' is a serialiser / deserialiser overrun; `edc'
56532527Sbosticprobably stands for `error detection code'; and `inconsistent
56632527Sbosticinternal data struct' is obvious.
56747674Scael.Pp
56847674Scael.It "drive error (%s) (code %d, subcode %d)"
56932527SbosticEither the controller or the drive has detected a hardware error
57032527Sbosticin the drive.  I am not sure what an `sdi command timeout' is, but
57132527Sbosticthese seem to occur benignly on occasion.  A `ctlr detected protocol'
57232527Sbosticerror means that the controller and drive do not agree on a protocol;
57332527Sbosticthis could be a cabling problem, or a version mismatch.  A `positioner'
57432527Sbosticerror means the drive seek hardware is ailing; `lost rd/wr ready'
57532527Sbosticmeans the drive read/write logic is sick; and `drive clock dropout'
57632527Sbosticmeans that the drive clock logic is bad, or the media is hopelessly
57732527Sbosticscrambled.  I have no idea what `lost recvr ready' means.  A `drive
57832527Sbosticdetected error' is a catch-all for drive hardware trouble; `ctlr
57932527Sbosticdetected pulse or parity' errors are often caused by cabling problems.
58047674Scael.Ed
58147674Scael.El
58247674Scael.Sh SEE ALSO
58347674Scael.Xr disklabel 5 ,
58447674Scael.Xr disklabel 8
58547674Scael.Sh HISTORY
58647674ScaelThe
58747674Scael.Nm
58847674Scaeldriver appeared in
58947674Scael.Bx 4.2 .
590