DID is a user-configurable pseudo device driver that provides access to underlying disk, tape, and CDROM devices. When the device supports unique device IDs, multiple paths to a device are determined according to the device ID of the device. Even if multiple paths are available with the same device ID, only one DID name is given to the actual device.
In a clustered environment, a particular physical device will have the same DID name regardless of its connectivity to more than one host or controller. This, however, is only true of devices that support a global unique device identifier such as physical disks.
DID maintains parallel directories for each type of device that it manages under /dev/did. The devices in these directories behave the same as their non-DID counterparts. This includes maintaining slices for disk and CD-ROM devices as well as names for different tape device behaviors. Both raw and block device access is also supported for disks by means of /dev/did/dsk and /dev/did/rdsk.
At any point in time, I/O is only supported down one path to the device. No multipathing support is currently available through DID.
Before a DID device can be used, it must first be initialized by means of the cldevice populate command.
The DID driver maintains an admin node as well as nodes for each DID device minor.
No user ioctls are supported by the admin node.
The DKIOCINFO ioctl is supported when called against the DID device nodes such as /dev/did/rdsk/d0s2.
All other ioctls are passed directly to the driver below.
Block disk or CD-ROM device, where n is the device number and m is the slice number
Raw disk or CD-ROM device, where n is the device number and m is the slice number
Tape device, where n is the device number
Driver configuration file
cldevice configuration file for non-clustered systems
cldevice maintains configuration in the CCR for clustered systems
DID creates names for devices in groups, in order to decrease the overhead during device hot-plug. For disks, device names are created in /dev/did/dsk and /dev/did/rdsk in groups of 100 disks at a time. For tapes, device names are created in /dev/did/rmt in groups of 10 tapes at a time. If more devices are added to the cluster than are handled by the current names, another group will be created.