RAO - Recommended Access Order

The 3592 E07 implements a function that is called Recommended Access Order. This function provides the capability to improve multiple block recall and retrieval times. It provides an application with the optimized order in which a list of blocks must be recalled to minimize the required total time period.

An application uses the GRAO command to request that the drive generate a recommended access order for the User Data Segments that are sent in this command. After a GRAO command completes, use the RRAO command to receive the results.


The IOCTL queries the maximum number and size of User Data Segments (UDS) that are supported from tape drive and driver for the wanted uds_type: with or without geometry, the geometry can be used to build a representation of the physical layout of the UDS on tape.. The application calls this IOCTL before the GENERATE_RAO and RECEIVE_RAO IOCTLs are issued. The return in this IOCTL is to be used by the application to limit the number of UDS requested in calls to the GENERATE_RAO IOCTL.


The IOCTL is called to send a GRAO list (UDS's descriptors list) to request the drive to generate a Recommending Access Order list. The process method to create a RAO list is either 1 or 2. 1 does not reorder the UDS's list, but does calculate the estimated locate time for each UDS in the list, and 2 reorders the UDS's list and calculates the estimated locate time for each UDS in its resultant position. The type of UDS is either with or without the geometry. The uds_number must be not larger than max_host_uds_number returned in the QUERY_RAO_INFO IOCTL. A UDS descriptor has a name, partition number and beginning and ending logical object identifiers.


After a GENERATE_RAO IOCTL is completed, the application calls the RECEIVE_RAO IOCTL to receive a recommended access order of UDS from the drive. The application must allocate to the buffer an accurate size to receive the list.

The grao list, for the generate_rao and receive_rao structures, is in the following format when lists are sent or received. The structures for the headers and UDS segments are not provided by the device driver but is the responsibility of the calling application. It is defined in the IBM Enterprise Tape System 3592 SCSI Reference.

-- List Header
-- UDS Segment Descriptor (first)
-- UDS Segment Descriptor (last)