[ Previous | Next | Contents | Home | Search ]
AIX Version 4.3 Kernel and Subsystems Technical Reference, Volume 2

scdisk SCSI Device Driver

Purpose

Supports the small computer system interface (SCSI) fixed disk, CD-ROM (compact disk read only memory), and read/write optical (optical memory) devices.

Syntax

#include <sys/devinfo.h>
#include <sys/scsi.h>
#include <sys/scdisk.h>

Device-Dependent Subroutines

Typical fixed disk, CD-ROM, and read/write optical drive operations are implemented using the open, close, read, write, and ioctl subroutines.

open and close Subroutines

The openx subroutine is intended primarily for use by the diagnostic commands and utilities. Appropriate authority is required for execution. If an attempt is made to run the open subroutine without the proper authority, the subroutine returns a value of -1 and sets the errno global variable to a value of EPERM.

The ext parameter passed to the openx subroutine selects the operation to be used for the target device. The /usr/include/sys/scsi.h file defines possible values for the ext parameter.

The ext parameter can contain any combination of the following flag values logically ORed together:

SC_DIAGNOSTIC Places the selected device in Diagnostic mode. This mode is singularly entrant; that is, only one process at a time can open it. When a device is in Diagnostic mode, SCSI operations are performed during open or close operations, and error logging is disabled. In Diagnostic mode, only the close and ioctl subroutine operations are accepted. All other device-supported subroutines return a value of -1 and set the errno global variable to a value of EACCES.

A device can be opened in Diagnostic mode only if the target device is not currently opened. If an attempt is made to open a device in Diagnostic mode and the target device is already open, the subroutine returns a value of -1 and sets the errno global variable to a value of EACCES.

SC_FORCED_OPEN Forces a bus device reset, regardless of whether another initiator has the device reserved. The SCSI bus device reset is sent to the device before the open sequence begins. In other respects, the open operation runs normally.
SC_RETAIN_RESERVATION Retains the reservation of the device after a close operation by not issuing the release. This flag prevents other initiators from using the device unless they break the host machine's reservation.
SC_NO_RESERVE Prevents the reservation of a device during an openx subroutine call to that device. This operation is provided so a device can be controlled by two processors that synchronize their activity by their own software means.
SC_SINGLE Places the selected device in Exclusive Access mode. Only one process at a time can open a device in Exclusive Access mode.

A device can be opened in Exclusive Access mode only if the device is not currently open. If an attempt is made to open a device in Exclusive Access mode and the device is already open, the subroutine returns a value of -1 and sets the errno global variable to a value of EBUSY. If the SC_DIAGNOSTIC flag is specified along with the SC_SINGLE flag, the device is placed in Diagnostic mode.

"SCSI Options to the openx Subroutine" in AIX Version 4.3 Kernel Extensions and Device Support Programming Concepts gives more specific information on the open operations.

readx and writex Subroutines

The readx and writex subroutines provide additional parameters affecting the raw data transfer. These subroutines pass the ext parameter, which specifies request options. The options are constructed by logically ORing zero or more of the following values:

HWRELOC Indicates a request for hardware relocation (safe relocation only).
UNSAFEREL Indicates a request for unsafe hardware relocation.
WRITEV Indicates a request for write verification.

ioctl Subroutine

ioctl subroutine operations that are used for the scdisk device driver are specific to the following categories:

Fixed Disk and Read/Write Optical Devices

The following ioctl operation is available for fixed disk and read/write optical devices only:

DKIOWRSE Provides a means for issuing a write command to the device and obtaining the target-device sense data when an error occurs. If the DKIOWRSE operation returns a value of -1 and the status_validity field is set to a value of sc_valid_sense, valid sense data is returned. Otherwise, target sense data is omitted.

The DKIOWRSE operation is provided for diagnostic use. It allows the limited use of the target device while operating in an active system environment. The arg parameter to the DKIOWRSE operation contains the address of an sc_rdwrt structure. This structure is defined in the /usr/include/sys/scsi.h file.

