The I2O Block Storage OSM abstraction (BSA, which also is referred to as block storage class) layer
is the primary interface that Solaris operating environments use to access
block storage devices. A block storage device provides random access to
a permanent storage medium. The i2o_bs device driver
uses I2O Block Storage class messages to control the block device; and
provides the same functionality (ioctls, for example)
that is present in the Solaris device driver like 'cmdk, dadk' on IA
for disk. The maximum size disk supported by i2o_bs
is the same as what is available on IA.
The i2o_bs is currently implemented version 1.5
of Intelligent IO specification.
The block files access the disk using the system's normal buffering
mechanism and are read and written without regard to physical disk records.
There is also a "raw" interface that provides for direct transmission between
the disk and the user's read or write buffer. A single read or write
call usually results in one I/O operation; raw I/O is therefore considerably
more efficient when many bytes are transmitted. The names of the block
files are found in /dev/dsk; the names of the raw files
are found in /dev/rdsk.
I2O associates each block storage device with a unique ID called a local target id that is assigned
by I2O hardware. This information can be acquired by the block storage OSM through I2O Block Storage class messages. For Block Storage
OSM, nodes are created in /devices/pci#/pci# which
include the local target ID as one component of device
name that the node refers to. However the /dev names
and the names in /dev/dsk and /dev/rdsk
do not encode the local target id in any part of the name.
For example, you might have the following:
|
/devices/ /dev/dsk name
---------------------------------------------------------------
/devices/pci@0,0/pci101e,0@10,1/disk@10:a /dev/dsk/c1d0s0
|
I/O requests to the disk must have an offset and
transfer length that is a multiple of 512 bytes or the driver returns an EINVAL error.
Slice 0 is normally used for the root file system
on a disk, slice 1 is used as a paging area (for example,
swap), and slice 2 for backing up the entire fdisk partition for Solaris software. Other slices may be used
for usr file systems or system reserved area.
Fdisk partition 0 is to access
the entire disk and is generally used by the fdisk(1M) program.
|