Provides a means to send Independent Network Storage Access Language (ISAL) commands to an SSA physical or logical disk drive. ISAL comprises a set of commands which allow a program to control and access a storage device. The ISAL Command set is described in the SSA Adapter Technical Reference.
The SSADISK_ISAL_CMD operation allows the caller to issue an ISAL command to a selected logical or physical disk drive. The caller must be root or have an effective user ID of root to issue this ioctl.
The following ISAL commands (minor function codes), defined in /usr/include/ipn/ipnsal.h may be issued:FN_ISAL_Read
- Some of these commands are not valid for one or other of SSA hdisks or SSA pdisks. This is not checked by the device driver but by the adapter card. If the caller attempts to send a command to a device for which it is not valid, the result returned by the adapter will be non-zero. The exception to this is that the device driver will reject with EINVAL any attempt to send a FN_ISAL_Fence command to a SSA physical disk.
- The FN_ISAL_SCSI command is rejected by the adapter with a non-zero result if it is sent to a device that has not been opened with the SSADISK_SCSIMODE extension parameter.
The arg parameter for the SSADISK_ISAL_CMD ioctl is the address of an ssadisk_ioctl_parms structure. This structure is defined in the /usr/include/sys/ssadisk.h file.
The SSADISK_ISAL_CMD ioctl uses the following fields of the ssadisk_ioctl_parms structure:
|dsb||Contains the directive status byte returned for the command. This contains a value from /usr/include/ipn/ipndef.h. A non zero value indicates an error.|
|result||Contains the Independent Packet Network (IPN) result word returned by IPN for the command. This contains values from /usr/include/ipn/ipntra.h. A non-zero value indicates an error.|
|u0.isal.parameter_descriptor||Set by the caller to indicate the buffer for parameter data.|
|u0.isal.transmit_descriptor||Set by the caller to indicate the buffer for transmit data.|
|u0.isal.receive_descriptor||Set by the caller to indicate the buffer for received data.|
|u0.isal.status_descriptor||Set by the caller to indicate the buffer for status data.|
|u0.isal.minor_function||Set by the caller to one of the ISAL commands defined in /usr/include/ipn/ipnsal.h and listed above.|
Note: Structures are provided in /usr/include/ipn/ipnsal.h that can be used to format the contents of the parameter buffer for the various commands. In all cases, the handle which is located in the first four bytes of the parameter buffer will be overwritten by the device driver with the correct handle for the device.
If the command was successfully sent to the adapter card this operation returns a value of 0. Otherwise, a value of -1 is returned and the errno global variable set to one of the following values:
|EIO||Indicates an unrecoverable I/O error.|
|EINVAL||Indicates either that the caller has specified an ISAL command that is not in the list of supported ISAL commands, or that the caller has attempted to send a FN_ISAL_FENCE command to an SSA physical disk.|
|EPERM||Indicates that caller did not have an effective user ID (EUID) of 0.|
|ENOMEM||Indicates that the device driver was unable to allocate or pin enough memory to complete the operation.|
If the return code is 0, the result field of the ssadisk_ioctl_parms structure is valid. This indicates whether the adapter was able to process the command successfully.
|/dev/pdisk0, /dev/pdisk1,..., /dev/pdiskn||Provide an interface to allow SSA device drivers to access SSA physical disk drives.|
|/dev/hdisk0, /dev/hdisk1,..., /dev/hdiskn||Provide an interface to allow SSA device drivers to access SSA logical disk drives.|
The SSA Adapter Device Driver, ssadisk SSA Disk Device Driver, SSA Subsystem Overview.