The devinfo structure defines the maximum transfer size for a write operation. If an attempt is made to transfer more than the maximum, the subroutine returns a value of -1 and sets the errno global variable to a value of EINVAL. Refer to the Small Computer System Interface (SCSI) Specification for the format of the request-sense data for a particular device.

CD-ROM Devices Only

The following ioctl operation is available for CD-ROM devices only:

CDIOCMD Allows SCSI commands to be issued directly to the attached CD-ROM device. The CDIOCMD operation preserves binary compatibility for CD-ROM applications that were compiled on earlier releases of AIX. It is recommended that newly written CD-ROM applications use the DKIOCMD operation instead. For the CDIOCMD operation, the device must be opened in Diagnostic mode. The CDIOCMD operation parameter specifies the address of a sc_iocmd structure. This structure is defined in the /usr/include/sys/scsi.h file.

If this operation is attempted on a device other than CD-ROM, it is interpreted as a DKIORDSE operation. In this case, the arg parameter is treated as an sc_rdwrt structure.

If the CDIOCMD operation is attempted on a device not in Diagnostic mode, the subroutine returns a value of -1 and sets the errno global variable to a value of EACCES. Refer to the Small Computer System Interface (SCSI) Specification for the format of the request-sense data for a particular device.

Note: Diagnostic mode is required only for the CDIOCMD and DKIOCMD operations.
Fixed Disk, CD-ROM, and Read/Write Optical Devices

The following ioctl operations are available for fixed disk, CD-ROM, and read/write optical devices:

IOCINFO Returns the devinfo structure defined in the /usr/include/sys/devinfo.h file. The IOCINFO operation is the only operation defined for all device drivers that use the ioctl subroutine. The remaining operations discussed in this article are all specific to fixed disk, CD-ROM, and read/write optical devices.
DKIORDSE Provides a means for issuing a read command to the device and obtaining the target-device sense data when an error occurs. If the DKIORDSE operation returns a value of -1 and the status_validity field is set to a value of sc_valid_sense, valid sense data is returned. Otherwise, target sense data is omitted.

The DKIORDSE operation is provided for diagnostic use. It allows the limited use of the target device while operating in an active system environment. The arg parameter to the DKIORDSE operation contains the address of an sc_rdwrt structure. This structure is defined in the /usr/include/sys/scsi.h file.

The devinfo structure defines the maximum transfer size for a read operation. If an attempt is made to transfer more than the maximum, the subroutine returns a value of -1 and sets the errno global variable to a value of EINVAL. Refer to the Small Computer System Interface (SCSI) Specification for the format of the request-sense data for a particular device.

Note: The CDIORDSE operation may be substituted for the DKIORDSE operation when issuing a read command to and obtaining sense data from a CD-ROM device. DKIORDSE is the recommended operation.
DKIOCMD When the device has been successfully opened in the Diagnostic mode, the DKIOCMD operation provides the means for issuing any SCSI command to the specified device. If the DKIOCMD operation is issued when the device is not in Diagnostic mode, the subroutine returns a value of -1 and sets the errno global variable to a value of EACCES. The device driver performs no error recovery or logging on failures of this operation.

The SCSI status byte and the adapter status bytes are returned through the arg parameter, which contains the address of a sc_iocmd structure (defined in the /usr/include/sys/scsi.h file). If the DKIOCMD operation fails, the subroutine returns a value of -1 and sets the errno global variable to a nonzero value. In this case, the caller should evaluate the returned status bytes to determine why the operation was unsuccessful and what recovery actions should be taken.

The devinfo structure defines the maximum transfer size for the command. If an attempt is made to transfer more than the maximum, the subroutine returns a value of -1 and sets the errno global variable to a value of EINVAL. Refer to the Small Computer System Interface (SCSI) Specification for the format of the request-sense data for a particular device.

