]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/jcr.h
Server address binding + bscan updates -- see kes25Sep02
[bacula/bacula] / bacula / src / jcr.h
index 3b7139621dc70aa5000f9742ce542e364a4f17cb..dc4d775ba1a5d9c685c381b98c359b1684f6808f 100644 (file)
@@ -32,7 +32,7 @@
 #ifndef __JCR_H_
 #define __JCR_H_ 1
 
-/* Backup/Verify level code */
+/* Backup/Verify level code. These are stored in the DB */
 #define L_FULL                   'F'
 #define L_INCREMENTAL            'I'  /* since last backup */
 #define L_DIFFERENTIAL           'D'  /* since last full backup */
 #define L_SINCE                  'S'
 #define L_VERIFY_CATALOG         'C'  /* verify from catalog */
 #define L_VERIFY_INIT            'V'  /* verify save (init DB) */
-#define L_VERIFY_VOLUME          'O'  /* verify we can read volume */
+#define L_VERIFY_VOLUME_TO_CATALOG 'O'  /* verify Volume to catalog entries */
 #define L_VERIFY_DATA            'A'  /* verify data on volume */
 
 
-/* Job Types */
-#define JT_BACKUP                'B'
-#define JT_VERIFY                'V'
-#define JT_RESTORE               'R'
+/* Job Types. These are stored in the DB */
+#define JT_BACKUP                'B'  /* Backup Job */
+#define JT_VERIFY                'V'  /* Verify Job */
+#define JT_RESTORE               'R'  /* Restore Job */
 #define JT_CONSOLE               'C'  /* console program */
 #define JT_ADMIN                 'D'  /* admin job */
 #define JT_ARCHIVE               'A'
 
-/* Job Status */
-#define JS_Created               'C'
-#define JS_Running               'R'
-#define JS_Blocked               'B'
+/* Job Status. Some of these are stored in the DB */
+#define JS_Created               'C'  /* created but not yet running */
+#define JS_Running               'R'  /* running */
+#define JS_Blocked               'B'  /* blocked */
 #define JS_Terminated            'T'  /* terminated normally */
 #define JS_ErrorTerminated       'E'  /* Job terminated in error */
 #define JS_Error                 'e'  /* Non-fatal error */
@@ -68,7 +68,9 @@
 #define JS_WaitMount             'M'  /* waiting for Mount */
 
 #define job_cancelled(jcr) \
-  (jcr->JobStatus == JS_Cancelled || jcr->JobStatus == JS_ErrorTerminated)
+  (jcr->JobStatus == JS_Cancelled || \
+   jcr->JobStatus == JS_ErrorTerminated || \
+   jcr->JobStatus == JS_FatalError)
 
 typedef void (JCR_free_HANDLER)(struct s_jcr *jcr);
 
