1*47674Scael.\" Copyright (c) 1980, 1987, 1991 Regents of the University of California. 2*47674Scael.\" All rights reserved. 320628Smckusick.\" 4*47674Scael.\" %sccs.include.redist.man% 520628Smckusick.\" 6*47674Scael.\" @(#)uda.4 6.6 (Berkeley) 03/27/91 7*47674Scael.\" 8*47674Scael.Dd 9*47674Scael.Dt UDA 4 vax 10*47674Scael.Os BSD 4 11*47674Scael.Sh NAME 12*47674Scael.Nm uda 13*47674Scael.Nd 14*47674Scael.Tn UDA50 15*47674Scaeldisk controller interface 16*47674Scael.Sh SYNOPSIS 17*47674Scael.Cd "controller uda0 at uba0 csr 0172150 vector udaintr" 18*47674Scael.Cd "disk ra0 at uda0 drive 0" 19*47674Scael.Cd "options MSCP_PARANOIA" 20*47674Scael.Sh DESCRIPTION 21*47674ScaelThis is a driver for the 22*47674Scael.Tn DEC UDA50 23*47674Scaeldisk controller and other 24*47674Scaelcompatible controllers. The 25*47674Scael.Tn UDA50 26*47674Scaelcommunicates with the host through 27*47674Scaela packet protocol known as the Mass Storage Control Protocol 28*47674Scael.Pq Tn MSCP . 2920629SmckusickConsult the file 30*47674Scael.Aq Pa vax/mscp.h 3120629Smckusickfor a detailed description of this protocol. 32*47674Scael.Pp 3333442SbosticThe 34*47674Scael.Nm uda 35*47674Scaeldriver 36*47674Scaelis a typical block-device disk driver; see 37*47674Scael.Xr physio 4 38*47674Scaelfor a description of block 39*47674Scael.Tn I/O . 40*47674ScaelThe script 41*47674Scael.Xr MAKEDEV 8 42*47674Scaelshould be used to create the 43*47674Scael.Nm uda 44*47674Scaelspecial files; should a special 45*47674Scaelfile need to be created by hand, consult 46*47674Scael.Xr mknod 8 . 47*47674Scael.Pp 48*47674ScaelThe 49*47674Scael.Dv MSCP_PARANOIA 5033442Sbosticoption enables runtime checking on all transfer completion responses 51*47674Scaelfrom the controller. This increases disk 52*47674Scael.Tn I/O 53*47674Scaeloverhead and may 5433442Sbosticbe undesirable on slow machines, but is otherwise recommended. 55*47674Scael.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 58*47674Scael.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 62*47674Scael.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. 65*47674Scael.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 80*47674Scael.Pa /etc/disktab 81*47674Scael.Pq Xr disktab 5 8228257Skarelsfor other possibilities. 83*47674Scael.Pp 84*47674ScaelSpecial file names begin with 85*47674Scael.Sq Li ra 86*47674Scaeland 87*47674Scael.Sq Li rra 88*47674Scaelfor the block and character files respectively. The second 89*47674Scaelcomponent of the name, a drive unit number in the range of zero to 90*47674Scaelseven, is represented by a 91*47674Scael.Sq Li ? 92*47674Scaelin the disk layouts below. The last component of the name is the 93*47674Scaelfile system partition 94*47674Scaeldesignated 95*47674Scaelby a letter from 96*47674Scael.Sq Li a 97*47674Scaelto 98*47674Scael.Sq Li h 99*47674Scaeland which corresponds to a minor device number set: zero to seven, 100*47674Scaeleight to 15, 16 to 23 and so forth for drive zero, drive two and drive 101*47674Scaelthree respectively, (see 102*47674Scael.Xr physio 4) . 103*47674ScaelThe location and size (in sectors) of the partitions: 104*47674Scael.Bl -column header diskx undefined length 105*47674Scael.Tn RA60 No partitions 106*47674Scael.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 115*47674Scael 116*47674Scael.Tn RA70 No partitions 117*47674Scael.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 126*47674Scael 127*47674Scael.Tn RA80 No partitions 128*47674Scael.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 136*47674Scael 137*47674Scael.Tn RA81 No partitions 138*47674Scael.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 147*47674Scael 148*47674Scael.Tn RA81 No partitions with 4.2BSD-compatible partitions 149*47674Scael.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 158*47674Scael 159*47674Scael.Tn RA82 No partitions 160*47674Scael.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 169*47674Scael.El 170*47674Scael.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). 174*47674Scael.Sh FILES 175*47674Scael.Bl -tag -width /dev/rra[0-9][a-f] -compact 176*47674Scael.It Pa /dev/ra[0-9][a-f] 177*47674Scael.It Pa /dev/rra[0-9][a-f] 178*47674Scael.El 179*47674Scael.Sh DIAGNOSTICS 180*47674Scael.Bl -diag 181*47674Scael.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. 185*47674Scael.Pp 186*47674Scael.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. 190*47674Scael.Pp 191*47674Scael.It "uda%d: unit %d off line" 19232527SbosticWhile searching for drives, the controller found one that 19332527Sbosticseems to be manually disabled. It is ignored. 194*47674Scael.Pp 195*47674Scael.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. 198*47674Scael.Pp 199*47674Scael.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. 202*47674Scael.Pp 203*47674Scael.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]. 206*47674Scael.Pp 207*47674Scael.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 214*47674Scael.Xr disklabel 21533442Sbosticutility. 216*47674Scael.Pp 217*47674Scael.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. 220*47674Scael.Pp 221*47674Scael.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. 224*47674Scael.Pp 225*47674Scael.It uda%d: init failed, sa=%b 22632527SbosticThe controller refused to initalise. 227*47674Scael.Pp 228*47674Scael.It uda%d: controller hung 22932527SbosticThe controller never finished initialisation. Retrying may sometimes 23032527Sbosticfix it. 231*47674Scael.Pp 232*47674Scael.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. 236*47674Scael.Pp 237*47674Scael.It uda%d: still hung 23832527SbosticWhen the controller hangs, the driver occasionally tries to reinitialise 23932527Sbosticit. This means it just tried, without success. 240*47674Scael.Pp 241*47674Scael.It panic: udastart: bp==NULL 24232527SbosticA bug in the driver has put an empty drive queue on a controller queue. 243*47674Scael.Pp 244*47674Scael.It uda%d: command ring too small 245*47674ScaelIf you increase 246*47674Scael.Dv NCMDL2 , 247*47674Scaelyou may see a performance improvement. 248*47674Scael(See 249*47674Scael.Pa /sys/vaxuba/uda.c . ) 250*47674Scael.Pp 251*47674Scael.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. 254*47674Scael.Pp 255*47674Scael.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 258*47674Scael.%T UDA50 Maintenance Guide , 259*47674Scael.Tn DEC 260*47674Scaelpart number 261*47674Scael.Tn AA-M185B-TC , 262*47674Scaelpp. 18-22). 26333442SbosticIf this occurs during normal 264*47674Scaeloperation, the driver will reset it and retry pending 265*47674Scael.Tn I/O . 266*47674ScaelIf 26733442Sbosticit occurs during configuration, the controller may be ignored. 268*47674Scael.Pp 269*47674Scael.It uda%d: stray intr 27032527SbosticThe controller interrupted when it should have stayed quiet. The 27132527Sbosticinterrupt has been ignored. 272*47674Scael.Pp 273*47674Scael.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. 276*47674Scael.Pp 277*47674Scael.It uda%d: version %d model %d 27832527SbosticAn informational message giving the revision level of the controller. 279*47674Scael.Pp 280*47674Scael.It uda%d: DMA burst size set to %d 281*47674ScaelAn informational message showing the 282*47674Scael.Tn DMA 283*47674Scaelburst size, in words. 284*47674Scael.Pp 285*47674Scael.It panic: udaintr 286*47674ScaelIndicates a bug in the generic 287*47674Scael.Tn MSCP 288*47674Scaelcode. 289*47674Scael.Pp 290*47674Scael.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'. 293*47674Scael.Pp 294*47674Scael.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. 298*47674Scael.Pp 299*47674Scael.It uda%d: SETCTLRC failed: `detail' 30032527SbosticThe Set Controller Characteristics command (the last part of the 30132527Sbosticcontroller initialisation sequence) failed. The 302*47674Scael.Em detail 30332527Sbosticmessage tells why. 304*47674Scael.Pp 305*47674Scael.It "uda%d: attempt to bring ra%d on line failed: `detail'" 30632527SbosticThe drive could not be brought on line. The 307*47674Scael.Em detail 30832527Sbosticmessage tells why. 309*47674Scael.Pp 310*47674Scael.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. 313*47674Scael.Pp 314*47674Scael.It "ra%d: changed types! was %d now %d" 315*47674ScaelA drive somehow changed from one kind to another, e.g., from an 316*47674Scael.Tn RA80 317*47674Scaelto an 318*47674Scael.Tn RA60 . 319*47674ScaelThe numbers printed are the encoded media identifiers (see 320*47674Scael.Ao Pa vax/mscp.h Ac 32133442Sbosticfor the encoding). 32233442SbosticThe driver believes the new type. 323*47674Scael.Pp 324*47674Scael.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. 328*47674Scael.Pp 329*47674Scael.It "uda%d: attempt to get status for ra%d failed: `detail'" 33032527SbosticA status request failed. The 331*47674Scael.Em detail 33232527Sbosticmessage should tell why. 333*47674Scael.Pp 334*47674Scael.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 337*47674Scaelmessage will be followed by `+ others'. Get 338*47674Scael.Tn DEC 339*47674Scaelto forward the 340*47674Scaelblock with 341*47674Scael.Tn EVRLK . 342*47674Scael.Pp 343*47674Scael.It ra%d: serious exception reported 34432527SbosticI have no idea what this really means. 345*47674Scael.Pp 346*47674Scael.It panic: udareplace 347*47674ScaelThe controller reported completion of a 348*47674Scael.Tn REPLACE 349*47674Scaeloperation. The 350*47674Scaeldriver never issues any 351*47674Scael.Tn REPLACE Ns s , 352*47674Scaelso something is wrong. 353*47674Scael.Pp 354*47674Scael.It panic: udabb 355*47674ScaelThe controller reported completion of bad block related 356*47674Scael.Tn I/O . 357*47674ScaelThe 35832527Sbosticdriver never issues any such, so something is wrong. 359*47674Scael.Pp 360*47674Scael.It uda%d: lost interrupt 36132527SbosticThe controller has gone out to lunch, and is being reset to try to bring 36232527Sbosticit back. 363*47674Scael.Pp 364*47674Scael.It panic: mscp_go: AEB_MAX_BP too small 365*47674ScaelYou defined 366*47674Scael.Dv AVOID_EMULEX_BUG 367*47674Scaeland increased 368*47674Scael.Dv NCMDL2 369*47674Scaeland Emulex has 370*47674Scaelnew firmware. Raise 371*47674Scael.Dv AEB_MAX_BP 372*47674Scaelor turn off 373*47674Scael.Dv AVOID_EMULEX_BUG . 374*47674Scael.Pp 375*47674Scael.It "uda%d: unit %d: unknown message type 0x%x ignored" 37632527SbosticThe controller responded with a mysterious message type. See 377*47674Scael.Pa /sys/vax/mscp.h 378*47674Scaelfor a list of known message types. This is probably 37932527Sbostica controller hardware problem. 380*47674Scael.Pp 381*47674Scael.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). 384*47674Scael.Pp 385*47674Scael.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. 388*47674Scael.Em Message 38932527Sbosticis one of `available attention' (an `I am here' message) or 39032527Sbostic`stray response op 0x%x status 0x%x' (anything else). 391*47674Scael.Pp 392*47674Scael.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. 398*47674Scael.Pp 399*47674Scael.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). 402*47674Scael.Pp 403*47674Scael.It ra%d: io done, but no buffer? 404*47674ScaelHardware trouble, or a bug; the drive has finished an 405*47674Scael.Tn I/O 406*47674Scaelrequest, 40732527Sbosticbut the response has an invalid (zero) command reference number. 408*47674Scael.Pp 409*47674Scael.It "Emulex SC41/MS screwup: uda%d, got %d correct, then changed 0x%x to 0x%x" 410*47674ScaelYou turned on 411*47674Scael.Dv AVOID_EMULEX_BUG , 412*47674Scaeland 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. 416*47674Scael.Pp 417*47674Scael.It panic: unrecoverable Emulex screwup 418*47674ScaelYou turned on 419*47674Scael.Dv AVOID_EMULEX_BUG , 420*47674Scaelbut Emulex was too clever and 421*47674Scaelavoided the avoidance. Try turning on 422*47674Scael.Dv MSCP_PARANOIA 423*47674Scaelinstead. 424*47674Scael.Pp 425*47674Scael.It uda%d: bad response packet ignored 426*47674ScaelYou turned on 427*47674Scael.Dv MSCP_PARANOIA , 428*47674Scaeland 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. 432*47674Scael.Pp 433*47674Scael.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. 437*47674Scael.Pp 438*47674Scael.It "ra%d: unknown opcode 0x%x status 0x%x ignored" 43932527SbosticThe drive has reported something that the driver cannot understand. 440*47674ScaelPerhaps 441*47674Scael.Tn DEC 442*47674Scaelhas been inventive, or perhaps your hardware is ill. 44332527SbosticThis is followed by a hex dump of the offending packet. 444*47674Scael.Pp 445*47674Scael.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. 453*47674Scael.Pp 454*47674Scael.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). 462*47674Scael.Bd -filled -offset indent 463*47674Scael.It memory addr 0x%x 46432527SbosticA host memory access error; this is the address that could not be 46532527Sbosticread. 466*47674Scael.Pp 467*47674Scael.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', 470*47674Scaelor replacement block) and number. If the string is something else, 471*47674Scael.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). 474*47674Scael.Pp 475*47674Scael.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 483*47674Scael.%T RA81 Maintenance Guide , 48433442SbosticDEC order number AA-M879A-TC, in appendices E and F. 485*47674Scael.Pp 486*47674Scael.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.') 489*47674Scael.Pp 490*47674Scael.It "unit %d: unknown error, format 0x%x" 49132527SbosticA mysterious error: the given format code is not known. 492*47674Scael.Ed 493*47674Scael.Pp 49432527SbosticThe detail messages are as follows: 495*47674Scael.Bd -filled -offset indent 496*47674Scael.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. 500*47674Scael.Pp 501*47674Scael.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. 504*47674Scael.Pp 505*47674Scael.It "command aborted (unknown subcode) (code 2, subcode %d)" 50632527SbosticThis should never occur, as the driver never aborts commands. 507*47674Scael.Pp 508*47674Scael.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'). 513*47674Scael.Pp 514*47674Scael.It "unit available (unknown subcode) (code 4, subcode %d)" 51532527SbosticThe controller has decided to report a perfectly normal event as 51632527Sbostican error. (Why?) 517*47674Scael.Pp 518*47674Scael.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'), 523*47674Scaelor the 524*47674Scael.Tn FCT 525*47674Scaelhas an uncorrectable 526*47674Scael.Tn ECC 527*47674Scaelerror (`fct ecc'). 528*47674Scael.Pp 529*47674Scael.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. 533*47674Scael.Pp 534*47674Scael.It "compare error (unknown subcode) (code 7, subcode %d)" 53532527SbosticA compare operation showed some sort of difference. The driver 53632527Sbosticnever uses compare operations. 537*47674Scael.Pp 538*47674Scael.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 547*47674Scaelbe fixed via 548*47674Scael.Tn ECC 549*47674Scaellogic. A `%d symbol ecc' error is a data error 550*47674Scaelthat can be (and presumably has been) corrected by the 551*47674Scael.Tn ECC 552*47674Scaellogic. 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. 556*47674Scael.Pp 557*47674Scael.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. 562*47674Scael.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. 567*47674Scael.Pp 568*47674Scael.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. 580*47674Scael.Ed 581*47674Scael.El 582*47674Scael.Sh SEE ALSO 583*47674Scael.Xr disklabel 5 , 584*47674Scael.Xr disklabel 8 585*47674Scael.Sh HISTORY 586*47674ScaelThe 587*47674Scael.Nm 588*47674Scaeldriver appeared in 589*47674Scael.Bx 4.2 . 590