#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 */
*/
/* 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_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)
*
* 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 */
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;
+};
/*
char MediaType[MAX_NAME_LENGTH]; /* Type of this media */
char HostName[MAX_NAME_LENGTH]; /* Host name of writing computer */
- char LabelProg[32]; /* Label program name */
- char ProgVersion[32]; /* Program version */
- char ProgDate[32]; /* Program build date/time */
+ char LabelProg[50]; /* Label program name */
+ char ProgVersion[50]; /* Program version */
+ char ProgDate[50]; /* Program build date/time */
};
#define SER_LENGTH_Volume_Label 1024 /* max serialised length of volume label */
char ClientName[MAX_NAME_LENGTH];
char Job[MAX_NAME_LENGTH]; /* Unique name of this Job */
char FileSetName[MAX_NAME_LENGTH];
+ char FileSetMD5[MAX_NAME_LENGTH];
uint32_t JobType;
uint32_t JobLevel;
/* The remainder are part of EOS label only */