blob: a33c54e842e7085faeaa28f4ff7ff6d95cdeccb5 [file] [log] [blame]
/*
* 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 */