X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fstored%2Frecord.h;h=b13cfdcf83a3c68d2fe37848945d34b1fb87c6ee;hb=4718c473719aceed64dc1ab4c645ae337bbfecbd;hp=327b2d525e6b06de46b773138416ef8bab8a92d5;hpb=e1187372073c4190d58582372c26400b69af3b6f;p=bacula%2Fbacula diff --git a/bacula/src/stored/record.h b/bacula/src/stored/record.h index 327b2d525e..b13cfdcf83 100644 --- a/bacula/src/stored/record.h +++ b/bacula/src/stored/record.h @@ -2,43 +2,55 @@ * Record, and label definitions for Bacula * media data format. * + * Kern Sibbald, MM + * * Version $Id$ * */ /* - Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker + Bacula® - The Network Backup Solution + + Copyright (C) 2000-2006 Free Software Foundation Europe e.V. - 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; either version 2 of - the License, or (at your option) any later version. + The main author of Bacula is Kern Sibbald, with contributions from + many others, a complete list can be found in the file AUTHORS. + This program is Free Software; you can redistribute it and/or + modify it under the terms of version two of the GNU General Public + License as published by the Free Software Foundation and included + in the file LICENSE. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of + This program is distributed in the hope that it will 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 to the Free - Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, - MA 02111-1307, USA. + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. - */ + Bacula® is a registered trademark of John Walker. + The licensor of Bacula is the Free Software Foundation Europe + (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, + Switzerland, email:ftf@fsfeurope.org. +*/ #ifndef __RECORD_H #define __RECORD_H 1 /* Return codes from read_device_volume_label() */ -#define VOL_NOT_READ 0 /* Volume label not read */ -#define VOL_OK 1 /* volume name OK */ -#define VOL_NO_LABEL 2 /* volume not labeled */ -#define VOL_IO_ERROR 3 /* volume I/O error */ -#define VOL_NAME_ERROR 4 /* Volume name mismatch */ -#define VOL_CREATE_ERROR 5 /* Error creating label */ -#define VOL_VERSION_ERROR 6 /* Bacula version error */ -#define VOL_LABEL_ERROR 7 /* Bad label type */ -#define VOL_NO_MEDIA 8 /* Hard error -- no media present */ +enum { + VOL_NOT_READ = 1, /* Volume label not read */ + VOL_OK, /* volume name OK */ + VOL_NO_LABEL, /* volume not labeled */ + VOL_IO_ERROR, /* volume I/O error */ + VOL_NAME_ERROR, /* Volume name mismatch */ + VOL_CREATE_ERROR, /* Error creating label */ + VOL_VERSION_ERROR, /* Bacula version error */ + VOL_LABEL_ERROR, /* Bad label type */ + VOL_NO_MEDIA /* Hard error -- no media present */ +}; /* See block.h for RECHDR_LENGTH */ @@ -61,12 +73,12 @@ */ /* Record state bit definitions */ -#define REC_NO_HEADER 0x01 /* No header read */ -#define REC_PARTIAL_RECORD 0x02 /* returning partial record */ -#define REC_BLOCK_EMPTY 0x04 /* not enough data in block */ -#define REC_NO_MATCH 0x08 /* No match on continuation data */ -#define REC_CONTINUATION 0x10 /* Continuation record found */ -#define REC_ISTAPE 0x20 /* Set if device is tape */ +#define REC_NO_HEADER (1<<0) /* No header read */ +#define REC_PARTIAL_RECORD (1<<1) /* returning partial record */ +#define REC_BLOCK_EMPTY (1<<2) /* not enough data in block */ +#define REC_NO_MATCH (1<<3) /* No match on continuation data */ +#define REC_CONTINUATION (1<<4) /* Continuation record found */ +#define REC_ISTAPE (1<<5) /* Set if device is tape */ #define is_partial_record(r) ((r)->state & REC_PARTIAL_RECORD) #define is_block_empty(r) ((r)->state & REC_BLOCK_EMPTY) @@ -74,13 +86,14 @@ /* * DEV_RECORD for reading and writing records. * It consists of a Record Header, and the Record Data - * + * * This is the memory structure for the record header. */ -typedef struct s_dev_rec { - int sync; /* synchronous */ - /* File and Block are always returned on reading records, but - * only returned on writing if sync is set (obviously). +struct BSR; /* satisfy forward reference */ +struct DEV_RECORD { + dlink link; /* link for chaining in read_record.c */ + /* File and Block are always returned during reading + * and writing records. */ uint32_t File; /* File number */ uint32_t Block; /* Block number */ @@ -91,9 +104,11 @@ typedef struct s_dev_rec { uint32_t data_len; /* current record length */ uint32_t remainder; /* remaining bytes to read/write */ uint32_t state; /* state bits */ + BSR *bsr; /* pointer to bsr that matched */ uint8_t ser_buf[WRITE_RECHDR_LENGTH]; /* serialized record header goes here */ POOLMEM *data; /* Record data. This MUST be a memory pool item */ -} DEV_RECORD; + int32_t match_stat; /* bsr match status */ +}; /* @@ -103,20 +118,20 @@ typedef struct s_dev_rec { */ #define PRE_LABEL -1 /* Vol label on unwritten tape */ #define VOL_LABEL -2 /* Volume label first file */ -#define EOM_LABEL -3 /* Writen at end of tape */ +#define EOM_LABEL -3 /* Writen at end of tape */ #define SOS_LABEL -4 /* Start of Session */ #define EOS_LABEL -5 /* End of Session */ #define EOT_LABEL -6 /* End of physical tape (2 eofs) */ -/* +/* * Volume Label Record. This is the in-memory definition. The * tape definition is defined in the serialization code itself * ser_volume_label() and unser_volume_label() and is slightly different. */ - + struct Volume_Label { - /* + /* * The first items in this structure are saved * in the DEVICE buffer, but are not actually written * to the tape. @@ -124,7 +139,7 @@ struct Volume_Label { int32_t LabelType; /* This is written in header only */ uint32_t LabelSize; /* length of serialized label */ /* - * The items below this line are stored on + * The items below this line are stored on * the tape */ char Id[32]; /* Bacula Immortal ... */ @@ -143,8 +158,8 @@ struct Volume_Label { float64_t write_date; /* Date this label written */ float64_t write_time; /* Time this label written */ - char VolName[MAX_NAME_LENGTH]; /* Volume name */ - char PrevVolName[MAX_NAME_LENGTH]; /* Previous Volume Name */ + char VolumeName[MAX_NAME_LENGTH]; /* Volume name */ + char PrevVolumeName[MAX_NAME_LENGTH]; /* Previous Volume Name */ char PoolName[MAX_NAME_LENGTH]; /* Pool name */ char PoolType[MAX_NAME_LENGTH]; /* Pool type */ char MediaType[MAX_NAME_LENGTH]; /* Type of this media */