VMS Help  —  MRD Library, Return Values
    Upon successful completion, the Media Robot Driver library
    routines that access a medium-changer return the value MRD_
    STATUS_SUCCESS. On a failure, one of the following errors may
    be returned. The Media Robot Driver library will attempt to map
    SCSI failures to one of a small group of error codes, but not all
    errors have been anticipated.

    Many of the MRD routines accept a log_info argument that is a
    character array. When a SCSI error occurs, the the Sense Key,
    additional Sense Code and Additional Sense Code Qualifier are
    formatted into the space provided. If the error is an operating
    system specific error, then the text corresponding to the error
    will be copied into the space provided.

1  –  Common Values

    Common return values.

1.1  –  MRD_STATUS_PARAM

    This error is returned when a pointer argument passed to an MRD
    routine is NULL, unless the routine is documented as one allowing
    a NULL pointer.

1.2  –  MRD_STATUS_CART_INVALID

    For routines that accept a volume_tag argument to perform volume
    tag verification, this error indicates that the volume tag of the
    media doesn't match that passed to the function.

1.3  –  MRD_STATUS_CART_NOT_AVAIL

    This error can occur on the TL81n and TL82n family of DLT
    libraries when the source of a move is a drive and the cartridge
    in the drive is still on-line. These robots do not allow moving
    the cartridge until the drive is taken offline.

1.4  –  MRD_STATUS_CART_SIDE_INVALID

    For routines that use the cartridge_side argument, this error
    indicates that the value is neither one (1) nor two (2).

1.5  –  MRD_STATUS_PORT_INVALID

    This error is returned when the element address for a port is
    less than zero or greater than the number of ports.

1.6  –  MRD_STATUS_SLOT_INVALID

    This error is returned when the element address for a slot is
    less than zero or greater than the number of slots.

1.7  –  MRD_STATUS_TRANSPORT_INVALID

    This error is returned when the element address for a transport
    is less than zero or greater than the number of transports.

1.8  –  MRD_STATUS_INVALID_TYPE

    For routines that allow the specification of an element type
    argument, this error indicates that specified type was not one of
    SLOT, DRIVE, PORT or TRANSPORT.

1.9  –  MRD_STATUS_DESTINATION_FULL

    On routines that perform a SCSI Move Medium command, this error
    indicates that the destination element already has a cartridge in
    it.

1.10  –  MRD_STATUS_SOURCE_EMPTY

    On routines that perform a SCSI Move Medium command, this error
    indicates that the source element is empty.

1.11  –  MRD_STATUS_AUTOCLEAN

    This error occurs when a SCSI command fails with the ASC set
    to 0x30 and the ASCQ set to 0x3. On TL8nn libraries supporting
    Auto-clean, it indicates that a command was attempted while an
    auto-clean was in progress.

1.12  –  MRD_STATUS_CART_DAMAGED

    This error occurs when a SCSI command fails with the ASC set
    to 0x30, but the ASCQ is NOT a value of 0x3. The log_info will
    contain the ASCQ.

1.13  –  MRD_STATUS_CART_NOT_FOUND

    This error is returned by mrd_find_cartridge(3mrd) when it can't
    find the cartridge with the desired volume tag.

1.14  –  MRD_STATUS_ELEMENT_INVALID

    This error occurs when a SCSI command fails with the ASC set to
    0x21. The log_info will contain the ASCQ. This indicates that an
    invalid element address reached the medium-changer. For example,
    specifying the 13th slot when only 12 slots are present.

1.15  –  MRD_STATUS_INSFMEM

    The mrd_show(3mrd) and mrd_find_cartridge(3mrd) functions
    allocate virtual memory using malloc(3) to store temporary
    element data. If the attempt to allocate the memory fails, these
    routines will return this error.

1.16  –  MRD_STATUS_NO_ELEMENTS

    This error occurs in mrd_show(3mrd), mrd_find_cartridge(3mrd) and
    mrd_home(3mrd) when the medium-changer has no elements within the
    range and type specified by the arguments.

1.17  –  MRD_STATUS_NO_VISION

    This error occurs in mrd_find_cartridge(3mrd) when the medium-
    changer has no vision system with which to read bar-code labels.

