X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fjcr.h;h=2d38956798584304b67e5a975f526a9603f31006;hb=f7baed75284306092c153924637d7316dd1bc1a8;hp=d67f9178e3df45b6729f82207bc497ee023882af;hpb=7ffb9151e81c960e3fb11c2a26cc68a39f49691d;p=bacula%2Fbacula diff --git a/bacula/src/jcr.h b/bacula/src/jcr.h index d67f9178e3..2d38956798 100644 --- a/bacula/src/jcr.h +++ b/bacula/src/jcr.h @@ -1,7 +1,7 @@ /* Bacula® - The Network Backup Solution - Copyright (C) 2000-2009 Free Software Foundation Europe e.V. + Copyright (C) 2000-2010 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. @@ -33,7 +33,6 @@ * * Kern Sibbald, Nov MM * - * Version $Id$ */ @@ -70,30 +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_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 { @@ -111,7 +112,9 @@ enum { #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 || \ @@ -145,9 +148,12 @@ struct ATTR_DBR; 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? */ @@ -177,38 +183,39 @@ public: void unlock() {V(mutex); }; void inc_use_count(void) {lock(); _use_count++; unlock(); }; void dec_use_count(void) {lock(); _use_count--; unlock(); }; - int32_t use_count() { return _use_count; }; + int32_t use_count() const { return _use_count; }; 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); }; - int32_t get_JobType() { return m_JobType; }; - int32_t getJobType() { return m_JobType; }; - int32_t get_JobLevel() { return m_JobLevel; }; - int32_t getJobLevel() { return m_JobLevel; }; - bool no_client_used() { + 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 getJobType() const { return m_JobType; }; + int32_t getJobLevel() const { return m_JobLevel; }; + int32_t getJobStatus() const { return JobStatus; }; + bool no_client_used() const { 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 setJobLevel(int32_t JobLevel); /* in lib/jcr.c */ - void set_JobType(int32_t JobType); /* in lib/jcr.c */ - void setJobType(int32_t JobType); /* 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 */ /* Global part of JCR common to all daemons */ dlink link; /* JCR chain link */ + bool my_thread_running; /* is the thread controlling jcr running*/ pthread_t my_thread_id; /* id of thread controlling jcr */ BSOCK *dir_bsock; /* Director bsock or NULL if we are him */ BSOCK *store_bsock; /* Storage connection socket */ BSOCK *file_bsock; /* File daemon connection socket */ JCR_free_HANDLER *daemon_free_jcr; /* Local free routine */ dlist *msg_queue; /* Queued messages */ + pthread_mutex_t msg_queue_mutex; /* message queue mutex */ + bool dequeuing_msgs; /* Set when dequeuing messages */ alist job_end_push; /* Job end pushed calls */ - bool dequeuing; /* dequeuing messages */ POOLMEM *VolumeName; /* Volume name desired -- pool_memory */ POOLMEM *errmsg; /* edited error message */ char Job[MAX_NAME_LENGTH]; /* Unique name of this Job */ @@ -233,6 +240,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 */ @@ -268,6 +276,7 @@ public: 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 */ /* Daemon specific part of JCR */ /* This should be empty in the library */ @@ -295,6 +304,7 @@ public: 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 */ @@ -341,6 +351,7 @@ public: 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*/ + bool use_accurate_chksum; /* Use or not checksum option in accurate code */ #endif /* DIRECTOR_DAEMON */ @@ -348,10 +359,9 @@ public: /* 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 */ + 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 */ int incremental; /* set if incremental for SINCE */ utime_t mtime; /* begin time for SINCE */ @@ -415,6 +425,7 @@ public: 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 Resched; /* Job may be rescheduled */ /* Parmaters for Open Read Session */ BSR *bsr; /* Bootstrap record -- has everything */ @@ -466,10 +477,11 @@ struct s_last_job { }; extern struct s_last_job last_job; -extern DLL_IMP_EXP dlist * last_jobs; +extern DLL_IMP_EXP dlist *last_jobs; /* 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);