ILB_io_criteria_rtn


cCall [ilb.ILB_io_criteria_rtn],<<OFFSET32 IOR>>
or  eax, eax
jz  error

Converts the contents of the IOR so that the associated drivers can carry out the I/O request. If necessary, the service converts scatter/gather descriptor addresses and scatter/gather buffer addresses from linear to physical. It also converts the block counts in the scatter/gather descriptors to byte counts. The service verifies the scatter/gather buffer alignment and scatter/gather descriptor count maximums.

IOR

Address of an IOR structure that contains information about the I/O request. The client must set the following members prior to calling the service:

IOR_req_vol_handle

Linear address of the IOS-allocated VRP for the volume.

IOR_sgd_lin_phys

Linear address of the array of scatter/gather descriptors for the request. The buffer address in each scatter/gather descriptor must also be a linear address and the buffer size of each descriptor must specify the number of blocks to be transferred to the buffer described by the descriptor.

IOR_num_sgds

Number of scatter/gather descriptors to be processed.


If this service modifies the IOR, it converts the scatter/gather descriptor block counts to byte counts, converts linear addresses in scatter/gather descriptors to physical addresses, sets the IOR_num_sgds member to the new number of descriptors, and converts the IOR_sgd_lin_phys member to a physical address if the scatter/gather descriptors are in the IOR. If the descriptors are not in the IOR and the drivers require the physical address of the descriptors, the service returns an error.

If an I/O request constraint cannot be met, the service leaves the IOR unchanged except for scatter/gather descriptor block counts which it converts to byte counts.

See also ILB, IOR