|
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 x86 for disk. The maximum
size disk supported by i2o_bs is the same as what is available
on x86.
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.
|