]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/record.h
This commit was manufactured by cvs2svn to create tag
[bacula/bacula] / bacula / src / stored / record.h
index 4824ecc34f1f28d36e47d04a854059bb96b28b34..dd3047d478af6b6e1bfa893ffd9a9cda292fc2e8 100644 (file)
@@ -38,6 +38,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 */
  */
 
 /* 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)
  * 
  *  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 +92,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;
+};           
 
 
 /*