Note: Diagnostic mode is required only for the CDIOCMD and DKIOCMD operations.
DKPMR Issues a SCSI prevent media removal command when the device has been successfully opened. This command prevents media from being ejected until the device is closed, powered off and then back on, or until a DKAMR operation is issued. The arg parameter for the DKPMR operation is null. If the DKPMR operation is successful, the subroutine returns a value of 0. If the device is a SCSI fixed disk, the DKPMR operation fails, and the subroutine returns a value of -1 and sets the errno global variable to a value of EINVAL. If the DKPMR operation fails for any other reason, the subroutine returns a value of -1 and sets the errno global variable to a value of EIO.
DKAMR Issues an allow media removal command when the device has been successfully opened. As a result media can be ejected using either the drive's eject button or the DKEJECT operation. The arg parameter for this ioctl is null. If the DKAMR operation is successful, the subroutine returns a value of 0. If the device is a SCSI fixed disk, the DKAMR operation fails, and the subroutine returns a value of -1 and sets the errno global variable to a value of EINVAL. For any other failure of this operation, the subroutine returns a value of -1 and sets the errno global variable to a value of EIO.
DKEJECT Issues an eject media command to the drive when the device has been successfully opened. The arg parameter for this operation is null. If the DKEJECT operation is successful, the subroutine returns a value of 0. If the device is a SCSI fixed disk, the DKEJECT operation fails, and the subroutine returns a value of -1 and sets the errno global variable to a value of EINVAL. For any other failure of this operation, the subroutine returns a value of -1 and sets the errno variable to a value of EIO.
DKFORMAT Issues a format unit command to the specified device when the device has been successfully opened.

