sd01 -- Storage Device Interface (SDI) disk target driver


The sd01 disk target driver is the device-level driver for Small Computer System Interface (SCSI) hard disks, SCSI optical disks, IDE hard disks, and S-ATA hard disks. It provides block and character (raw) access to the disk, and I/O controls (ioctl) to the disk. sd01 and the vtoc driver set up two levels of organization for a disk, allowing the disk to be shared with other systems in an mpio(HW) configuration as well as providing efficient sized portions within the UNIX system.

See vtoc(HW) for an explanation of disk slices and minor numbers.

Mapping of bad blocks is performed automatically and transparently by all modern disk hardware and the sd01 disk driver no longer interfers with or intervenes in this process. There is no fixed bad block log on the disk.

The sd01 disk driver supports a recovery gauntlet to handle jobs that timeout. The recovery gauntlet uses an hierarchical approach to the recovery process. Initial action is to retry the job, unless the job had been timed out by the software timeout mechanism and the associated job abort was not successful. The working assumption is that if the job was timed out and the job could not be aborted, then the target device is in an unresponsive state. In this case, the target driver resets the associated SCSI device, and then retries the job. If the job fails after the device reset, the SCSI bus is reset and the job is retried. The recovery gauntlet is exited on the successful completion of the job after any retry, or it is exited as a failed job when the retry fails after the SCSI bus reset.

The sd01 disk driver reports problems with driver error messages. The error numbers in the error messages identify the type of error. For SCSI sense codes, extended sense codes, and command codes, see /usr/include/sys/scsi.h. For SDI return codes, see /usr/include/sys/sdi.h.

The sd01 driver receives command requests from the kernel through the Input/Output (I/O) control call ioctl(S). The sd01 driver generates the requested commands and passes them to the host adapter driver. When command execution is complete, the host adapter driver notifies the sd01 driver through an interrupt. After this notification, the sd01 driver performs any required error recovery and indicates to the kernel that the I/O request is complete.

ioctl calls

The ioctl calls used by the sd01 driver are documented on the sdi(HW) manual page.


The sd01 driver retries failed transfers up to two times depending on the error type. Certain errors are not retried. sd01 displays an appropriate message upon encountering an error during the transfer.

The sd01 disk target driver allows access to non-UNIX partitions on a disk, even if there is no partition or VTOC. It does so by using the information in the fdisk table and the /dsk/cCbBtTdDp[0-4] special device nodes.

See vtoc(HW) for a more detailed explanation of disk device files.


The sd01 driver recognizes SCO OpenServer partitions set up with the divvy command. If it finds one on a disk, it translates the partition division information to VTOC format in memory. This enables read and write operations to an SCO OpenServer slice. The slice configuration can be changed using divvy(ADM) It is no longer necessary to use the sdimkosr5(ADM) command to convert a disk formatted for SCO OpenServer to VTOC format. This conversion now happens automatically.









disk(HW), disksetup(ADM), divvy(ADM), edvtoc(ADM), fdisk(ADM), ioctl(S) mount(ADM), prtvtoc(ADM), sc01(HW), sdi(HW), sdimkosr5(ADM), st01(HW), sw01(HW), vtoc(HW)
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 - 02 June 2005