[  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 
only
 
- CD-ROM devices only
 
- Fixed disk, CD-ROM, and read/write optical 
devices
 
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:
- SCSI fixed disks and read/write optical drives must 
support a block size of 512 bytes per block.
 
- If mode sense is supported, the write-protection 
(WP) bit must also be supported for SCSI fixed disks and read/write optical 
drives.
 
- SCSI fixed disks and read/write optical drives must 
report the hardware retry count in bytes 16 and 17 of the request sense data for 
recovered errors. If the fixed disk or read/write optical drive does not support 
this, the system error log may indicate premature drive failure.
 
- SCSI CD-ROM and read/write optical drives must 
support the 10-byte SCSI read command.
 
 
- SCSI fixed disks and read/write optical drives must 
support the SCSI write and verify command and the 6-byte SCSI write command. 
 
- To use the AIX format command 
operation on read/write optical media, the drive must support setting the format 
options valid (FOV) bit to 0 for the defect list header of the SCSI format unit 
command. If the drive does not support this, the user can write an application for 
the drive so that it formats media using the DKFORMAT operation.
 
- If a SCSI CD-ROM drive uses CD_ROM Data Mode 
1, it must support a block size of 512 bytes per block.
 
- If a SCSI CD-ROM drive uses CD_ROM data Mode 2 
Form 1, it must support a block size of 2048 bytes per block.
 
- If a SCSI CD-ROM drive uses CD_ROM data Mode 2 
Form 2, it must support a block size of 2336 bytes per block.
 
- If a SCSI CD-ROM drive uses CD_DA mode, it 
must support a block size of 2352 bytes per block.
 
- To control volume using the DKAUDIO (play 
audio) operation, the device must support SCSI-2 mode data page 0xE.
 
- To use the DKAUDIO (play audio) operation, 
the device must support the following SCSI-2 optional commands:
- read sub-channel
 
- pause resume
 
- play audio MSF
 
- play audio track index
 
- read TOC
 
 
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):
- Fixed disk devices:
| /dev/rhdisk0, 
/dev/rhdisk1,..., /dev/rhdiskn | 
  Provide an interface to allow SCSI device drivers character access (raw I/O 
access and control functions) to SCSI fixed disks. | 
| /dev/hdisk0, 
/dev/hdisk1,..., /dev/hdiskn | 
  Provide an interface to allow SCSI device drivers block I/O access to SCSI 
fixed disks. | 
 
- CD-ROM devices:
| /dev/rcd0, 
/dev/rcd1,..., /dev/rcdn | 
Provide an interface to allow SCSI device drivers character access(raw I/O access and control functions) to SCSI CD-ROM disks. | 
| /dev/cd0, /dev/cd1,..., 
/dev/cdn | 
Provide an interface to allow SCSI device drivers block I/O access to SCSI CD-ROM disks. | 
 
- Read/write optical devices:
| /dev/romd0, /dev/romd1,..., /dev/romdn | 
  Provide an interface to allow SCSI device drivers character access (raw I/O 
access and control functions) to SCSI read/write optical devices. | 
| /dev/omd0, /dev/omd1,..., /dev/omdn | 
  Provide an interface to allow SCSI device drivers block I/O access to SCSI 
read/write optical devices. | 
Note: The prefix r on a 
special file name indicates the drive is accessed as a raw device rather than a block 
device. Performing raw I/O with a fixed disk, CD-ROM, or read/write optical drive 
requires that all data transfers be in multiples of the device block size. Also, 
all lseek subroutines that are made to the raw device driver must result in a 
file pointer value that is a multiple of the device block size.
 
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  ]