Blocks are low level components that is used for writing to the tape: one block is written with one SCSI write command. Blocks can contain records or can be raw data blocks.
Records are used to pack the meta-data and file contents into the blocks.
Layout of media volumes on a medium
Medium volume layout consists of:
Structure of a medium volume and records inside the block
Blocks and records must be written in appropriate order.
df_BlockHeader_t contains all of the information that is written to each of non-raw blocks.
Blocks that were written in one migration are numbered starting from 1 including raw data blocks. Each migration restarts the numbering. However, if the block numbers are not consistent, it is an indication of corrupted data format.
Block cookie is another measure of detecting data format corruption. Block magic cookie must be equal to df_blkCookie_c.
Each block can be one of the following types:
Blocks of different types can be mixed together. They must be in separate files or separated by file marks on tape.
All records inside the blocks have common df_RecCmn_t part that contains basic record information: sequence number, magic cookie, record type, etc.
Records that are written in one migration are also numbered, starting from 1. Numbering is not reset with each new block, but it continues. It is reset with each migration.
IVD records also have magic cookie. It must be equal to df_recCookie_c.
Records were designed to allow flexibility, extensibility and performance.
Types of records that are used to package information are:
Correct sequence of records can be seen on the following state diagram:
State diagram to read valid data format structure.
1.5.6