Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > D


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


disk — direct disk access


This entry describes the actions of HP-UX disk drivers when referring to a disk as either a block-special or character-special (raw) device.

Device File Naming Conventions

Standard disk device files are named according to the following conventions (see intro(7)):

Block-mode Devices


Character-mode Devices


Legacy block-mode Devices


Legacy character-mode Devices


Legacy device special filenames are those used on HP-UX 11i Version 2 and earlier releases. They can still be used for backward compatibility, but only for part of the configuration within the limits of HP-UX 11i Version 2.

The component parts of the device filename are constructed as follows:


Required. A decimal number corresponding to the instance number assigned to the direct access device by the operating system.


Required if _p is specified. A decimal number corresponding to a partition number.


Required. Identifies the following hexadecimal digits as the "Instance" of the interface card.


Hexadecimal number identifying controlling bus interface, also known as the "Instance" of this interface card. The instance value is displayed in the ioscan(1M) output, column "I" for the H/W Type, "INTERFACE".



Identifies the following hexadecimal digits as a "drive number" or "target".



Hexadecimal number identifying the drive or target number (bus address).



Identifies the following hexadecimal digits as a "unit number".



Hexadecimal unit number within the device.



Optional. Defaults to that corresponding to whole disk. Identifies the following value as a "section number".


Required if s is specified. Defaults to section 0 (zero), whole disk. Drive section number.

Assignment of controller, drive, logical unit and section numbers is described in the system administrator manuals for your system.

Block-special access

Block-special device files access disks via the system's block buffer cache mechanism. Buffering is done in such a way that concurrent access through multiple opens and mounting the same physical device is correctly handled to avoid operation sequencing errors. The block buffer cache permits the system to do physical I/O operations when convenient. This means that physical write operations may occur substantially later in time than their corresponding logical write requests. This also means that physical read operations may occur substantially earlier in time than their corresponding logical read requests.

Block-special files can be read and written without regard to physical disk records. Block-special file read() and write() calls requiring disk access result in one or more BLKDEV_IOSIZE byte (typically 2048 byte) transfers between the disk and the block buffer cache. Applications using the block-special device should ensure that they do not read or write past the end of last BLKDEV_IOSIZE sized block in the device file. Because the interface is buffered, accesses past this point behave unpredictably.

Character-special access

Character-special device files access disks without buffering and support the direct transmission of data between the disk and the user's read or write buffer. Disk access through the character special file interface causes all physical I/O operations to be completed before control returns from the call. A single read or write operation up to MAXPHYS bytes (typically 64 Kbytes or 256 Kbytes) results in exactly one disk operation. Requests larger than this are broken up automatically by the operating system. Since large I/O operations via character-special files avoid block buffer cache handling and result in fewer disk operations, they are typically more efficient than similar block-special file operations.

There may be implementation-dependent restrictions on the alignment of the user buffer in memory for character special file read() and write() calls. Also, each read and write operation must begin and end on a logical block boundary and must be a whole number of logical blocks in size. The logical block size is a hardware-dependent value that can be queried with the DIOC_DESCRIBE_EXT and DIOC_DESCRIBE ioctl calls, which are described below.

In addition to reading and writing data, the character-special file interface can be used to obtain device specific information and to perform special operations. These operations are controlled through use of ioctl calls. Details related to these ioctls are contained in <sys/diskio.h>.

The DIOC_DESCRIBE_EXT and DIOC_DESCRIBE ioctl can be used to obtain device specific identification information. The information returned includes the disk's model identification, the disk interface type, maximum offset address, device type, and the disk's logical block size.

The DIOC_CAPACITY ioctl can be used to obtain the capacity of a disk device in DEV_BSIZE units. (DEV_BSIZE is defined in <sys/param.h>).

The DIOC_EXCLUSIVE ioctl can be used to obtain and release exclusive access to a disk device. Exclusive access is required for some special operations, such as media reformatting, and may be desirable in other circumstances. The value one specifies that exclusive access is requested. The value zero specifies the exclusive access should be released. Exclusive access causes other open requests to fail. Exclusive access can only be granted when the device is not currently opened in block-mode and there is only one open file table entry for that disk device (the one accessible to the exclusive access requester).


The following errors can be returned by a disk device driver call:


Required permission is denied for the the device or operation.


I/O error (e.g., media defect or device communication problem).


From an open() call: the device is not a disk device. For other calls: Invalid request or parameter. Note that for legacy, 32-bit access, this error can result when the size of the device overflows the argument of the DIOC_DESCRIBE or DIOC_CAPACITY ioctls.


If resulting from an open() call, this indicates there is no device at the specified address. For other calls, this indicates the specified address is out of range or the device can no longer be accessed.


The interaction of block-special and character-special file access to the same BLKDEV_IOSIZE -sized block is not specified, and in general is unpredictable.

On some systems, having both a mounted file system and a block special file open on the same device can cause unpredictable results; this should be avoided if possible. This is because it may be possible for some files to have private buffers in some systems.

Although disk devices have historically had small (typically 512-byte) block sizes, some disk devices (such as optical disks and disk arrays) have relatively large block sizes. Applications using direct raw disk access should use ioctl() calls to determine appropriate I/O operation sizes and alignments.

Any disk with removable media (for example, floppy or CD-ROM) containing a mounted file system should not be removed prior to being unmounted. Removal of disk media containing mounted file systems is likely to result in file system errors and system panics.


disk was developed by HP and AT&T.


ioscan(1M), mknod(1M), intro(7).

System Administrator manuals included with your system.

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.