blob: 0b727e5f0c79835c9ab72fee7717027763eb41f5 [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 MEDIA_H
#define MEDIA_H
/* media.[hc] - media abstraction
*/
/* media_hdr_t - media file header
*
* This header structure will be placed at the beginning of the
* media object files by the drive manager do_begin_write() operator,
* and will be extracted from the beginnining of the media object files by
* the do_begin_read() operator. A media header_t has three parts: generally
* useful info, media strategy-specific info, and upper layer info. The hdr
* argument of the mo_begin_write() operator will be stuffed into the
* upper layer info, and extracted for the upper layer by mo_begin_read().
*/
#define MEDIA_HDR_SZ sizeofmember( drive_hdr_t, dh_upper )
struct media_hdr {
char mh_medialabel[ GLOBAL_HDR_STRING_SZ ]; /* 100 100 */
/* label of media object containing file */
char mh_prevmedialabel[ GLOBAL_HDR_STRING_SZ ]; /* 100 200 */
/* label of upstream media object */
char mh_pad1[ GLOBAL_HDR_STRING_SZ ]; /* 100 300 */
/* in case more labels needed */
uuid_t mh_mediaid; /* 10 310 */
/* ID of media object */
uuid_t mh_prevmediaid; /* 10 320 */
/* ID of upstream media object */
char mh_pad2[ GLOBAL_HDR_UUID_SZ ]; /* 10 330 */
/* in case more IDs needed */
uint32_t mh_mediaix; /* 4 334 */
/* 0-based index of this media object within the dump stream */
uint32_t mh_mediafileix; /* 4 338 */
/* 0-based index of this file within this media object */
uint32_t mh_dumpfileix; /* 4 33c */
/* 0-based index of this file within this dump stream */
uint32_t mh_dumpmediafileix; /* 4 340 */
/* 0-based index of file within dump stream and media object */
uint32_t mh_dumpmediaix; /* 4 344 */
/* 0-based index of this dump within the media object */
int32_t mh_strategyid; /* 4 348 */
/* ID of the media strategy used to produce this dump */
char mh_pad3[ 0x38 ]; /* 38 380 */
/* padding */
char mh_specific[ 0x80 ]; /* 80 400 */
/* media strategy-specific info */
char mh_upper[ MEDIA_HDR_SZ - 0x400 ]; /* 400 800 */
/* header info private to upper software layers */
};
typedef struct media_hdr media_hdr_t;
/* macros to mark a media file as a terminator. artifact of original
* media_rmvtape media strategy
*/
#define MEDIA_TERMINATOR_CHK( mrhp ) ( mrhp->mh_specific[ 0 ] & 1 )
#define MEDIA_TERMINATOR_SET( mwhp ) ( mwhp->mh_specific[ 0 ] |= 1 )
/* media strategy IDs. artifactis of first version of xfsdump
*/
#define MEDIA_STRATEGY_SIMPLE 0
#define MEDIA_STRATEGY_RMVTAPE 1
#endif /* MEDIA_H */