Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

nbuf(4)

dkio(4)

chpt(8)

MAKEDEV(8)

uerf(8)

ra(4)

NAME

ra − MSCP disk interface

SYNTAX

For UNIBUS, Q-bus
controller uda0 at uba?
controller uq0 at uda0 csr 0172150 vector uqintr
disk ra0 at uq0 drive 0

For VAX BI:
controller kdb0 at vaxbi0 node 4
controller uq0 at kdb0 vector uqintr
disk ra0 at uq0 slave 0

DESCRIPTION

Prior to Version 2.0, this device was referenced by uda(.).

This is a driver for all DIGITAL MSCP disk controllers.  All controllers communicate with the host through a packet-oriented protocol termed the Mass Storage Control Protocol (MSCP).  See the file <vax/mscp.h> for a detailed description of this protocol. 

Files with minor device numbers 0 through 7 refer to various portions of drive 0.  Minor devices 8 through 15 refer to drive 1, and so forth.  The standard device names begin with ra followed by the drive number and then a letter a through h for partitions 0 through 7 respectively. The character ? stands here for a drive number in the range 0 through 7.

The block files access the disk with the system’s normal buffering mechanism and may be read and written without regard to physical disk records. There is also a ‘raw’ interface that provides for direct transmission between the disk and the user’s read or write buffer.  A single read or write call results in exactly one I/O operation, so raw I/O is considerably more efficient when many words are transmitted.  Multiply buffered I/O operations are possible to any raw MSCP device. (See nbuf(4) for more information.)  The names of the raw files conventionally begin with an extra ‘r.’

In raw I/O, counts should be a multiple of 512 bytes (a disk sector).  Likewise, seek calls should specify a multiple of 512 bytes.

DISK SUPPORT

This driver handles all drives that may be connected to an MSCP-based controller.  Consult the ULTRIX Software Product Description to determine which controllers are supported for which CPU types and hardware configurations.  Drive types as such are not recognized, but rather  the variable length partitions are defined as having an “infinite” length and the controller is relied on to return an error when an inaccessible block is requested. 

For constructing file systems, however, the partitions sizes are required.  Partitions are not rounded to cylinder boundaries, as on other drives, because the type of drive attached to the controller is discovered too late in the autoconfiguration process to maintain separate partition tables for each drive. (The lack of proper drive type recognition would be more easily dealt with if the partition tables were read off the drive.) Partitions sizes can be changed by chpt(.). For further information, see dkio(.).

The origin and size (in sectors) of the pseudodisks an each drive are shown in the following table.  In the table, a -1 in the length column indicates the end of the pack.  The UDA determines pack size either during autoconfiguration or when the disk is put on line. 

RA60 partitions
diskstartlength
ra?a015884
ra?b1588433440
ra?c0400175
ra?d13140489591
ra?e22099589590
ra?f31058589590
ra?g4932482080
ra?h131404268771

RA70 partitions
diskstartlength
ra?a015884
ra?b1588433440
ra?c0547041
ra?d131404138545
ra?e269949138545
ra?f408494138547
ra?g4932482080
ra?h131404415637

RA80 partitions
diskstartlength
ra?a015884
ra?b1588433440
ra?c0237212
ra?d13140435260
ra?c16666435260
ra?c20192435288
ra?g4932482080
ra?h131404105808

RA80 (IDC) partitions
diskstartlength
a   0   15884
b   1605833440
c0242606
g   4991082080  
h   132370110143  

RA81 partitions
diskstartlength
ra?a015884
ra?b1588433440
ra?c0891072
ra?d131404122993
ra?e254397422993
ra?f377390513682
ra?g4932482080
ra?h131404759668

RA82 partitions
diskstartlength
ra?a015884
ra?b1588466690
ra?c0121664
ra?d82574220096
ra?e302670219735
ra?f522405437760
ra?g82574877591
ra?h960165256500

RD31 partitions
diskstartlength
ra?a    0 15884
ra?b15884 10024
ra?c    0 41560
ra?g25908 15652
 

RD32 partitions
diskstartlength
ra?a    0 15884
ra?b15884 15625
ra?c    0 83204
ra?d31509 25863
ra?e57372 25832
ra?g31509 51695

RD51 partitions
diskstartlength
ra?a015884
ra?b158845716
ra?c021599

RD52 partitions
diskstartlength
ra?a015884
ra?b158849766
ra?c060480
ra?d00
ra?e050714
ra?f507149766
ra?g2565034830
ra?h1588444596

RD53 partitions
diskstartlength
ra?a015884
ra?b1588433440
ra?c0136872
ra?d00
ra?e050714
ra?f5071487958
ra?g4932489348
ra?h15884122788

RD54 partitions
diskstartlength
ra?a015884
ra?b1588433440
ra?c0311200
ra?d49324130938
ra?e180262130938
ra?f00
ra?g49324261876
ra?h00

RRD50 (read only) partitions
diskstartlength
ra?a015884
ra?b1588433440
ra?c01171875
ra?d131404122993
ra?e122993254397
ra?f3773901171875
ra?g4932482080
ra?h1314041171875

RX33 partitions
diskstartlength
ra?a02400
ra?c02400

RX50 partitions
diskstartlength
ra?a0800
ra?c0800

RC25 partitions
diskstartlength
ra?a015884
ra?b1588410032
ra?c050902
ra?g2591624986
 

Usually the ra?a partition is used for the root file system, the ra?b partition as a paging area.  The ra?c partition for pack to pack copying because the it maps the entire disk. 

DIAGNOSTICS

The following messages are printed at the console:

uda%d: random interrupt ignored
An unexpected interrupt was received (for example, when no I/O was pending).  The interrupt is ignored.

uda%d: interrupt in unknown state %d ignored
An interrupt was received when the driver was in an unknown internal state.  Indicates a hardware problem or a driver bug.

uda%d: fatal error (%o)
The UDA50 indicated a “fatal error” in the status returned to the host.  The contents of the status register are displayed.

OFFLINE
Additional status information given after a hard I/O error. A hard I/O error occurred because the drive was not on line.

uda: unknown packet
An MSCP packet of unknown type was received from the UDA50. Check the cabling to the controller.

Udaerror udasa (%x)

error: com %d opc 0x%x stat 0x%x

uda%d: hard error

udintr: um_ubinfo == 0

endcd=%o, stat=%o

Uda(%d) udasa (%x)

Uda (%d) Error (%x)

The following messages are written to the system error log file, /usr/adm/syserr/syserr.hostname. 

udastrat: ubinfo 0x%x
VAX 11/750 only. When allocating UNIBUS resources, the driver found it already had resources allocated.

Uda%d udasa %o, state %d
Additional status information given after a hard I/O error. The values of the UDA50 status register and the internal driver state are printed.

The following types of MSCP error packets are returned by the UDA50 to the host: controller error, host memory access error, disk transfer errror, SDI error, small disk error, and unknown error. 

FILES

/dev/ra??? 
/dev/rra???

SEE ALSO

nbuf(4), dkio(4), chpt(8), MAKEDEV(8), uerf(8)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026