XD(4S)

NAME
xd - Disk driver for Xylogics 7053 SMD Disk Controller

CONFIG — SUN-3, SUN-3x, SUN-4 SYSTEMS
controller xdc0 at vme16d32 ? csr 0xee80 priority 2 vector xdintr 0x44
controller xdc1 at vme16d32 ? csr 0xee90 priority 2 vector xdintr 0x45
controller xdc2 at vme16d32 ? csr 0xeea0 priority 2 vector xdintr 0x46
controller xdc3 at vme16d32 ? csr 0xeeb0 priority 2 vector xdintr 0x47
disk xd0 at xdc0 drive 0
disk xd1 at xdc0 drive 1
disk xd2 at xdc0 drive 2
disk xd3 at xdc0 drive 3
disk xd4 at xdc1 drive 0
disk xd5 at xdc1 drive 1
disk xd6 at xdc1 drive 2
disk xd7 at xdc1 drive 3
disk xd8 at xdc2 drive 0
disk xd9 at xdc2 drive 1
disk xd10 at xdc2 drive 2
disk xd11 at xdc2 drive 3
disk xd12 at xdc3 drive 0
disk xd13 at xdc3 drive 1
disk xd14 at xdc3 drive 2
disk xd15 at xdc3 drive 3

The four controller lines given in the synopsis section above specify the first, second, third, and fourth Xylogics 7053 SMD disk controller in a Sun system.

DESCRIPTION

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 on. The standard device names begin with xd followed by the drive number and then a letter a-h for partitions 0-7 respectively. The character ? stands here for a drive number in the range 0-7.

The block files access the disk using 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 usually results in only one I/O operation; therefore raw I/O is considerably more efficient when many words are transmitted. 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 directory(3V) calls should specify a multiple of 512 bytes.

If flags 0x1 is specified, the overlapped seeks feature for that drive is turned off. Note: to be effective, the flag must be set on all drives for a specific controller. This action is necessary for controllers with older firmware, which have bugs preventing overlapped seeks from working properly.

DISK SUPPORT
This driver handles all SMD drives by reading a label from sector 0 of the drive which describes the disk geometry and partitioning.

The xd?a partition is normally used for the root file system on a disk, the xd?b partition as a paging area, and the xd?c partition for pack-pack copying (it normally maps the entire disk). The rest of the disk is normally the xd?g partition.

FILES
/dev/xd[0-7][a-h]
    block files
/dev/rxd[0-7][a-h]
    raw files

SEE ALSO
lseek(2V), read(2V), write(2V), directory(3V), dkio(4S)

DIAGNOSTICS

xdcn: self test error
    Self test error in controller, see the Maintenance and Reference Manual.

xdn: unable to read bad sector info
    The bad sector forwarding information for the disk could not be read.

xdn: initialization failed
    The drive could not be successfully initialized.

xdn: unable to read label
    The drive geometry/partition table information could not be read.

xdn: Corrupt label
    The geometry/partition label checksum was incorrect.

xdn: offline
    A drive ready status is no longer detected, so the unit has been logically removed from the system. If the drive ready status is restored, the unit will automatically come back online the next time it is accessed.

xdnc: cmd how (msg) blk #n abs blk #n
    A command such as read or write encountered an error condition (how): either it failed, the controller was reset, the unit was restored, or an operation was retry'ed. The msg is derived from the error number given by the controller, indicating a condition such as “drive not ready(rq, “sector not found” or “disk write protected”. The blk # is the sector in error relative to the beginning of the partition involved. The abs blk # is the absolute block number of the sector in error. Some fields of the error message may be missing since the information is not always available.

BUGS
In raw I/O read(2V) and write(2V) truncate file offsets to 512-byte block boundaries, and write(2V) scribbles on the tail of incomplete blocks. Thus, in programs that are likely to access raw devices, read(2V), write(2V) and lseek(2V) should always deal in 512-byte multiples.

Older revisions of the firmware do not properly support overlapped seeks. This will only affect systems with multiple disks on a single controller. If a large number of “zero sector count” errors appear, you should use the flags field to disable overlapped seeks.