/*
Bacula® - The Network Backup Solution
- Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
+ Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
The main author of Bacula is Kern Sibbald, with contributions from
many others, a complete list can be found in the file AUTHORS.
#define JT_MIGRATED_JOB 'M' /* A previous backup job that was migrated */
#define JT_VERIFY 'V' /* Verify Job */
#define JT_RESTORE 'R' /* Restore Job */
-#define JT_CONSOLE 'c' /* console program */
+#define JT_CONSOLE 'U' /* console program */
#define JT_SYSTEM 'I' /* internal system "job" */
#define JT_ADMIN 'D' /* admin job */
#define JT_ARCHIVE 'A' /* Archive Job */
-#define JT_COPY 'C' /* Copy Job */
+#define JT_JOB_COPY 'C' /* Copy of a Job */
+#define JT_COPY 'c' /* Copy Job */
#define JT_MIGRATE 'g' /* Migration Job */
#define JT_SCAN 'S' /* Scan Job */
#define JS_Running 'R' /* running */
#define JS_Blocked 'B' /* blocked */
#define JS_Terminated 'T' /* terminated normally */
+#define JS_Warnings 'W' /* Terminated normally with warnings */
#define JS_ErrorTerminated 'E' /* Job terminated in error */
#define JS_Error 'e' /* Non-fatal error */
#define JS_FatalError 'f' /* Fatal error */
#define JS_Differences 'D' /* Verify differences */
#define JS_Canceled 'A' /* canceled by user */
+#define JS_Incomplete 'I' /* Incomplete Job */
#define JS_WaitFD 'F' /* waiting on File daemon */
#define JS_WaitSD 'S' /* waiting on the Storage daemon */
#define JS_WaitMedia 'm' /* waiting for new media */
#define job_canceled(jcr) \
(jcr->JobStatus == JS_Canceled || \
jcr->JobStatus == JS_ErrorTerminated || \
- jcr->JobStatus == JS_FatalError)
+ jcr->JobStatus == JS_FatalError || \
+ jcr->JobStatus == JS_Incomplete \
+ )
#define job_waiting(jcr) \
(jcr->JobStatus == JS_WaitFD || \
struct Plugin;
struct save_pkt;
struct bpContext;
+struct xattr_private_data_t;
#ifdef FILE_DAEMON
class htable;
+struct acl_data_t;
+struct xattr_data_t;
struct CRYPTO_CTX {
bool pki_sign; /* Enable PKI Signatures? */
void init_mutex(void) {pthread_mutex_init(&mutex, NULL); };
void destroy_mutex(void) {pthread_mutex_destroy(&mutex); };
bool is_job_canceled() {return job_canceled(this); };
+ void set_JobLevel(int32_t JobLevel) { m_JobLevel = JobLevel; };
+ void setJobLevel(int32_t JobLevel) { m_JobLevel = JobLevel; };
+ void set_JobType(int32_t JobType) { m_JobType = JobType; };
+ void setJobType(int32_t JobType) { m_JobType = JobType; };
int32_t get_JobType() { return m_JobType; };
+ int32_t getJobType() { return m_JobType; };
int32_t get_JobLevel() { return m_JobLevel; };
-
- const char *get_OperationName(); /* in lib/jcr.c */
+ int32_t getJobLevel() { return m_JobLevel; };
+ bool no_client_used() {
+ return (m_JobType == JT_MIGRATE || m_JobType == JT_COPY ||
+ m_JobLevel == L_VIRTUAL_FULL);
+ };
+ const char *get_OperationName(); /* in lib/jcr.c */
const char *get_ActionName(bool past); /* in lib/jcr.c */
- void set_JobLevel(int32_t JobLevel); /* in lib/jcr.c */
- void set_JobType(int32_t JobType); /* in lib/jcr.c */
- bool JobReads(); /* in lib/jcr.c */
+ void setJobStatus(int JobStatus); /* in lib/jcr.c */
+ bool JobReads(); /* in lib/jcr.c */
+
/* Global part of JCR common to all daemons */
dlink link; /* JCR chain link */
uint32_t VolSessionId;
uint32_t VolSessionTime;
uint32_t JobFiles; /* Number of files written, this job */
- uint32_t JobErrors; /* */
+ uint32_t JobErrors; /* Number of non-fatal errors this job */
+ uint32_t JobWarnings; /* Number of warning messages */
uint64_t JobBytes; /* Number of bytes processed this job */
uint64_t ReadBytes; /* Bytes read -- before compression */
FileId_t FileId; /* Last FileId used */
- uint32_t Errors; /* Number of non-fatal errors */
volatile int32_t JobStatus; /* ready, running, blocked, terminated */
int32_t JobPriority; /* Job priority */
time_t sched_time; /* job schedule time, i.e. when it should start */
bool VSS; /* VSS used by FD */
bool Encrypt; /* Encryption used by FD */
bool stats_enabled; /* Keep all job records in a table for long term statistics */
+ bool no_maxtime; /* Don't check Max*Time for this JCR */
+ bool keep_sd_auth_key; /* Clear or not the SD auth key after connection*/
#endif /* DIRECTOR_DAEMON */
/* File Daemon specific part of JCR */
uint32_t num_files_examined; /* files examined this job */
POOLMEM *last_fname; /* last file saved/verified */
- POOLMEM *acl_data; /* data with ACLs for backup/restore */
- uint32_t acl_data_len; /* length of acl data buffer */
- POOLMEM *xattr_data; /* data with Extended Attributes for backup/restore */
- uint32_t xattr_data_len; /* length of xattr_data buffer */
+ acl_data_t *acl_data; /* ACLs for backup/restore */
+ xattr_data_t *xattr_data; /* Extended Attributes for backup/restore */
int32_t last_type; /* type of last file saved/verified */
int incremental; /* set if incremental for SINCE */
utime_t mtime; /* begin time for SINCE */
CRYPTO_CTX crypto; /* Crypto ctx */
DIRRES* director; /* Director resource */
bool VSS; /* VSS used by FD */
+ bool multi_restore; /* Dir can do multiple storage restore */
htable *file_list; /* Previous file list (accurate mode) */
#endif /* FILE_DAEMON */
alist *reserve_msgs; /* reserve fail messages */
bool write_part_after_job; /* Set to write part after job */
bool PreferMountedVols; /* Prefer mounted vols rather than new */
- bool need_fd; /* set if we need FD connection */
/* Parmaters for Open Read Session */
BSR *bsr; /* Bootstrap record -- has everything */
/* The following routines are found in lib/jcr.c */
+extern int get_next_jobid_from_list(char **p, uint32_t *JobId);
extern bool init_jcr_subsystem(void);
extern JCR *new_jcr(int size, JCR_free_HANDLER *daemon_free_jcr);
extern JCR *get_jcr_by_id(uint32_t JobId);