| /* |
| * Copyright (c) 2000-2001 Silicon Graphics, Inc. |
| * All Rights Reserved. |
| * |
| * This program is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU General Public License as |
| * published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it would be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program; if not, write the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
| */ |
| |
| #ifndef REC_HDR_H |
| #define REC_HDR_H |
| |
| |
| /* this is the drive-specific portion of the drive header defined |
| * in drive.h (dh_specific). the first record in a media file begins |
| * with a global_hdr_t with this embedded in dh_specific. all subsequent |
| * records begin with one of these. note that the first page (STAPE_HDR_SZ) |
| * bytes are always reserved for the header; the user data begins at |
| * record offset STAPE_HDR_SZ. Note also that the first record of each |
| * media file is unused except for the header; user data begins STAPE_HDR_SZ |
| * bytes into the second record. |
| */ |
| |
| /* |
| * This structure is used by both drive_minrmt and drive_scsi. New |
| * strategies should define their own here if they need a different |
| * structure, and add a endian conversion function to arch_xlate.c |
| */ |
| struct rec_hdr { |
| uint64_t magic; /* 8 8 */ |
| /* magic number STAPE_MAGIC (see above) |
| */ |
| int32_t version; /* 4 c */ |
| /* version number STAPE_VERSION (see above) |
| */ |
| int32_t blksize; /* 4 10 */ |
| /* size of tape block in bytes |
| */ |
| int32_t recsize; /* 4 14 */ |
| /* size of this record in bytes, including 4k header |
| */ |
| int32_t capability; /* 4 18 */ |
| /* tape drive capabilities (from drive.h) |
| */ |
| char pad1[8]; /* 8 20 */ |
| /* padding |
| */ |
| off64_t file_offset; /* 8 28 */ |
| /* this record's byte offset into the media file. |
| * raw, includes header. |
| */ |
| off64_t first_mark_offset; /* 8 30 */ |
| /* raw media file byte offset of first mark set |
| * in this record. set to -1 if no marks in record |
| */ |
| uint32_t rec_used; /* 4 34 */ |
| /* portion of record containing user data plus rec hdr (bytes). |
| * normally set to record size. last record written may |
| * indicate smaller value. includes record header. |
| */ |
| int32_t checksum; /* 4 38 */ |
| |
| int32_t ischecksum; /* 4 3c */ |
| |
| uuid_t dump_uuid; /* 10 4c */ |
| |
| char pad2[0x1b4]; /* 1b4 200 */ |
| }; /* pad to sizeof drive_hdr_t dh_specific */ |
| |
| typedef struct rec_hdr rec_hdr_t; |
| |
| #endif /* REC_HDR_H */ |