Vendor extensions¶
The QIC standards fix the recording, the header and the first 57 bytes of a volume table entry. Everything after that, and often the volume contents too, was decided by the backup program that wrote the tape. This section documents the vendor layouts Tapewyrm has read from real tapes.
Each layout here is encoded as a volume profile in
packages/qiclib/qiclib/volume/profiles/. A profile answers three questions:
which volume table fields sit where ([vtbl]), how wide the compression
extent fields are ([extent]), and which parser reads the volume
([fileset]).
Layouts¶
| Page | Software | Recognised by | Volume contents | Status |
|---|---|---|---|---|
| Colorado (CMS) backup | Colorado Memory Systems / HP Colorado Backup | 113 at VTBL byte 58 and CMS at 62 |
QIC-113 extended, QIC-122 compressed | Bench: QIC-80 and QIC-3010 tapes recovered |
| MTN backup | Unknown; the volume table says MTN |
MTN at VTBL byte 58 |
QIC-113 Basic DOS, QIC-122 compressed with 4-byte extent offsets | Bench: two QIC-80 tapes recovered |
Two more profiles, qicstream-v2 and novastor, were written from another
project's reader source code and have never seen a real tape. They are
listed on Volume table.
Adding a layout¶
When a tape reads as vendor-unknown or qic80-rev-n with warnings, its
software has a layout of its own. To work it out:
- Run
qicsilver identify --jsonand look at the volume table record'sraw_hex. - Look for a mark the software wrote in bytes 57–127: a signature, a name,
a version word. That becomes the profile's
[match]. - Find the sizes and the label by their values: a directory size that fits the segments, a data size that fits the compression ratio, printable text.
- Try the reading by hand with
--vtbl-field,--extent-offset-bytesand--fileset-parser(Manual read overrides). - When it reads, write the profile (Writing a volume profile).
Note
Never put file names, directory listings or file contents from a real tape in a profile, a test fixture or these pages. Header and volume table bytes are fine. See Keep captures private.