There have been a few posts in this thread that more or less stated
that only complete physical blocks could be read into storage from a
device.

This is not strictly true.

There is the obvious case of truncation, where the number of bytes
the device has been requested to transfer is less than the actual
physical size of the block.

For CCW types of I/O operations (as opposed to TCW types) there is
also the possibility of exploiting the "Skip" feature of the
channel.

Bit 35 (format-0 CCWs) or bit 11 (format-1 CCWs) of the CCW is
referred to as the Skip Flag Bit.  When this bit is one, the channel
suppresses the transfer of data into storage.  This flag bit is
valid ONLY for read, read-backward, sense ID, or sense operations.
Note that the storage device still engages with the data transfer to
the channel and all of the data error checking functions (such as
ECC) still occur.  It is the channel that suppresses the storage of
data into memory.  When combined with Data Chaining this can be used
to store subsets of a data block into potentially discontiguous
areas of memory.

I do not believe that any of the access methods exploit this,
however.

OPEN/CLOSE/EOV at one time used this feature when processing
Standard User Label tapes.  The interesting portion of the channel
program was a Read with the Skip Bit on, command chained to a
Transfer In Channel back to the Read.  When no errors occurred, the
channel program ended with Unit Exception status when the Tape Mark
at the end of the label set was encountered.

Bob

Reply via email to