blob: 0b738de573aa9e0eb215ae219c9f619afabd4d1b [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 GLOBAL_H
#define GLOBAL_H
/* global_hdr_t - first page of every media file
*/
#define GLOBAL_HDR_SZ PGSZ
#define GLOBAL_HDR_MAGIC "xFSdump0"
#define GLOBAL_HDR_MAGIC_SZ 8
#define GLOBAL_HDR_VERSION_0 0
#define GLOBAL_HDR_VERSION_1 1
#define GLOBAL_HDR_VERSION_2 2
#define GLOBAL_HDR_VERSION_3 3
/* version 3 uses the full 32-bit inode generation number in direnthdr_t.
* version 2 adds encoding of holes and a change to on-tape inventory format.
* version 1 adds extended file attribute dumping.
* version 0 xfsrestore can't handle media produced
* by version 1 xfsdump.
*/
#define GLOBAL_HDR_VERSION GLOBAL_HDR_VERSION_3
#define GLOBAL_HDR_STRING_SZ 0x100
#define GLOBAL_HDR_TIME_SZ 4
#define GLOBAL_HDR_UUID_SZ 0x10
struct global_hdr {
char gh_magic[ GLOBAL_HDR_MAGIC_SZ ]; /* 8 8 */
/* unique signature of xfsdump */
uint32_t gh_version; /* 4 c */
/* header version */
uint32_t gh_checksum; /* 4 10 */
/* 32-bit unsigned additive inverse of entire header */
time32_t gh_timestamp; /* 4 14 */
/* time32_t of dump */
char gh_pad1[ 4 ]; /* 4 18 */
/* alignment */
uint64_t gh_ipaddr; /* 8 20 */
/* from gethostid(2), room for expansion */
uuid_t gh_dumpid; /* 10 30 */
/* ID of dump session */
char gh_pad2[ 0xd0 ]; /* d0 100 */
/* alignment */
char gh_hostname[ GLOBAL_HDR_STRING_SZ ]; /* 100 200 */
/* from gethostname(2) */
char gh_dumplabel[ GLOBAL_HDR_STRING_SZ ]; /* 100 300 */
/* label of dump session */
char gh_pad3[ 0x100 ]; /* 100 400 */
/* padding */
char gh_upper[ GLOBAL_HDR_SZ - 0x400 ]; /* c00 1000 */
/* header info private to upper software layers */
};
typedef struct global_hdr global_hdr_t;
/* used by main( ) to allocate and populate a global header template.
* drive managers will copy this into the write header.
*/
extern global_hdr_t * global_hdr_alloc( int argc, char *argv[ ] );
/* used by main( ) to free the global header template after drive ini.
*/
extern void global_hdr_free( global_hdr_t *ghdrp );
/* global_hdr_checksum_set - fill in the global media file header checksum.
* utility function for use by drive-specific strategies.
*/
extern void global_hdr_checksum_set( global_hdr_t *hdrp );
/* global_hdr_checksum_check - check the global media file header checksum.
* utility function for use by drive-specific strategies.
* returns BOOL_TRUE if ok, BOOL_FALSE if bad
*/
extern bool_t global_hdr_checksum_check( global_hdr_t *hdrp );
/* global_version_check - if we know this version number, return BOOL_TRUE
* else return BOOL_FALSE
*/
extern bool_t global_version_check( uint32_t version );
#endif /* GLOBAL_H */