HPUX disk[7]

disk(7) disk(7)
NAME
disk - direct disk access
DESCRIPTION
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:
Block-mode Devices /dev/dsk/[r][cxd]y[ln]sm
Character-mode Devices /dev/rdsk/[r][cxd]y[ln]sm
where component parts of the filename are constructed as follows:
r Do not use. Reserved for future use.
c Optional. Identifies the following hexadecimal digits as
a non-default ``controller number''.
x Hexadecimal number identifying a non-default controlling
bus interface.
Required if c is specified.
d Required if c is specified. Identifies the following
hexadecimal digits as a ``drive number''.
y Hexadecimal number identifying the drive number (bus
address).
Required regardless of whether cxd is specified.
l (ell) Optional. Identifies the following hexadecimal
digits as a ``logical unit number''.
n Hexadecimal logical unit number of the device. Required
if l is specified.
s Required. Identifies the following value as a ``section
number''.
m Required. Drive section number.
If cxd is not specified, the default controlling bus interface is
used. Some administrators may prefer to completely specify cxd to
eliminate any ambiguity in file naming versus device and system
configuration.
Assignment of controller, drive, logical unit and section numbers is
described in the system administrator manuals for your system.
Hewlett-Packard Company - 1 - HP-UX Release 9.0: August 1992
disk(7) disk(7)
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 sector boundary and must be a whole number of sectors in size.
The sector size is a hardware-dependent value that can be queried with
the DIOC_DESCRIBE ioctl call, which is described below.
In addition to reading and writing data, the character-special file
interface can 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 ioctl can be used to obtain device specific
identification information. The information returned includes the
disk's model identification, the disk interface type, and the disk's
sector size.
Hewlett-Packard Company - 2 - HP-UX Release 9.0: August 1992
disk(7) disk(7)
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).
ERRORS
The following errors can be returned by a disk device driver call:
[EACCES] Required permission is denied for the the device
or operation.
[ENXIO] 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.
[EINVAL] From an open() call: the device is not a disk
device. For other calls: Invalid request or
parameter.
[EIO] I/O error (e.g., media defect or device
communication problem).
WARNING
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.
DEPENDENCIES
Hewlett-Packard Company - 3 - HP-UX Release 9.0: August 1992
disk(7) disk(7)
Series 800
Devices whose sector size is less than DEV_BSIZE must be accessed
on DEV_BSIZE boundaries and with transfer sizes that are
multiples of DEV_BSIZE.
AUTHOR
disk was developed by HP and AT&T.
SEE ALSO
mkdev(1M), mknod(1M), ct(7), intro(7).
System Administrator manuals included with your system.
Hewlett-Packard Company - 4 - HP-UX Release 9.0: August 1992