1.18  –  MRD_STATUS_RES_INVALID

    This error occurs in mrd_home(3mrd) when the element data
    returned from mrd_show(3mrd) is not valid.

1.19  –  MRD_STATUS_ROBOT_ATTENTION

    This error occurs when a SCSI command fails with the ASC set to
    one of 0x29, 0x2A or 0x2F. The log_info contains the ASCQ. The
    SCSI translations for these error codes are:

    o  0x29 - Power-on, Reset or Bus device reset occurred

    o  0x2A - Mode Parameters Changed

    o  0x2F - Command cleared by another initiator

    This error also occurs when the ASC and ASCQ are zero, but the
    SCSI sense key is 6h.

1.20  –  MRD_STATUS_ROBOT_DOOR_OPENED

    This occurs when a SCSI command fails with the ASC set to 0x80
    and the ASCQ set to 0x0. On TL8nn libraries this typically
    indicates that the cabinet door was opened during a command
    operation.

1.21  –  MRD_STATUS_ROBOT_ILLEGAL_REQUEST

    This error occurs for a variety of reasons.

    It is used when a sanity check fails in the code that attempts
    to move a cartridge to the Pass-Through Mechanism, when the robot
    type isn't a TL82n.

    It is used in the mrd_lock(3mrd) code when the value is not one
    of ALLOW_REMOVAL or PREVENT_REMOVAL.

    It is used when the medium changer does not support the Prevent
    /Allow Medium Removal command or the lock value is not one or
    zero. The specific cause can be determined by examining the ASC
    /ASCQ values in the status data.

    It is used when a call to mrd_initialize_element(3mrd) is issued
    against a medium changer that does not support the Initialize
    Element Status command.

    It is used when the medium changer does not support the Position
    To Element command. The seven and five slot DLT loaders do not
    support the command, though the TL820 and TL810 family libraries
    do. Some models of TLZ6L and TLZ7L do not support the command and
    may take a long time to fail.

    It is used when the medium changer does not support the Ready
    Inport command. The TL820 family of DLT libraries support this
    command. The TL810 family of DLT libraries allows this command to
    succeed, but it doesn't perform any function.

    It is also used for a SCSI command failure, when the ASC is set
    to one of:

    o  0x1A - Parameter list length error

    o  0x20 - Invalid command operation code

    o  0x22 - Unsupported command

    o  0x24 - Illegal field in CDB

    o  0x25 - Logical unit not supported

    o  0x26 - Threshold parameters not supported

    o  0x28 - Import or Export element accessed

    o  0x2C - Command sequence error

    o  0x39 - Saving parameters not supported

    o  0x3D - Invalid bits in Identify message

    o  0x53 - Medium removal prevented

    This status is also returned when the ASC and ASCQ are zero, but
    the key is five (5).

1.22  –  MRD_STATUS_ROBOT_MECH_ERROR

    This error occurs as the result of a SCSI command failure, when
    the ASC is set to one of:

    o  0x15 - Positioning error.

    o  0x8B - Vendor unique; Pass-through mechanism errors on the
       TL82n

1.23  –  MRD_STATUS_SOURCE_INVALID

    This error occurs in mrd_home(3mrd) when the return address in
    the element data isn't valid.

1.24  –  MRD_STATUS_VENDOR_UNIQUE_ERROR

    This error occurs when the internal routine used to decode SCSI-
    2 errors encounters an error that it has not been written to
    antipicate.

    This error also returned when the ASC is zero and the ASCQ is not
    one of zero or six, and when ASC/ASCQ are both zero and the key
    is 9h.

1.25  –  MRD_STATUS_NO_SENSE

    This error is returned by mrd_scsi_decode(3mrd) when the asc,
    ascq and key values are all zero (0). It is also returned when
    the key value is less than zero or greater than 15.

1.26  –  MRD_STATUS_RECOVERED_ERROR

    This error occurs when a SCSI device returns only a sense key
    of 1h. This indicates that although a command successfully
    completed, the target device had performed some internal error
    recovery.

1.27  –  MRD_STATUS_MEDIUM_ERROR

    This error occurs when ASC and ASCQ are zero, but the sense key
    is 3h. This occurs when the target encounters a nonrecoverable
    error due to a flaw in the medium.

