X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fstored%2Frecord.h;h=2267d8a4733579c802fd7f2bad7ce3a5c963a738;hb=dc43fa5c6823b93c4206888e3bf639982af4563b;hp=4824ecc34f1f28d36e47d04a854059bb96b28b34;hpb=669660ef3da87f94461c1410e892fae02bd50e22;p=bacula%2Fbacula diff --git a/bacula/src/stored/record.h b/bacula/src/stored/record.h index 4824ecc34f..2267d8a473 100644 --- a/bacula/src/stored/record.h +++ b/bacula/src/stored/record.h @@ -2,11 +2,13 @@ * Record, and label definitions for Bacula * media data format. * + * Kern Sibbald, MM + * * Version $Id$ * */ /* - Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker + Copyright (C) 2000-2004 Kern Sibbald and John Walker This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -38,6 +40,7 @@ #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 */ /* See block.h for RECHDR_LENGTH */ @@ -60,12 +63,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) @@ -76,10 +79,11 @@ * * 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 */ @@ -90,9 +94,10 @@ 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; +}; /*