SSADISK_ISAL_CMD (ISAL Command) SSA Disk Device Driver ioctl Operation

Purpose

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 Technical Reference for the adapter.

Description

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 FN_ISALWrite FN_ISAL_Format FN_ISAL_Progress FN_ISAL_Lock FN_ISAL_Unlock FN_ISAL_Test FN_ISAL_SCSI FN_ISAL_Download FN_ISAL_Fence

Note:
  1. 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.
  2. 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:

Field Description
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.

Return Values

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:

Value Description
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.

Files

Item Description
/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.