1.28  –  MRD_STATUS_ROBOT_HW_ERROR

    This error occurs when ASC and ASCQ are zero, but the sense key
    is 4h. This occurs when the target encounters a nonrecoverable
    hardware error.

1.29  –  MRD_STATUS_DATA_PROTECT

    This error is returned by mrd_scsi_decode(3mrd) when the asc and
    ascq are zero, but the key value is seven (7).

1.30  –  MRD_STATUS_BLANK_CHECK

    This error is returned by mrd_scsi_decode(3mrd) when the asc and
    ascq are zero, but the key value is eight (8).

1.31  –  MRD_STATUS_COPY_ABORTED

    This error is returned by mrd_scsi_decode(3mrd) when the asc and
    ascq are zero,

1.32  –  MRD_STATUS_SENSE_EQUAL

    This error is returned by mrd_scsi_decode(3mrd) when the asc and
    ascq are zero, but the key value is Ch (12).

1.33  –  MRD_STATUS_VOLUME_OVERFLOW

    This error is returned by mrd_scsi_decode(3mrd) when the asc and
    ascq are zero, but the key value is Dh (13).

1.34  –  MRD_STATUS_MISCOMPARE

    This error is returned by mrd_scsi_decode(3mrd) when the asc and
    ascq are zero, but the key value is Eh (14).

1.35  –  MRD_STATUS_SENSE_RESERVED

    This error is returned by mrd_scsi_decode(3mrd) when the asc and
    ascq are zero, but the key value is Fh (15).

1.36  –  MRD_STATUS_SCSI_CHECK

    The SCSI Check Condition error should never occur. It
    indicates that it is safe to use a Request Sense command
    and that you are likely to get a different error.

1.37  –  MRD_STATUS_SCSI_CONDMET

    The SCSI Condition Met status indicates a SCSI command completed
    with the status "Condition Met".

1.38  –  MRD_STATUS_SCSI_BUSY

    The SCSI Device is Busy status code indicates a SCSI command
    completed with the status "Busy".  Some TZ87x media changers are
    known to cause this condition.

1.39  –  MRD_STATUS_SCSI_INTER

    The SCSI Intermediate Command Completed status code indicates a
    SCSI command completed with the status "Intermediate".

1.40  –  MRD_STATUS_SCSI_INTER_CONDMET

    The SCSI Intermediate-Condition Met status code indicates a SCSI
    command completed.

1.41  –  MRD_STATUS_SCSI_RESCON

    The SCSI Reservation Conflict status code indicates a SCSI
    command completed with the status "Reservation Conflict".

1.42  –  MRD_STATUS_SCSI_TERM

    The SCSI Command Terminated status code indicates a SCSI command
    completed with the status "Terminated".

1.43  –  MRD_STATUS_SCSI_QUEUE

    The SCSI Queue Full status code indicates a SCSI command
    completed with the status "Queue Full".

1.44  –  MRD_STATUS_SCSI_RESERVED

    The SCSI Status Code Reserved return indicates a SCSI command
    completed with a status that wasn't listed in Chapter 7 of the
    SCSI-2 specification and is "Reserved".

1.45  –  MRD_STATUS_INIT_REQUIRED

    LUN not ready, Initializing command required.
    This is for the ASC/ASC code of 4/2.  It occurs
    when commands are sent to a TL810 family library that has
    auto-inventory on power-up turned off.

1.46  –  MRD_STATUS_DIAG_FAILED

    Diagnostic failure, component in ASCQ.This is the entire class of
    error codes with the ASC value set to 0x40.

1.47  –  MRD_STATUS_IDE

    Initiator detected error message received. This error code occurs
    when the ASC/ASCQ code is 0x48/0.

1.48  –  MRD_STATUS_OPERATOR

    Operator request. This error code occurs when the ASC code is
    0x5A and the ASCQ code is 0 or 1.

1.49  –  MRD_STATUS_LOG_ERROR

    This error code occurs when the ASC code is
    0x5B and the ASCQ code is 0, 1, 2 or 3.

1.50  –  MRD_STATUS_ELOG_OVERFLOW

    Error log overflow.  This error code occurs when the ASC code is
    0xA and the ASCQ code is 0.