If the arg parameter for this operation is null, the format unit sets the format options valid (FOV) bit to 0 (that is, it uses the drive's default setting). If the arg parameter for the DKFORMAT operation is not null, the first byte of the defect list header is set to the value specified in the first byte addressed by the arg parameter. This allows the creation of applications to format a particular type of read/write optical media uniquely.

The driver initially tries to set the FmtData and CmpLst bits to 0. If that fails, the driver tries the remaining three permutations of these bits. If all four permutations fail, this operation fails, and the subroutine sets the errno variable to a value of EIO.

If the DKFORMAT operation is specified for a fixed disk, the subroutine returns a value of -1 and sets the errno global variable to a value of EINVAL. If the DKFORMAT operation is attempted when the device is not in Exclusive Access mode, the subroutine returns a value of -1 and sets the errno global variable to a value of EACCES. If the media is write-protected, the subroutine returns a value of -1 and sets the errno global variable to a value of EWRPROTECT. If the format unit exceeds its time-out value, the subroutine returns a value of -1 and sets the errno global variable to a value of ETIMEDOUT. For any other failure of this operation, the subroutine returns a value of -1 and sets the errno global variable to a value of EIO.

DKAUDIO Issues play audio commands to the specified device and controls the volume on the device's output ports. Play audio commands include: play, pause, resume, stop, determine the number of tracks, and determine the status of a current audio operation. The DKAUDIO operation plays audio only through the CD-ROM drive's output ports. The arg parameter of this operation is the address of a cd_audio_cmds structure, which is defined in the /usr/include/sys/scdisk.h file. Exclusive Access mode is required.

If DKAUDIO operation is attempted when the device's audio-supported attribute is set to No, the subroutine returns a value of -1 and sets the errno global variable to a value of EINVAL. If the DKAUDIO operation fails, the subroutine returns a value of -1 and sets the errno global variable to a nonzero value. In this case, the caller should evaluate the returned status bytes to determine why the operation failed and what recovery actions should be taken.

DK_CD_MODE Determines or changes the CD-ROM data mode for the specified device. The CD-ROM data mode specifies what block size and special file are used for data read across the SCSI bus from the device. The DK_CD_MODE operation supports the following CD-ROM data modes:
CD-ROM Data Mode 1 512-byte block size through both raw (dev/rcd*) and block special (/dev/cd*) files
CD-ROM Data Mode 2 Form 1 2048-byte block size through both raw (dev/rcd*) and block special (/dev/cd*) files
CD-ROM Data Mode 2 Form 2 2336-byte block size through the raw (dev/rcd*) special file only
CD-DA (Compact Disc Digital Audio) 2352-byte block size through the raw (dev/rcd*) special file only

The DK_CD_MODE arg parameter contains the address of the mode_form_op structure defined in the /usr/include/sys/scdisk.h file. To have the DK_CD_MODE operation determine or change the CD-ROM data mode, set the action field of the change_mode_form structure to one of the following values:

CD_GET_MODE Returns the current CD-ROM data mode in the cd_mode_form field of the mode_form_op structure, when the device has been successfully opened.
CD_CHG_MODE Changes the CD-ROM data mode to the mode specified in the cd_mode_form field of the mode_form_op structure, when the device has been successfully opened in the Exclusive Access mode.

If a CD-ROM has not been configured for different data modes (via mode-select density codes), and an attempt is made to change the CD-ROM data mode (by setting the action field of the change_mode_form structure set to CD_CHG_MODE), the subroutine returns a value of -1 and sets the errno global variable to a value of EINVAL.

If the DK_CD_MODE operation for CD_CHG_MODE is attempted when the device is not in Exclusive Access mode, the subroutine returns a value of -1 and sets the errno global variable to a value of EACCES. For any other failure of this operation, the subroutine returns a value of -1 and sets the errno global variable to a value of EIO.

Device Requirements

SCSI fixed disk, CD-ROM, and read/write optical drives on AIX have the following hardware requirements:

Error Conditions

Possible errno values for ioctl, open, read, and write subroutines when using the scdisk device driver include:

EACCES Indicates one of the following circumstances:
  • An attempt was made to open a device currently open in Diagnostic or Exclusive Access mode.

  • An attempt was made to open a Diagnostic mode session on a device already open.

  • The user attempted a subroutine other than an ioctl or close subroutine while in Diagnostic mode.

  • A DKIOCMD or CDIOCMD operation was attempted on a device not in Diagnostic mode.

  • A DK_CD_MODE ioctl subroutine operation was attempted on a device not in Exclusive Access mode.

  • A DKFORMAT operation was attempted on a device not in Exclusive Access mode.
EBUSY Indicates one of the following circumstances:
  • An attempt was made to open a session in Exclusive Access mode on a device already opened.
  • The target device is reserved by another initiator.
EFAULT Indicates an illegal user address.
EFORMAT Indicates the target device has unformatted media or media in an incompatible format.
EINPROGRESS Indicates a CD-ROM drive has a play-audio operation in progress.
EINVAL Indicates one of the following circumstances:
  • A DKAUDIO (play-audio) operation was attempted for a device that is not configured to use the SCSI-2 play-audio commands.

  • The read or write subroutine supplied an nbyte parameter that is not an even multiple of the block size.

  • A sense data buffer length of greater than 255 bytes is not valid for a CDIORDSE, DKIOWRSE, or DKIORDSE ioctl subroutine operation.

  • The data buffer length exceeded the maximum defined in the devinfo structure for a CDIORDSE, CDIOCMD, DKIORDSE, DKIOWRSE, or DKIOCMD ioctl subroutine operation.

  • An unsupported ioctl subroutine operation was attempted.

  • A data buffer length greater than that allowed by the CD-ROM drive is not valid for a CDIOCMD ioctl subroutine operation.

  • An attempt was made to configure a device that is still open.

  • An illegal configuration command has been given.

  • A DKPMR (Prevent Media Removal), DKAMR (Allow Media Removal), or DKEJECT (Eject Media) command was sent to a device that does not support removable media.

  • A DKEJECT (Eject Media) command was sent to a device that currently has its media locked in the drive.

  • The data buffer length exceeded the maximum defined for a strategy operation.
EIO Indicates one of the following circumstances:
  • The target device cannot be located or is not responding.
  • The target device has indicated an unrecovered hardware error.
EMEDIA Indicates one of the following circumstances:
  • The target device has indicated an unrecovered media error.
  • The media was changed.
EMFILE Indicates an open operation was attempted for an adapter that already has the maximum permissible number of opened devices.
ENODEV Indicates one of the following circumstances:
  • An attempt was made to access an undefined device.
  • An attempt was made to close an undefined device.
ENOTREADY Indicates no media is in the drive.
ENXIO Indicates one of the following circumstances:
  • The ioctl subroutine supplied an invalid parameter.
  • A read or write operation was attempted beyond the end of the fixed disk.
EPERM Indicates the attempted subroutine requires appropriate authority.
ESTALE Indicates a read-only optical disk was ejected (without first being closed by the user) and then either reinserted or replaced with a second optical disk.
ETIMEDOUT Indicates an I/O operation has exceeded the given timer value.
EWRPROTECT Indicates one of the following circumstances:
  • An open operation requesting read/write mode was attempted on read-only media.
  • A write operation was attempted to read-only media.

Reliability and Serviceability Information

SCSI fixed disk devices, CD-ROM drives, and read/write optical drives return the following errors:

ABORTED COMMAND Indicates the device ended the command.
ADAPTER ERRORS Indicates the adapter returned an error.
GOOD COMPLETION Indicates the command completed successfully.
HARDWARE ERROR Indicates an unrecoverable hardware failure occurred during command execution or during a self-test.
ILLEGAL REQUEST Indicates an illegal command or command parameter.
MEDIUM ERROR Indicates the command ended with an unrecovered media error condition.
NOT READY Indicates the logical unit is offline or media is missing.
RECOVERED ERROR Indicates the command was successful after some recovery was applied.
UNIT ATTENTION Indicates the device has been reset or the power has been turned on.

Error Record Values for Media Errors

The fields defined in the error record template for fixed disk, CD-ROM, and read/write optical media errors are:

Comment Indicates fixed disk, CD-ROM, or read/write optical media error.
Class Equals a value of H, which indicates a hardware error.
Report Equals a value of True, which indicates this error should be included when an error report is generated.
Log Equals a value of True, which indicates an error log entry should be created when this error occurs.
Alert Equals a value of False, which indicates this error is not alertable.
Err_Type Equals a value of Perm, which indicates a permanent failure.
Err_Desc Equals a value of 1312, which indicates a disk operation failure.
Prob_Causes Equals a value of 5000, which indicates media.
User_Causes Equals a value of 5100, which indicates the media is defective.
User_Actions Equals the following values:
  • 0000, which indicates problem-determination procedures should be performed
  • 1601, which indicates the removable media should be replaced and retried
Inst_Causes None.
Inst_Actions None.
Fail_Causes Equals the following values:
  • 5000, which indicates a media failure
  • 6310, which indicates a disk drive failure
Fail_Actions Equals the following values:
  • 0000, which indicates problem-determination procedures should be performed
  • 1601, which indicates the removable media should be replaced and retried
Detail_Data Equals a value of 156, 11, HEX. This value indicates hexadecimal format.
Note: The Detail_Data field in the err_rec structure contains the sc_error_log_df structure. The err_rec structure is defined in the /usr/include/sys/errids.h file. The sc_error_log_df structure is defined in the /usr/include/sys/scsi.h file.

The sc_error_log_df structure contains the following fields:

req_sense_data Contains the request-sense information from the particular device that had the error, if it is valid.
reserved2 Contains the segment count, which is the number of megabytes read from the device at the time the error occurred.
reserved3 Contains the number of bytes read since the segment count was last increased.

Refer to the Small Computer System Interface (SCSI) Specification for the format of the request-sense data for a particular device.

Error Record Values for Hardware Errors

The fields defined in the error record template for fixed disk, CD-ROM, and read/write optical hardware errors, as well as hard-aborted command errors are:

Comment Indicates fixed disk, CD-ROM, or read/write optical hardware error.
Class Equals a value of H, which indicates a hardware error.
Report Equals a value of True, which indicates this error should be included when an error report is generated.
Log Equals a value of True, which indicates an error log entry should be created when this error occurs.
Alert Equal to a value of FALSE, which indicates this error is not alertable.
Err_Type Equals a value of Perm, which indicates a permanent failure.
Err_Desc Equals a value of 1312, which indicates a disk operation failure.
Prob_Causes Equals a value of 6310, which indicates disk drive.
User_Causes None.
User_Actions None.
Inst_Causes None.
Inst_Actions None.
Fail_Causes Equals the following values:
  • 6310, which indicates a disk drive failure
  • 6330, which indicates a disk drive electronics failure
Fail_Actions Equals a value of 0000, which indicates problem-determination procedures should be performed.
Detail_Data Equals a value of 156, 11, HEX. This value indicates hexadecimal format.
Note: The Detail_Data field in the err_rec structure contains the sc_error_log_df structure. The err_rec structure is defined in the /usr/include/sys/errids.h file. The sc_error_log_df structure is defined in the /usr/include/sys/scsi.h file.

The sc_error_log_df structure contains the following fields:

req_sense_data Contains the request-sense information from the particular device that had the error, if it is valid.
reserved2 Contains the segment count, which is the number of megabytes read from the device at the time the error occurred.
reserved3 Contains the number of bytes read since the segment count was last increased.

Refer to the Small Computer System Interface (SCSI) Specification for the format of the request-sense data for a particular device.

Error Record Values for Adapter-Detected Hardware Failures

The fields defined in the error record template for fixed disk, CD-ROM, and read/write optical media errors adapter-detected hardware errors are:

Comment Indicates adapter-detected fixed disk, CD-ROM, or read/write optical hardware failure.
Class Equals a value of H, which indicates a hardware error.
Report Equals a value of True, which indicates this error should be included when an error report is generated.
Log Equals a value of True, which indicates an error-log entry should be created when this error occurs.
Alert Equal to a value of FALSE, which indicates this error is not alertable.
Err_Type Equals a value of Perm, which indicates a permanent failure.
Err_Desc Equals a value of 1312, which indicates a disk operation failure.
Prob_Causes Equals the following values:
  • 3452, which indicates a device cable failure
  • 6310, which indicates a disk drive failure
User_Causes None.
User_Actions None.
Inst_Causes None.
Inst_Actions None.
Fail_Causes Equals the following values:
  • 3452, which indicates a storage device cable failure
  • 6310, which indicates a disk drive failure
  • 6330, which indicates a disk-drive electronics failure
Fail_Actions Equals a value of 0000, which indicates problem-determination procedures should be performed.
Detail_Data Equals a value of 156, 11, HEX. This value indicates hexadecimal format.
Note: The Detail_Data field in the err_rec structure contains the sc_error_log_df structure. The err_rec structure is defined in the /usr/include/sys/errids.h file. The sc_error_log_df structure is defined in the /usr/include/sys/scsi.h file.

The sc_error_log_df structure contains the following fields:

req_sense_data Contains the request-sense information from the particular device that had the error, if it is valid.
reserved2 Contains the segment count, which is the number of megabytes read from the device at the time the error occurred.
reserved3 Contains the number of bytes read since the segment count was last increased.

Refer to the Small Computer System Interface (SCSI) Specification for the format of the request-sense data for a particular device.

Error Record Values for Recovered Errors

The fields defined in the error record template for fixed disk, CD-ROM, and read/write optical media errors recovered errors are:

Comment Indicates fixed disk, CD-ROM, or read/write optical recovered error.
Class Equals a value of H, which indicates a hardware error.
Report Equals a value of True, which indicates this error should be included when an error report is generated.
Log Equals a value of True, which indicates an error log entry should be created when this error occurs.
Alert Equal to a value of FALSE, which indicates this error is not alertable.
Err_Type Equals a value of Temp, which indicates a temporary failure.
Err_Desc Equals a value of 1312, which indicates a physical volume operation failure.
Prob_Causes Equals the following values:
  • 5000, which indicates a media failure
  • 6310, which indicates a disk drive failure
User_Causes Equals a value of 5100, which indicates media is defective.
User_Actions Equals the following values:
  • 0000, which indicates problem-determination procedures should be performed
  • 1601, which indicates the removable media should be replaced and retried
Inst_Causes None.
Inst_Actions None.
Fail_Causes Equals the following values:
  • 5000, which indicates a media failure
  • 6310, which indicates a disk drive failure
Fail_Actions Equals the following values:
  • 0000, which indicates problem-determination procedures should be performed
  • 1601, which indicates the removable media should be replaced and retried
Detail_Data Equals a value of 156, 11, HEX. This value indicates hexadecimal format.
Note: The Detail_Data field in the err_rec structure contains the sc_error_log_df structure. The err_rec structure is defined in the /usr/include/sys/errids.h file. The sc_error_log_df structure is defined in the /usr/include/sys/scsi.h file.

The sc_error_log_df structure contains the following fields:

req_sense_data Contains the request-sense information from the particular device that had the error, if it is valid.
reserved2 Contains the segment count, which is the number of megabytes read from the device at the time the error occurred.
reserved3 Contains the number of bytes read since the segment count was last increased.

Refer to the Small Computer System Interface (SCSI) Specification for the format of the request-sense data for a particular device.

Error Record Values for Unknown Errors

The fields defined in the error record template for fixed disk, CD-ROM, and read/write optical media errors unknown errors are:

Comment Indicates fixed disk, CD-ROM, or read/write optical unknown failure.
Class Equals a value of H, which indicates a hardware error.
Report Equals a value of True, which indicates this error should be included when an error report is generated.
Log Equals a value of True, which indicates an error log entry should be created when this error occurs.
Alert Equal to a value of FALSE, which indicates this error is not alertable.
Err_Type Equals a value of Unkn, which indicates the type of error is unknown.
Err_Desc Equals a value of FE00, which indicates an undetermined error.
Prob_Causes Equals the following values:
  • 3300, which indicates an adapter failure
  • 5000, which indicates a media failure
  • 6310, which indicates a disk drive failure
User_Causes None.
User_Actions None.
Inst_Causes None.
Inst_Actions None.
Fail_Causes Equals a value of FFFF, which indicates the failure causes are unknown.
Fail_Actions Equals the following values:
  • 0000, which indicates problem-determination procedures should be performed
  • 1601, which indicates the removable media should be replaced and retried
Detail_Data Equals a value of 156, 11, HEX. This value indicates hexadecimal format.
Note: The Detail_Data field in the err_rec structure contains the sc_error_log_df structure. The err_rec structure is defined in the /usr/include/sys/errids.h file. The sc_error_log_df structure is defined in the /usr/include/sys/scsi.h file.

The sc_error_log_df structure contains the following fields:

req_sense_data Contains the request-sense information from the particular device that had the error, if it is valid.
reserved2 Contains the segment count, which is the number of megabytes read from the device at the time the error occurred.
reserved3 Contains the number of bytes read since the segment count was last increased.

Refer to the Small Computer System Interface (SCSI) Specification for the format of the request-sense data for a particular device.

Special Files

The scdisk SCSI device driver uses raw and block special files in performing its functions.

Attention: Data corruption, loss of data, or loss of system integrity (system crash) will occur if devices supporting paging, logical volumes, or mounted file systems are accessed using block special files. Block special files are provided for logical volumes and disk devices and are solely for system use in managing file systems, paging devices, and logical volumes. These files should not be used for other purposes.

The special files used by the scdisk device driver include the following (listed by type of device):

Related Information

Special Files Overview in AIX Version 4.3 Files Reference.

SCSI Subsystem Overview in AIX Version 4.3 Kernel Extensions and Device Support Programming Concepts.

A Typical Initiator-Mode SCSI Driver Transaction Sequence in AIX Version 4.3 Kernel Extensions and Device Support Programming Concepts.

Required SCSI Adapter Device Driver ioctl Commands in AIX Version 4.3 Kernel Extensions and Device Support Programming Concepts.

Understanding the Execution of Initiator I/O Requests in AIX Version 4.3 Kernel Extensions and Device Support Programming Concepts.

SCSI Error Recovery in AIX Version 4.3 Kernel Extensions and Device Support Programming Concepts.

Understanding the sc_buf Structure in AIX Version 4.3 Kernel Extensions and Device Support Programming Concepts.

SCSI Adapter Device Driver.

The close subroutine, ioctl or ioctlx subroutine, open, openx, or creat subroutine, read, readx, readv, or readvx subroutine, write, writex, writev, or writevx subroutine.

The cd Special File, omd Special File, rhdisk Special File.


[ Previous | Next | Contents | Home | Search ]