@@ -103,8 +105,10 @@ struct s_jcr {
    time_t end_time;                   /* job end time */
    POOLMEM *VolumeName;               /* Volume name desired -- pool_memory */
    POOLMEM *client_name;              /* client name */
+   char *RestoreBootstrap;            /* Bootstrap file to restore */
    char *sd_auth_key;                 /* SD auth key */
-   MSGS *msgs;                        /* Message resource */
+   MSGS *jcr_msgs;                    /* Copy of message resource -- actually used */
+   uint32_t ClientId;                 /* Client associated with Job */
 
    /* Daemon specific part of JCR */
    /* This should be empty in the library */
@@ -121,26 +125,26 @@ struct s_jcr {
    POOL *pool;                        /* Pool resource */
    FILESET *fileset;                  /* FileSet resource */
    CAT *catalog;                      /* Catalog resource */
+   MSGS *messages;                    /* Default message handler */
    int SDJobStatus;                   /* Storage Job Status */
    int mode;                          /* manual/auto run */
    B_DB *db;                          /* database pointer */
-   int MediaId;                       /* DB record IDs associated with this job */
-   int ClientId;                      /* Client associated with file */
+   uint32_t MediaId;                  /* DB record IDs associated with this job */
    uint32_t PoolId;                   /* Pool record id */
    FileId_t FileId;                   /* Last file id inserted */
    uint32_t FileIndex;                /* Last FileIndex processed */
    POOLMEM *fname;                    /* name to put into catalog */
    int fn_printed;                    /* printed filename */
-   char *stime;                       /* start time for incremental/differential */
+   POOLMEM *stime;                    /* start time for incremental/differential */
    JOB_DBR jr;                        /* Job record in Database */
-   int RestoreJobId;                  /* Id specified by UA */
+   uint32_t RestoreJobId;             /* Id specified by UA */
    char *RestoreWhere;                /* Where to restore the files */
 #endif /* DIRECTOR_DAEMON */
 
 #ifdef FILE_DAEMON
    /* File Daemon specific part of JCR */
    uint32_t num_files_examined;       /* files examined this job */
-   char *last_fname;                  /* last file saved */
+   POOLMEM *last_fname;               /* last file saved/verified */
    /*********FIXME********* add missing files and files to be retried */
    int incremental;                   /* set if incremental for SINCE */
    time_t mtime;                      /* begin time for SINCE */
@@ -151,7 +155,7 @@ struct s_jcr {
    char *big_buf;                     /* I/O buffer */
    POOLMEM *compress_buf;             /* Compression buffer */
    int32_t compress_buf_size;         /* Length of compression buffer */
-   char *where;                       /* Root where to restore */
+   POOLMEM *where;                    /* Root where to restore */
    int buf_size;                      /* length of buffer */
    FF_PKT *ff;                        /* Find Files packet */
    char stored_addr[MAX_NAME_LENGTH]; /* storage daemon address */
@@ -163,25 +167,31 @@ struct s_jcr {
 
 #ifdef STORAGE_DAEMON
    /* Storage Daemon specific part of JCR */
+   struct s_jcr *next_dev;            /* next JCR attached to device */
+   struct s_jcr *prev_dev;            /* previous JCR attached to device */
    pthread_cond_t job_start_wait;     /* Wait for FD to start Job */
    int type;
    DEVRES *device;                    /* device to use */
    VOLUME_CAT_INFO VolCatInfo;        /* Catalog info for desired volume */
-   POOLMEM *job_name;                    /* base Job name (not unique) */
-   POOLMEM *fileset_name;                /* FileSet */
-   POOLMEM *pool_name;                   /* pool to use */
-   POOLMEM *pool_type;                   /* pool type to use */
-   POOLMEM *media_type;                  /* media type */
-   POOLMEM *dev_name;                    /* device name */
+   POOLMEM *job_name;                 /* base Job name (not unique) */
+   POOLMEM *fileset_name;             /* FileSet */
+   POOLMEM *pool_name;                /* pool to use */
+   POOLMEM *pool_type;                /* pool type to use */
+   POOLMEM *media_type;               /* media type */
+   POOLMEM *dev_name;                 /* device name */
+   VOL_LIST *VolList;                 /* list to read */
    long NumVolumes;                   /* number of volumes used */
    long CurVolume;                    /* current volume number */
    int mode;                          /* manual/auto run */
+   int spool_attributes;              /* set if spooling attributes */
+   int no_attributes;                 /* set if no attributes wanted */
    int label_status;                  /* device volume label status */
    int label_errors;                  /* count of label errors */
    int session_opened;
    DEV_RECORD rec;                    /* Read/Write record */
    long Ticket;                       /* ticket for this job */
    uint32_t VolFirstFile;             /* First file index this Volume */
+   uint32_t FileIndex;                /* Current File Index */
    uint32_t start_block;              /* Start write block */
    uint32_t start_file;               /* Start write file */
    uint32_t end_block;                /* Ending block written */
@@ -229,6 +239,7 @@ extern JCR *new_jcr(int size, JCR_free_HANDLER *daemon_free_jcr);
 extern void free_jcr(JCR *jcr);
 extern void free_locked_jcr(JCR *jcr);
 extern JCR *get_jcr_by_id(uint32_t JobId);
+extern JCR *get_jcr_by_session(uint32_t SessionId, uint32_t SessionTime);
 extern JCR *get_jcr_by_partial_name(char *Job);
 extern JCR *get_jcr_by_full_name(char *Job);
 extern JCR *get_next_jcr(JCR *jcr);