1.51  –  MRD_STATUS_SYNC_XFER_ERROR

    Synchronous data transfer error.  This error code occurs when the
    ASC code is 0x1B and the ASCQ code is 0.

1.52  –  MRD_STATUS_ROBOT_COMM_ERROR

    This error code is used when an OpenVMS system service, such as
    $ASSIGN or $QIO, fails with a status of SS$_DRVERR. Generally
    SS$_DRVERR indicates a failure in the underlying device and the
    MRD can get the detailed device failure and return the correct
    MRD status code instead.

    This error is also returned when a SCSI Test Unit Ready command
    fails. The cause of the error can be determined by called mrd_
    request_sense(3mrd). This error also occurs as the result of a
    SCSI command failure, when the ASC is set to one of:

    o  0x08 - Logical unit communcation errors.

    o  0x43 - Message error

    o  0x45 - Select or Reselect failure

    o  0x47 - SCSI parity error

    o  0x48 - Initiator detected error message received

    o  0x49 - Invalid message error

    o  0x4A - Command phase error

    o  0x4B - Data phase error

    o  0x4E - Overlapped commands attempted

    o  0x54 - SCSI to host system interface failure

1.53  –  MRD_STATUS_DEVICE_INVALID

    This error code is used when an OpenVMS system service fails with
    the status SS$_NOSUCHDEV or SS$_IVDEVNAM. This will typically
    occur in mrd_startup(3mrd) when the caller tries to open a device
    which doesn't exist or uses an invalid device name.

    This error also occurs when the routine is called on behalf of
    a device controlled by the JU driver. The Media Robot Utility no
    longer uses the JU driver.

1.54  –  MRD_STATUS_ROBOT_NOT_READY

    Under OpenVMS and Digital UNIX, this error occurs as the result
    of a SCSI command failure, when the ASC is set to one of:

    o  0x80 - When the ASCQ is not zero (0).

    o  0x81 - Vendor unique; gripper errors on the TL82X and TL81X

    o  0x04 - Logical unit not ready

    o  0x3E - Logical unit has not been self configured

    o  0x40 - Diagnostic failure; ASCQ indicates component

    o  0x42 - Power-on self test failure

    o  0x44 - Internal target failure

    o  0x46 - Unsuccessful soft reset

    o  0x4C - Logical unit failed self-configuration

    This status is also returned when the ASC and ASCQ are zero, but
    the key is two (2).

1.55  –  MRD_STATUS_ROBOT_CMD_ABORTED

    This error code is used when an OpenVMS system service fails with
    the status SS$_ABORT.

1.56  –  MRD_STATUS_NOPRIV

    This error code is used when an OpenVMS system service fails
    with the status SS$_NOPRIV. This will typically occur in mrd_
    startup(3mrd) when the caller doesn't have sufficient privilege
    to assign a channel to the device.

1.57  –  MRD_STATUS_IVCHAN

    This error code is used when an OpenVMS system service fails
    with the status SS$_IVCHAN. It is likely when an operating system
    specific routine is used on a device that hasn't been opened by
    mrd_startup(3mrd).

1.58  –  MRD_STATUS_MOUNTED

    This error code is used when an OpenVMS system service fails with
    the status SS$_NOSUCHDEV or SS$_IVDEVNAM. This will typically
    occur in mrd_startup(3mrd) when the caller tries to open a device
    which doesn't exist or uses an invalid device name.

1.59  –  MRD_STATUS_PAGE_CODE

    This error occurs in mrd_startup(3mrd) when a SCSI Mode Sense
    command fails to return the expected data. It uses the SCSI
    Element Address Assignment mode page to fill in the element count
    and base address fields of the robot_info_t structure. If the
    data returned by the medium changer does not have the expected
    page code, this error is returned. This error has been seen when
    medium changers are connected to HS family array controllers
    running V2.7 firmware.

1.60  –  MRD_STATUS_EBUSY

    This error code is used when an OpenVMS system service fails
    with the status SS$_DEVALLOC. This generally happens in mrd_
    startup(3mrd) when another process already has the device
    allocated.

1.61  –  MRD_STATUS_DEVOFFLINE

    This error code is used when an OpenVMS system service fails with
    the status SS$_DEVOFFLINE and SS$_MEDOFL.
Close Help