X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fjcr.h;h=cf880a342d883f1dee6462ae56b811f1a8f52114;hb=bcfc3499e3ed90d43bef43e4a60edabecb4b236f;hp=4513e800f6b9648ebb9643eb161e8367ec9a9376;hpb=fe11b8d182fc0e0ebe3a755bf9e8543ccec355bd;p=bacula%2Fbacula diff --git a/bacula/src/jcr.h b/bacula/src/jcr.h index 4513e800f6..cf880a342d 100644 --- a/bacula/src/jcr.h +++ b/bacula/src/jcr.h @@ -1,12 +1,12 @@ /* Bacula® - The Network Backup Solution - Copyright (C) 2000-2009 Free Software Foundation Europe e.V. + Copyright (C) 2000-2011 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. This program is Free Software; you can redistribute it and/or - modify it under the terms of version two of the GNU General Public + modify it under the terms of version three of the GNU Affero General Public License as published by the Free Software Foundation and included in the file LICENSE. @@ -15,7 +15,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Affero General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. @@ -33,7 +33,6 @@ * * Kern Sibbald, Nov MM * - * Version $Id$ */ @@ -70,31 +69,32 @@ #define JT_SCAN 'S' /* Scan Job */ /* 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_Canceled 'A' /* canceled by user */ #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_Created 'C' /* created but not yet running */ #define JS_Differences 'D' /* Verify differences */ -#define JS_Canceled 'A' /* canceled by user */ -#define JS_Incomplete 'I' /* Incomplete Job */ +#define JS_ErrorTerminated 'E' /* Job terminated in error */ #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 JS_Incomplete 'I' /* Incomplete Job */ +#define JS_DataCommitting 'L' /* Committing data (last despool) */ #define JS_WaitMount 'M' /* waiting for Mount */ -#define JS_WaitStoreRes 's' /* Waiting for storage resource */ -#define JS_WaitJobRes 'j' /* Waiting for job resource */ +#define JS_Running 'R' /* running */ +#define JS_WaitSD 'S' /* waiting on the Storage daemon */ +#define JS_Terminated 'T' /* terminated normally */ +#define JS_Warnings 'W' /* Terminated normally with warnings */ + +#define JS_AttrDespooling 'a' /* SD despooling attributes */ #define JS_WaitClientRes 'c' /* Waiting for Client resource */ #define JS_WaitMaxJobs 'd' /* Waiting for maximum jobs */ -#define JS_WaitStartTime 't' /* Waiting for start time */ -#define JS_WaitPriority 'p' /* Waiting for higher priority jobs to finish */ -#define JS_AttrDespooling 'a' /* SD despooling attributes */ +#define JS_Error 'e' /* Non-fatal error */ +#define JS_FatalError 'f' /* Fatal error */ #define JS_AttrInserting 'i' /* Doing batch insert file records */ +#define JS_WaitJobRes 'j' /* Waiting for job resource */ #define JS_DataDespooling 'l' /* Doing data despooling */ -#define JS_DataCommitting 'L' /* Committing data (last despool) */ +#define JS_WaitMedia 'm' /* waiting for new media */ +#define JS_WaitPriority 'p' /* Waiting for higher priority jobs to finish */ +#define JS_WaitStoreRes 's' /* Waiting for storage resource */ +#define JS_WaitStartTime 't' /* Waiting for start time */ /* Migration selection types */ enum { @@ -112,8 +112,7 @@ enum { #define job_canceled(jcr) \ (jcr->JobStatus == JS_Canceled || \ jcr->JobStatus == JS_ErrorTerminated || \ - jcr->JobStatus == JS_FatalError || \ - jcr->JobStatus == JS_Incomplete \ + jcr->JobStatus == JS_FatalError \ ) #define job_waiting(jcr) \ @@ -143,7 +142,7 @@ enum { /* Forward referenced structures */ class JCR; struct FF_PKT; -struct B_DB; +class B_DB; struct ATTR_DBR; struct Plugin; struct save_pkt; @@ -178,6 +177,7 @@ private: volatile int32_t _use_count; /* use count */ int32_t m_JobType; /* backup, restore, verify ... */ int32_t m_JobLevel; /* Job level */ + bool my_thread_killable; /* can we kill the thread? */ public: void lock() {P(mutex); }; void unlock() {V(mutex); }; @@ -187,10 +187,14 @@ public: 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; }; + bool is_canceled() {return job_canceled(this); }; + bool is_incomplete() { return JobStatus == JS_Incomplete; }; + bool is_JobLevel(int32_t JobLevel) { return JobLevel == m_JobLevel; }; + bool is_JobType(int32_t JobType) { return JobType == m_JobType; }; + bool is_JobStatus(int32_t aJobStatus) { return aJobStatus == JobStatus; }; 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; }; + void forceJobStatus(int32_t aJobStatus) { JobStatus = aJobStatus; }; int32_t getJobType() const { return m_JobType; }; int32_t getJobLevel() const { return m_JobLevel; }; int32_t getJobStatus() const { return JobStatus; }; @@ -202,7 +206,9 @@ public: const char *get_ActionName(bool past); /* in lib/jcr.c */ void setJobStatus(int JobStatus); /* in lib/jcr.c */ bool JobReads(); /* in lib/jcr.c */ - + void my_thread_send_signal(int sig); /* in lib/jcr.c */ + void set_killable(bool killable); /* in lib/jcr.c */ + bool is_killable() const { return my_thread_killable; }; /* Global part of JCR common to all daemons */ dlink link; /* JCR chain link */ @@ -239,6 +245,7 @@ public: time_t wait_time_sum; /* cumulative wait time since job start */ time_t wait_time; /* timestamp when job have started to wait */ POOLMEM *client_name; /* client name */ + POOLMEM *JobIds; /* User entered string of JobIds */ POOLMEM *RestoreBootstrap; /* Bootstrap file to restore */ POOLMEM *stime; /* start time for incremental/differential */ char *sd_auth_key; /* SD auth key */ @@ -252,28 +259,33 @@ public: bool prefix_links; /* Prefix links with Where path */ bool gui; /* set if gui using console */ bool authenticated; /* set when client authenticated */ + bool cached_attribute; /* set if attribute is cached */ + bool batch_started; /* is batch mode already started ? */ + bool cmd_plugin; /* Set when processing a command Plugin = */ + bool keep_path_list; /* Keep newly created path in a hash */ + bool accurate; /* true if job is accurate */ + bool HasBase; /* True if job use base jobs */ + bool rerunning; /* rerunning an incomplete job */ + void *Python_job; /* Python Job Object */ void *Python_events; /* Python Events Object */ - - bool cached_attribute; /* set if attribute is cached */ POOLMEM *attr; /* Attribute string from SD */ B_DB *db; /* database pointer */ B_DB *db_batch; /* database pointer for batch and accurate */ - bool batch_started; /* is batch mode already started ? */ - bool HasBase; /* True if job use base jobs */ uint64_t nb_base_files; /* Number of base files */ uint64_t nb_base_files_used; /* Number of useful files in base */ ATTR_DBR *ar; /* DB attribute record */ guid_list *id_list; /* User/group id to name list */ - bool accurate; /* true if job is accurate */ bpContext *plugin_ctx_list; /* list of contexts for plugins */ bpContext *plugin_ctx; /* current plugin context */ Plugin *plugin; /* plugin instance */ save_pkt *plugin_sp; /* plugin save packet */ char *plugin_options; /* user set options for plugin */ - bool cmd_plugin; /* Set when processing a command Plugin = */ + POOLMEM *comment; /* Comment for this Job */ + int64_t max_bandwidth; /* Bandwidth limit for this Job */ + htable *path_list; /* Directory list (used by findlib) */ /* Daemon specific part of JCR */ /* This should be empty in the library */ @@ -297,11 +309,6 @@ public: POOL *full_pool; /* Full backup pool resource */ POOL *inc_pool; /* Incremental backup pool resource */ POOL *diff_pool; /* Differential backup pool resource */ - bool run_pool_override; - bool run_full_pool_override; - bool run_inc_pool_override; - bool run_diff_pool_override; - bool sd_canceled; /* set if SD canceled */ FILESET *fileset; /* FileSet resource */ CAT *catalog; /* Catalog resource */ MSGS *messages; /* Default message handler */ @@ -335,6 +342,7 @@ public: int32_t reschedule_count; /* Number of times rescheduled */ int32_t FDVersion; /* File daemon version number */ int64_t spool_size; /* Spool size for this job */ + bool wasVirtualFull; /* set if job was VirtualFull */ bool spool_data; /* Spool data in SD */ bool acquired_resource_locks; /* set if resource locks acquired */ bool term_wait_inited; /* Set when cond var inited */ @@ -347,8 +355,14 @@ public: 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 no_check_duplicates; /* Don't check duplicates for this JCR */ bool keep_sd_auth_key; /* Clear or not the SD auth key after connection*/ bool use_accurate_chksum; /* Use or not checksum option in accurate code */ + bool run_pool_override; + bool run_full_pool_override; + bool run_inc_pool_override; + bool run_diff_pool_override; + bool sd_canceled; /* set if SD canceled */ #endif /* DIRECTOR_DAEMON */ @@ -356,6 +370,7 @@ public: /* File Daemon specific part of JCR */ uint32_t num_files_examined; /* files examined this job */ POOLMEM *last_fname; /* last file saved/verified */ + POOLMEM *job_metadata; /* VSS job metadata */ 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 */ @@ -367,6 +382,7 @@ public: POOLMEM *compress_buf; /* Compression buffer */ int32_t compress_buf_size; /* Length of compression buffer */ void *pZLIB_compress_workset; /* zlib compression session data */ + void *LZO_compress_workset; /* lzo compression session data */ int32_t replace; /* Replace options */ int32_t buf_size; /* length of buffer */ FF_PKT *ff; /* Find Files packet */ @@ -422,6 +438,7 @@ public: bool write_part_after_job; /* Set to write part after job */ bool PreferMountedVols; /* Prefer mounted vols rather than new */ bool Resched; /* Job may be rescheduled */ + bool bscan_insert_jobmedia_records; /*Bscan: needs to insert job media records */ /* Parmaters for Open Read Session */ BSR *bsr; /* Bootstrap record -- has everything */