VD(4) BSD/tahoe Kernel Interfaces Manual VD(4)NAMEvd — VERSAbus storage module controller/drives
controller vd0 at vba? csr 0xffff2000 vector vdintr
disk dk0 at vd0 drive 0
This is a generic VERSAbus storage module disk driver for the Computer
Consoles SMD (VDDC) and SMD-E disk controllers.
The vd driver is a fairly typical block I/O device, except raw block I/O
counts must be a multiple of 1024 bytes, whether the actual sector size
is 512 or 1024 bytes. Likewise, seek calls should specify a multiple of
1024 bytes. See physio(4).
The first sector of each disk contains a disk label containing geometry
information and partition layouts (see disklabel(5)). This sector is
normally write-protected, and disk-to-disk copies should avoid copying
this sector. The label may be updated with disklabel(8), which can also
be used to write-enable and write-disable the sector.
During autoconfiguration, as well as when a drive is opened after all
partitions are closed, the first sector of the drive is examined for a
disk label. If a label is found, the geometry of the drive and the par‐
tition tables are taken from it. If no label is found, The driver checks
for a disk label on sector 0 of each drive during autoconfiguration. If
no label is found, the driver tries to access the last track on each
drive to determine the type of drive attached. The driver has default
partition tables for seven different drives: CDC FSD (160 MB), CDC 9766
(300 MB), CDC XFSD (340 MB), CDC 515 MB, Fujitsu 360 MB, Fujitsu Eagle
(440 MB), and Maxtor 340 MB. If the drive is not recognized, a single
small partition is created to allow a label to be written.
The partition tables in the disk label and the disktab file specify par‐
tition offsets and sizes in sectors, which are 512 bytes on SMD drives
and 1024 bytes on 5 1/4" ESDI drives. By convention, the ?a partition is
normally used for the root file system or other small file system, and
the ?b partition is used as a paging area. The ?c partition maps the
rest of the pack, except the last 5 cylinders which are reserved for bad
sector forwarding, and diagnostic use.
/dev/dk[0-7][a-f] dk block files
/dev/rdk[0-7][a-f] dk raw files
vd%d: %s controller. This message is printed during autoconfiguration to
identify the type of controller, either VDDC or SMDE.
vd%d: init error. During autoconfiguration the controller failed to
respond to an initialize command.
vd%d: diagnostic error. During autoconfiguration the controller failed
to respond to a diagnostic command.
dk%d: unknown drive type. The system was unable to identify the speci‐
fied drive as one of the drives described above; the drive will not be
vd%d: drive %d: config error. The system encountered a hard error when
it tried to configure a drive during autoconfiguration.
vd%d: starting drives, wait ... . This message indicates the system is
about to tell the controller to ``start'' the drives attached to it.
dk%d: %s <ntrak %d, ncyl %d, nsec %d>. For each drive recognized during
autoconfiguration the system prints a message of this form. The drive
type is displayed as well as the geometry: tracks/cylinder, cylinders,
vd%d: lost interrupt. The system failed to receive an interrupt from the
controller after submitting a request. The system attempts to abort the
current request and simulate an interrupt to unwedge the controller.
During processing of the simulated interrupt, a controller error will be
reported as described below.
vd%d: stray interrupt. The system received an unexpected interrupt; it
dk%d%c: write locked. An attempt was made to write to a drive that is
dk%d%c: controller err %sing fsbn %d [of %d-%d] (dk%d bn %d cn %d tn %d
sn %d) status %b ecode %x; resetting controller... retrying.
dk%d%c: drive err %sing fsbn %d [of %d-%d] (dk%d bn %d cn %d tn %d sn %d)
status %b ecode %x; resetting drive... retrying. An attempted transfer
resulted in a controller or drive error. The controller or drive is
reset, and the transfer is attempted a second time.
dk%d%c: hard error %sing fsbn %d [of %d-%d] (dk%d bn %d cn %d tn %d sn
%d) status %b ecode %x. An unrecoverable error was encountered. The
filesystem block number reported is a logical sector number on the indi‐
cated partition; it is expressed using 1024-byte sectors. If the trans‐
fer involved multiple blocks, the block range is printed as well. The
parenthesized fields list the actual disk sector number relative to the
beginning of the drive (in 512- or 1024-byte blocks, as appropriate), as
well as the cylinder, track and sector number of the block. The error
status field of the device control block is printed in hexadecimal fol‐
lowed by a symbolic description. If this is an SMDE controller, the
error code is also displayed.
dk%d%c: soft error %sing fsbn %d [of %d-%d] (dk%d bn %d cn %d tn %d sn
%d) status %b ecode %x. A recoverable error was detected by the con‐
troller. The fields are interpreted in the same way as those for hard
dk%d%c: soft ecc %sing fsbn %d [of %d-%d] (dk%d bn %d cn %d tn %d sn
%d). A recoverable ECC error was detected and corrected by the con‐
troller during the indicated transfer.
vd%d: drive %d: couldn't reset. The system was unable to reconfigure a
drive during a controller reset.
vd%d: controller timeout. The controller failed to complete an operation
within a reasonable time. This message is usually followed by another
message indicating what operation timed out; e.g. ``during config'' for a
SEE ALSOdisklabel(5), disklabel(8)HISTORY
The vd driver appeared in 4.3BSD-Tahoe.
Writes scribble on the tail of incomplete blocks.
The system should use real disk sector numbers internally, instead of
assuming 1024-byte sectors; errors should report filesystem block numbers
using the actual sector size. Raw I/O should be permitted on any sector
BSD June 5, 1993 BSD