ra(4)
NAME
ra − MSCP disk controller interface
SYNTAX
For UNIBUS, QBUS:
controller uda0 at uba?
controller uq0 at uda0 csr 0172150 vector uqintr
disk ra0 at uq0 drive 0
For VAXBI:
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(4).
This is a driver for all DEC 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, etc. 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 via the system’s normal buffering mechanism and may be read and written without regard to physical disk records. There is also a ‘raw’ interface which 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 which may be connected to an MSCP based controller. Consult the ULTRIX Software Product Description to determined 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(8). For further information, see dkio(4).
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?c0400176
ra?g4932482080
ra?h131404268772
RA80 partitions
diskstartlength
ra?a015884
ra?b1588433440
ra?c0242606
ra?g4932482080
ra?h131404111202
RA81 partitions
diskstartlength
ra?a015884
ra?b1588433440
ra?c0891072
ra?d34067015884
ra?e35655455936
ra?f412490478582
ra?g4932482080
ra?h131404759668
RA82 partitions
diskstartlength
ra?a015884
ra?b1588466690
ra?c0−1
ra?d82574220096
ra?e302670219735
ra?f522405437760
ra?g82574877591
ra?h960165−1
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?c0−1
RD52 partitions
diskstartlength
ra?a015884
ra?b158849766
ra?c0−1
ra?g52650−1
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?c0−1
ra?d49324130938
ra?e180262−1
ra?f00
ra?g49324−1
ra?h00
RX33 partitions
diskstartlength
ra?a02400
ra?c0−1
RX50 partitions
diskstartlength
ra?a0800
ra?c0−1
RC25
diskstartlength
ra?a015884
ra?b1588410032
ra?c0−1
ra?g25916−1
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 UDA-50 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 UDA-50. 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 UDA-50 status register and the internal driver state are printed.
The following types of MSCP error packets are returned by the UDA-50 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???