X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fjcr.h;h=10a40c14dc0086da1696cd8fdb786537f4b52974;hb=57b695ece302b0fbd6d117cca27a97ab52067203;hp=6e13b48de97f4f8ebdc912683e63648c546aa0e4;hpb=172f50dc0f3387bfa96559227f1732f783c8c04f;p=bacula%2Fbacula diff --git a/bacula/src/jcr.h b/bacula/src/jcr.h index 6e13b48de9..10a40c14dc 100644 --- a/bacula/src/jcr.h +++ b/bacula/src/jcr.h @@ -93,9 +93,11 @@ #define JS_DataDespooling 'l' /* Doing data despooling */ #define JS_WaitMedia 'm' /* waiting for new media */ #define JS_WaitPriority 'p' /* Waiting for higher priority jobs to finish */ +#define JS_WaitDevice 'q' /* Queued waiting for device */ #define JS_WaitStoreRes 's' /* Waiting for storage resource */ #define JS_WaitStartTime 't' /* Waiting for start time */ + /* Migration selection types */ enum { MT_SMALLEST_VOL = 1, @@ -127,6 +129,7 @@ enum { jcr->JobStatus == JS_WaitPriority || \ jcr->SDJobStatus == JS_WaitMedia || \ jcr->SDJobStatus == JS_WaitMount || \ + jcr->SDJobStatus == JS_WaitDevice || \ jcr->SDJobStatus == JS_WaitMaxJobs) @@ -141,10 +144,11 @@ enum { /* Forward referenced structures */ class JCR; +class BSOCK; struct FF_PKT; class B_DB; struct ATTR_DBR; -struct Plugin; +class Plugin; struct save_pkt; struct bpContext; struct xattr_private_data_t; @@ -192,10 +196,9 @@ public: 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 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; }; + 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; }; @@ -205,7 +208,9 @@ public: }; const char *get_OperationName(); /* in lib/jcr.c */ const char *get_ActionName(bool past); /* in lib/jcr.c */ - void setJobStatus(int JobStatus); /* in lib/jcr.c */ + void setJobStatus(int newJobStatus); /* in lib/jcr.c */ + bool sendJobStatus(); /* in lib/jcr.c */ + bool sendJobStatus(int newJobStatus); /* 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 */ @@ -263,10 +268,11 @@ public: 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 opt_plugin; /* Set when processing an option 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 incomplete; /* finishing an incomplete job */ + bool rerunning; /* rerunning an incomplete job */ void *Python_job; /* Python Job Object */ void *Python_events; /* Python Events Object */ @@ -296,7 +302,6 @@ public: pthread_t SD_msg_chan; /* Message channel thread id */ pthread_cond_t term_wait; /* Wait for job termination */ workq_ele_t *work_item; /* Work queue item if scheduled */ - volatile bool sd_msg_thread_done; /* Set when Storage message thread done */ BSOCK *ua; /* User agent */ JOB *job; /* Job resource */ JOB *verify_job; /* Job resource of verify previous job */ @@ -321,6 +326,7 @@ public: uint32_t ExpectedFiles; /* Expected restore files */ uint32_t MediaId; /* DB record IDs associated with this job */ uint32_t FileIndex; /* Last FileIndex processed */ + utime_t MaxRunSchedTime; /* max run time in seconds from Scheduled time*/ POOLMEM *fname; /* name to put into catalog */ JOB_DBR jr; /* Job DB record for current job */ JOB_DBR previous_jr; /* previous job database record */ @@ -328,6 +334,7 @@ public: JCR *mig_jcr; /* JCR for migration/copy job */ char FSCreateTime[MAX_TIME_LENGTH]; /* FileSet CreateTime as returned from DB */ char since[MAX_TIME_LENGTH]; /* since time */ + char PrevJob[MAX_NAME_LENGTH]; /* Previous job name assiciated with since time */ union { JobId_t RestoreJobId; /* Id specified by UA */ JobId_t MigrateJobId; @@ -343,6 +350,9 @@ 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 */ + volatile bool sd_msg_thread_done; /* Set when Storage message thread done */ + bool wasVirtualFull; /* set if job was VirtualFull */ + bool IgnoreDuplicateJobChecking; /* set in migration jobs */ 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 */ @@ -362,6 +372,7 @@ public: bool run_inc_pool_override; bool run_diff_pool_override; bool sd_canceled; /* set if SD canceled */ + bool RescheduleIncompleteJobs; /* set if incomplete can be rescheduled */ #endif /* DIRECTOR_DAEMON */ @@ -381,10 +392,12 @@ 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 */ char stored_addr[MAX_NAME_LENGTH]; /* storage daemon address */ + char PrevJob[MAX_NAME_LENGTH]; /* Previous job name assiciated with since time */ uint32_t StartFile; uint32_t EndFile; uint32_t StartBlock; @@ -436,6 +449,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 */