Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bareos/bareos.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/dird/job.cc')
-rw-r--r--core/src/dird/job.cc564
1 files changed, 291 insertions, 273 deletions
diff --git a/core/src/dird/job.cc b/core/src/dird/job.cc
index 4114688b9..43de1fb98 100644
--- a/core/src/dird/job.cc
+++ b/core/src/dird/job.cc
@@ -37,7 +37,7 @@
#include "dird/fd_cmds.h"
#include "dird/get_database_connection.h"
#include "dird/job.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/migration.h"
#include "dird/pthread_detach_if_not_detached.h"
#include "dird/restore.h"
@@ -144,23 +144,23 @@ bool SetupJob(JobControlRecord* jcr, bool suppress_output)
// See if we should suppress all output.
if (!suppress_output) {
- InitMsg(jcr, jcr->impl->res.messages, job_code_callback_director);
+ InitMsg(jcr, jcr->dir_impl->res.messages, job_code_callback_director);
} else {
jcr->suppress_output = true;
}
// Initialize termination condition variable
- if ((errstat = pthread_cond_init(&jcr->impl->term_wait, NULL)) != 0) {
+ if ((errstat = pthread_cond_init(&jcr->dir_impl->term_wait, NULL)) != 0) {
BErrNo be;
Jmsg1(jcr, M_FATAL, 0, _("Unable to init job cond variable: ERR=%s\n"),
be.bstrerror(errstat));
jcr->unlock();
goto bail_out;
}
- jcr->impl->term_wait_inited = true;
+ jcr->dir_impl->term_wait_inited = true;
// Initialize nextrun ready condition variable
- if ((errstat = pthread_cond_init(&jcr->impl->nextrun_ready, NULL)) != 0) {
+ if ((errstat = pthread_cond_init(&jcr->dir_impl->nextrun_ready, NULL)) != 0) {
BErrNo be;
Jmsg1(jcr, M_FATAL, 0,
_("Unable to init job nextrun cond variable: ERR=%s\n"),
@@ -168,9 +168,9 @@ bool SetupJob(JobControlRecord* jcr, bool suppress_output)
jcr->unlock();
goto bail_out;
}
- jcr->impl->nextrun_ready_inited = true;
+ jcr->dir_impl->nextrun_ready_inited = true;
- CreateUniqueJobName(jcr, jcr->impl->res.job->resource_name_);
+ CreateUniqueJobName(jcr, jcr->dir_impl->res.job->resource_name_);
jcr->setJobStatusWithPriorityCheck(JS_Created);
jcr->unlock();
@@ -179,44 +179,45 @@ bool SetupJob(JobControlRecord* jcr, bool suppress_output)
jcr->db = GetDatabaseConnection(jcr);
if (jcr->db == NULL) {
Jmsg(jcr, M_FATAL, 0, _("Could not open database \"%s\".\n"),
- jcr->impl->res.catalog->db_name);
+ jcr->dir_impl->res.catalog->db_name);
goto bail_out;
}
Dmsg0(150, "DB opened\n");
- if (!jcr->impl->fname) { jcr->impl->fname = GetPoolMemory(PM_FNAME); }
+ if (!jcr->dir_impl->fname) { jcr->dir_impl->fname = GetPoolMemory(PM_FNAME); }
- if (!jcr->impl->res.pool_source) {
- jcr->impl->res.pool_source = GetPoolMemory(PM_MESSAGE);
- PmStrcpy(jcr->impl->res.pool_source, _("unknown source"));
+ if (!jcr->dir_impl->res.pool_source) {
+ jcr->dir_impl->res.pool_source = GetPoolMemory(PM_MESSAGE);
+ PmStrcpy(jcr->dir_impl->res.pool_source, _("unknown source"));
}
- if (!jcr->impl->res.npool_source) {
- jcr->impl->res.npool_source = GetPoolMemory(PM_MESSAGE);
- PmStrcpy(jcr->impl->res.npool_source, _("unknown source"));
+ if (!jcr->dir_impl->res.npool_source) {
+ jcr->dir_impl->res.npool_source = GetPoolMemory(PM_MESSAGE);
+ PmStrcpy(jcr->dir_impl->res.npool_source, _("unknown source"));
}
if (jcr->JobReads()) {
- if (!jcr->impl->res.rpool_source) {
- jcr->impl->res.rpool_source = GetPoolMemory(PM_MESSAGE);
- PmStrcpy(jcr->impl->res.rpool_source, _("unknown source"));
+ if (!jcr->dir_impl->res.rpool_source) {
+ jcr->dir_impl->res.rpool_source = GetPoolMemory(PM_MESSAGE);
+ PmStrcpy(jcr->dir_impl->res.rpool_source, _("unknown source"));
}
}
// Create Job record
InitJcrJobRecord(jcr);
- if (jcr->impl->res.client) {
+ if (jcr->dir_impl->res.client) {
if (!GetOrCreateClientRecord(jcr)) { goto bail_out; }
}
- if (!jcr->db->CreateJobRecord(jcr, &jcr->impl->jr)) {
+ if (!jcr->db->CreateJobRecord(jcr, &jcr->dir_impl->jr)) {
Jmsg(jcr, M_FATAL, 0, "%s", jcr->db->strerror());
goto bail_out;
}
- jcr->JobId = jcr->impl->jr.JobId;
+ jcr->JobId = jcr->dir_impl->jr.JobId;
Dmsg4(100, "Created job record JobId=%d Name=%s Type=%c Level=%c\n",
- jcr->JobId, jcr->Job, jcr->impl->jr.JobType, jcr->impl->jr.JobLevel);
+ jcr->JobId, jcr->Job, jcr->dir_impl->jr.JobType,
+ jcr->dir_impl->jr.JobLevel);
NewPlugins(jcr); /* instantiate plugins for this jcr */
DispatchNewPluginOptions(jcr);
@@ -224,11 +225,12 @@ bool SetupJob(JobControlRecord* jcr, bool suppress_output)
if (JobCanceled(jcr)) { goto bail_out; }
- if (jcr->JobReads() && !jcr->impl->res.read_storage_list) {
- if (jcr->impl->res.job->storage) {
- CopyRwstorage(jcr, jcr->impl->res.job->storage, _("Job resource"));
+ if (jcr->JobReads() && !jcr->dir_impl->res.read_storage_list) {
+ if (jcr->dir_impl->res.job->storage) {
+ CopyRwstorage(jcr, jcr->dir_impl->res.job->storage, _("Job resource"));
} else {
- CopyRwstorage(jcr, jcr->impl->res.job->pool->storage, _("Pool resource"));
+ CopyRwstorage(jcr, jcr->dir_impl->res.job->pool->storage,
+ _("Pool resource"));
}
}
@@ -308,9 +310,9 @@ bool SetupJob(JobControlRecord* jcr, bool suppress_output)
* Any non NDMP restore is not interested at the items
* that were selected for restore so drop them now.
*/
- if (jcr->impl->restore_tree_root) {
- FreeTree(jcr->impl->restore_tree_root);
- jcr->impl->restore_tree_root = NULL;
+ if (jcr->dir_impl->restore_tree_root) {
+ FreeTree(jcr->dir_impl->restore_tree_root);
+ jcr->dir_impl->restore_tree_root = NULL;
}
if (!DoNativeRestoreInit(jcr)) {
NativeRestoreCleanup(jcr, JS_ErrorTerminated);
@@ -382,7 +384,7 @@ bool IsConnectingToClientAllowed(ClientResource* res)
bool IsConnectingToClientAllowed(JobControlRecord* jcr)
{
- return IsConnectingToClientAllowed(jcr->impl->res.client);
+ return IsConnectingToClientAllowed(jcr->dir_impl->res.client);
}
bool IsConnectFromClientAllowed(ClientResource* res)
@@ -392,7 +394,7 @@ bool IsConnectFromClientAllowed(ClientResource* res)
bool IsConnectFromClientAllowed(JobControlRecord* jcr)
{
- return IsConnectFromClientAllowed(jcr->impl->res.client);
+ return IsConnectFromClientAllowed(jcr->dir_impl->res.client);
}
bool UseWaitingClient(JobControlRecord* jcr, int timeout)
@@ -403,17 +405,17 @@ bool UseWaitingClient(JobControlRecord* jcr, int timeout)
if (!IsConnectFromClientAllowed(jcr)) {
Dmsg1(120, "Connection from client \"%s\" to director is not allowed.\n",
- jcr->impl->res.client->resource_name_);
+ jcr->dir_impl->res.client->resource_name_);
} else {
- connection
- = connections->remove(jcr->impl->res.client->resource_name_, timeout);
+ connection = connections->remove(jcr->dir_impl->res.client->resource_name_,
+ timeout);
if (connection) {
jcr->file_bsock = connection->bsock();
- jcr->impl->FDVersion = connection->protocol_version();
+ jcr->dir_impl->FDVersion = connection->protocol_version();
jcr->authenticated = connection->authenticated();
delete (connection);
Jmsg(jcr, M_INFO, 0, _("Using Client Initiated Connection (%s).\n"),
- jcr->impl->res.client->resource_name_);
+ jcr->dir_impl->res.client->resource_name_);
result = true;
}
}
@@ -445,13 +447,13 @@ static void* job_thread(void* arg)
jcr->setJobStatusWithPriorityCheck(
JS_Running); /* this will be set only if no error */
jcr->start_time = time(NULL); /* set the real start time */
- jcr->impl->jr.StartTime = jcr->start_time;
+ jcr->dir_impl->jr.StartTime = jcr->start_time;
// Let the statistics subsystem know a new Job was started.
stats_job_started();
- if (jcr->impl->res.job->MaxStartDelay != 0
- && jcr->impl->res.job->MaxStartDelay
+ if (jcr->dir_impl->res.job->MaxStartDelay != 0
+ && jcr->dir_impl->res.job->MaxStartDelay
< (utime_t)(jcr->start_time - jcr->sched_time)) {
jcr->setJobStatusWithPriorityCheck(JS_Canceled);
Jmsg(jcr, M_FATAL, 0,
@@ -465,18 +467,18 @@ static void* job_thread(void* arg)
}
// TODO : check if it is used somewhere
- if (jcr->impl->res.job->RunScripts == NULL) {
+ if (jcr->dir_impl->res.job->RunScripts == NULL) {
Dmsg0(200, "Warning, job->RunScripts is empty\n");
- jcr->impl->res.job->RunScripts
+ jcr->dir_impl->res.job->RunScripts
= new alist<RunScript*>(10, not_owned_by_alist);
}
- if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->impl->jr)) {
+ if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->dir_impl->jr)) {
Jmsg(jcr, M_FATAL, 0, "%s", jcr->db->strerror());
}
// Run any script BeforeJob on dird
- RunScripts(jcr, jcr->impl->res.job->RunScripts, "BeforeJob");
+ RunScripts(jcr, jcr->dir_impl->res.job->RunScripts, "BeforeJob");
/*
* We re-update the job start record so that the start time is set after the
@@ -488,8 +490,8 @@ static void* job_thread(void* arg)
* because in that case, their date is after the start of this run.
*/
jcr->start_time = time(NULL);
- jcr->impl->jr.StartTime = jcr->start_time;
- if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->impl->jr)) {
+ jcr->dir_impl->jr.StartTime = jcr->start_time;
+ if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->dir_impl->jr)) {
Jmsg(jcr, M_FATAL, 0, "%s", jcr->db->strerror());
}
@@ -643,7 +645,7 @@ static void* job_thread(void* arg)
break;
}
- RunScripts(jcr, jcr->impl->res.job->RunScripts, "AfterJob");
+ RunScripts(jcr, jcr->dir_impl->res.job->RunScripts, "AfterJob");
// Send off any queued messages
if (jcr->msg_queue && jcr->msg_queue->size() > 0) { DequeueMessages(jcr); }
@@ -657,10 +659,10 @@ static void* job_thread(void* arg)
void SdMsgThreadSendSignal(JobControlRecord* jcr, int sig)
{
jcr->lock();
- if (!jcr->impl->sd_msg_thread_done && jcr->impl->SD_msg_chan_started
- && !pthread_equal(jcr->impl->SD_msg_chan, pthread_self())) {
+ if (!jcr->dir_impl->sd_msg_thread_done && jcr->dir_impl->SD_msg_chan_started
+ && !pthread_equal(jcr->dir_impl->SD_msg_chan, pthread_self())) {
Dmsg1(800, "Send kill to SD msg chan jid=%d\n", jcr->JobId);
- pthread_kill(jcr->impl->SD_msg_chan, sig);
+ pthread_kill(jcr->dir_impl->SD_msg_chan, sig);
}
jcr->unlock();
}
@@ -704,14 +706,16 @@ bool CancelJob(UaContext* ua, JobControlRecord* jcr)
}
// Cancel second Storage daemon for SD-SD replication.
- if (jcr->impl->mig_jcr && jcr->impl->mig_jcr->store_bsock) {
- if (!CancelStorageDaemonJob(ua, jcr->impl->mig_jcr)) { return false; }
+ if (jcr->dir_impl->mig_jcr && jcr->dir_impl->mig_jcr->store_bsock) {
+ if (!CancelStorageDaemonJob(ua, jcr->dir_impl->mig_jcr)) {
+ return false;
+ }
}
break;
}
- RunScripts(jcr, jcr->impl->res.job->RunScripts, "AfterJob");
+ RunScripts(jcr, jcr->dir_impl->res.job->RunScripts, "AfterJob");
return true;
}
@@ -734,7 +738,7 @@ static void JobMonitorWatchdog(watchdog_t* self)
foreach_jcr (jcr) {
bool cancel = false;
- if (jcr->JobId == 0 || JobCanceled(jcr) || jcr->impl->no_maxtime) {
+ if (jcr->JobId == 0 || JobCanceled(jcr) || jcr->dir_impl->no_maxtime) {
Dmsg2(800, "Skipping JobControlRecord=%p Job=%s\n", jcr, jcr->Job);
continue;
}
@@ -778,7 +782,7 @@ static void JobMonitorWatchdog(watchdog_t* self)
static bool JobCheckMaxwaittime(JobControlRecord* jcr)
{
bool cancel = false;
- JobResource* job = jcr->impl->res.job;
+ JobResource* job = jcr->dir_impl->res.job;
utime_t current = 0;
if (!JobWaiting(jcr)) { return false; }
@@ -802,7 +806,7 @@ static bool JobCheckMaxwaittime(JobControlRecord* jcr)
static bool JobCheckMaxruntime(JobControlRecord* jcr)
{
bool cancel = false;
- JobResource* job = jcr->impl->res.job;
+ JobResource* job = jcr->dir_impl->res.job;
utime_t run_time;
if (JobCanceled(jcr) || !jcr->job_started) { return false; }
@@ -841,10 +845,11 @@ static bool JobCheckMaxruntime(JobControlRecord* jcr)
*/
static bool JobCheckMaxrunschedtime(JobControlRecord* jcr)
{
- if (jcr->impl->MaxRunSchedTime == 0 || JobCanceled(jcr)) { return false; }
- if ((watchdog_time - jcr->initial_sched_time) < jcr->impl->MaxRunSchedTime) {
+ if (jcr->dir_impl->MaxRunSchedTime == 0 || JobCanceled(jcr)) { return false; }
+ if ((watchdog_time - jcr->initial_sched_time)
+ < jcr->dir_impl->MaxRunSchedTime) {
Dmsg3(200, "Job %p (%s) with MaxRunSchedTime %d not expired\n", jcr,
- jcr->Job, jcr->impl->MaxRunSchedTime);
+ jcr->Job, jcr->dir_impl->MaxRunSchedTime);
return false;
}
@@ -865,7 +870,7 @@ DBId_t GetOrCreatePoolRecord(JobControlRecord* jcr, char* pool_name)
while (!jcr->db->GetPoolRecord(jcr, &pr)) { /* get by Name */
/* Try to create the pool */
- if (CreatePool(jcr, jcr->db, jcr->impl->res.pool, POOL_OP_CREATE) < 0) {
+ if (CreatePool(jcr, jcr->db, jcr->dir_impl->res.pool, POOL_OP_CREATE) < 0) {
Jmsg(jcr, M_FATAL, 0, _("Pool \"%s\" not in database. ERR=%s"), pr.Name,
jcr->db->strerror());
return 0;
@@ -885,7 +890,7 @@ DBId_t GetOrCreatePoolRecord(JobControlRecord* jcr, char* pool_name)
bool AllowDuplicateJob(JobControlRecord* jcr)
{
JobControlRecord* djcr; /* possible duplicate job */
- JobResource* job = jcr->impl->res.job;
+ JobResource* job = jcr->dir_impl->res.job;
bool cancel_dup = false;
bool cancel_me = false;
@@ -893,7 +898,7 @@ bool AllowDuplicateJob(JobControlRecord* jcr)
* See if AllowDuplicateJobs is set or
* if duplicate checking is disabled for this job.
*/
- if (job->AllowDuplicateJobs || jcr->impl->IgnoreDuplicateJobChecking) {
+ if (job->AllowDuplicateJobs || jcr->dir_impl->IgnoreDuplicateJobChecking) {
return true;
}
@@ -913,9 +918,9 @@ bool AllowDuplicateJob(JobControlRecord* jcr)
* See if this Job has the IgnoreDuplicateJobChecking flag set, ignore it
* for any checking against other jobs.
*/
- if (djcr->impl->IgnoreDuplicateJobChecking) { continue; }
+ if (djcr->dir_impl->IgnoreDuplicateJobChecking) { continue; }
- if (bstrcmp(job->resource_name_, djcr->impl->res.job->resource_name_)) {
+ if (bstrcmp(job->resource_name_, djcr->dir_impl->res.job->resource_name_)) {
if (job->DuplicateJobProximity > 0) {
utime_t now = (utime_t)time(NULL);
if ((now - djcr->start_time) > job->DuplicateJobProximity) {
@@ -1021,14 +1026,15 @@ bool GetLevelSinceTime(JobControlRecord* jcr)
utime_t last_diff_time;
char prev_job[MAX_NAME_LENGTH];
- jcr->impl->since[0] = 0;
+ jcr->dir_impl->since[0] = 0;
// If since time was given on command line use it
if (jcr->starttime_string && jcr->starttime_string[0]) {
- bstrncpy(jcr->impl->since, _(", since="), sizeof(jcr->impl->since));
- bstrncat(jcr->impl->since, jcr->starttime_string, sizeof(jcr->impl->since));
+ bstrncpy(jcr->dir_impl->since, _(", since="), sizeof(jcr->dir_impl->since));
+ bstrncat(jcr->dir_impl->since, jcr->starttime_string,
+ sizeof(jcr->dir_impl->since));
Jmsg(jcr, M_INFO, 0, "Using since time from command line %s (%s)",
- jcr->starttime_string, jcr->impl->since);
+ jcr->starttime_string, jcr->dir_impl->since);
return pool_updated;
}
@@ -1038,7 +1044,7 @@ bool GetLevelSinceTime(JobControlRecord* jcr)
jcr->starttime_string = GetPoolMemory(PM_MESSAGE);
jcr->starttime_string[0] = 0;
}
- jcr->impl->PrevJob[0] = 0;
+ jcr->dir_impl->PrevJob[0] = 0;
/*
* Lookup the last FULL backup job to get the time/date for a
@@ -1052,19 +1058,20 @@ bool GetLevelSinceTime(JobControlRecord* jcr)
// Look up start time of last Full job
now = (utime_t)time(NULL);
- jcr->impl->jr.JobId = 0; /* flag to return since time */
+ jcr->dir_impl->jr.JobId = 0; /* flag to return since time */
/*
* This is probably redundant, but some of the code below
* uses jcr->starttime_string, so don't remove unless you are sure.
*/
- if (!jcr->db->FindJobStartTime(jcr, &jcr->impl->jr, jcr->starttime_string,
- jcr->impl->PrevJob)) {
+ if (!jcr->db->FindJobStartTime(jcr, &jcr->dir_impl->jr,
+ jcr->starttime_string,
+ jcr->dir_impl->PrevJob)) {
do_full = true;
}
- have_full = jcr->db->FindLastJobStartTime(jcr, &jcr->impl->jr, start_time,
- prev_job, L_FULL);
+ have_full = jcr->db->FindLastJobStartTime(jcr, &jcr->dir_impl->jr,
+ start_time, prev_job, L_FULL);
if (have_full) {
last_full_time = StrToUtime(start_time);
} else {
@@ -1076,9 +1083,9 @@ bool GetLevelSinceTime(JobControlRecord* jcr)
// Make sure the last diff is recent enough
if (have_full && JobLevel == L_INCREMENTAL
- && jcr->impl->res.job->MaxDiffInterval > 0) {
+ && jcr->dir_impl->res.job->MaxDiffInterval > 0) {
// Lookup last diff job
- if (jcr->db->FindLastJobStartTime(jcr, &jcr->impl->jr, start_time,
+ if (jcr->db->FindLastJobStartTime(jcr, &jcr->dir_impl->jr, start_time,
prev_job, L_DIFFERENTIAL)) {
last_diff_time = StrToUtime(start_time);
// If no Diff since Full, use Full time
@@ -1093,19 +1100,19 @@ bool GetLevelSinceTime(JobControlRecord* jcr)
Dmsg1(50, "No last_diff_time setting to full_time=%lld\n",
last_full_time);
}
- do_diff
- = ((now - last_diff_time) >= jcr->impl->res.job->MaxDiffInterval);
+ do_diff = ((now - last_diff_time)
+ >= jcr->dir_impl->res.job->MaxDiffInterval);
Dmsg2(50, "do_diff=%d diffInter=%lld\n", do_diff,
- jcr->impl->res.job->MaxDiffInterval);
+ jcr->dir_impl->res.job->MaxDiffInterval);
}
// Note, do_full takes precedence over do_vfull and do_diff
- if (have_full && jcr->impl->res.job->MaxFullInterval > 0) {
- do_full
- = ((now - last_full_time) >= jcr->impl->res.job->MaxFullInterval);
- } else if (have_full && jcr->impl->res.job->MaxVFullInterval > 0) {
- do_vfull
- = ((now - last_full_time) >= jcr->impl->res.job->MaxVFullInterval);
+ if (have_full && jcr->dir_impl->res.job->MaxFullInterval > 0) {
+ do_full = ((now - last_full_time)
+ >= jcr->dir_impl->res.job->MaxFullInterval);
+ } else if (have_full && jcr->dir_impl->res.job->MaxVFullInterval > 0) {
+ do_vfull = ((now - last_full_time)
+ >= jcr->dir_impl->res.job->MaxVFullInterval);
}
FreePoolMemory(start_time);
@@ -1115,9 +1122,9 @@ bool GetLevelSinceTime(JobControlRecord* jcr)
Jmsg(jcr, M_INFO, 0,
_("No prior or suitable Full backup found in catalog. Doing FULL "
"backup.\n"));
- Bsnprintf(jcr->impl->since, sizeof(jcr->impl->since),
+ Bsnprintf(jcr->dir_impl->since, sizeof(jcr->dir_impl->since),
_(" (upgraded from %s)"), JobLevelToString(JobLevel));
- jcr->setJobLevel(jcr->impl->jr.JobLevel = L_FULL);
+ jcr->setJobLevel(jcr->dir_impl->jr.JobLevel = L_FULL);
pool_updated = true;
} else if (do_vfull) {
/*
@@ -1128,59 +1135,60 @@ bool GetLevelSinceTime(JobControlRecord* jcr)
Jmsg(jcr, M_INFO, 0,
_("No prior or suitable Full backup found in catalog. Doing "
"Virtual FULL backup.\n"));
- Bsnprintf(jcr->impl->since, sizeof(jcr->impl->since),
+ Bsnprintf(jcr->dir_impl->since, sizeof(jcr->dir_impl->since),
_(" (upgraded from %s)"),
JobLevelToString(jcr->getJobLevel()));
- jcr->setJobLevel(jcr->impl->jr.JobLevel = L_VIRTUAL_FULL);
+ jcr->setJobLevel(jcr->dir_impl->jr.JobLevel = L_VIRTUAL_FULL);
pool_updated = true;
/*
* If we get upgraded to a Virtual Full we will be using a read pool so
* make sure we have a rpool_source.
*/
- if (!jcr->impl->res.rpool_source) {
- jcr->impl->res.rpool_source = GetPoolMemory(PM_MESSAGE);
- PmStrcpy(jcr->impl->res.rpool_source, _("unknown source"));
+ if (!jcr->dir_impl->res.rpool_source) {
+ jcr->dir_impl->res.rpool_source = GetPoolMemory(PM_MESSAGE);
+ PmStrcpy(jcr->dir_impl->res.rpool_source, _("unknown source"));
}
} else if (do_diff) {
// No recent diff job found, so upgrade this one to Diff
Jmsg(jcr, M_INFO, 0,
_("No prior or suitable Differential backup found in catalog. "
"Doing Differential backup.\n"));
- Bsnprintf(jcr->impl->since, sizeof(jcr->impl->since),
+ Bsnprintf(jcr->dir_impl->since, sizeof(jcr->dir_impl->since),
_(" (upgraded from %s)"), JobLevelToString(JobLevel));
- jcr->setJobLevel(jcr->impl->jr.JobLevel = L_DIFFERENTIAL);
+ jcr->setJobLevel(jcr->dir_impl->jr.JobLevel = L_DIFFERENTIAL);
pool_updated = true;
} else {
- if (jcr->impl->res.job->rerun_failed_levels) {
- if (jcr->db->FindFailedJobSince(jcr, &jcr->impl->jr,
+ if (jcr->dir_impl->res.job->rerun_failed_levels) {
+ if (jcr->db->FindFailedJobSince(jcr, &jcr->dir_impl->jr,
jcr->starttime_string, JobLevel)) {
Jmsg(jcr, M_INFO, 0,
_("Prior failed job found in catalog. Upgrading to %s.\n"),
JobLevelToString(JobLevel));
- Bsnprintf(jcr->impl->since, sizeof(jcr->impl->since),
+ Bsnprintf(jcr->dir_impl->since, sizeof(jcr->dir_impl->since),
_(" (upgraded from %s)"), JobLevelToString(JobLevel));
- jcr->setJobLevel(jcr->impl->jr.JobLevel = JobLevel);
- jcr->impl->jr.JobId = jcr->JobId;
+ jcr->setJobLevel(jcr->dir_impl->jr.JobLevel = JobLevel);
+ jcr->dir_impl->jr.JobId = jcr->JobId;
pool_updated = true;
break;
}
}
- bstrncpy(jcr->impl->since, _(", since="), sizeof(jcr->impl->since));
- bstrncat(jcr->impl->since, jcr->starttime_string,
- sizeof(jcr->impl->since));
+ bstrncpy(jcr->dir_impl->since, _(", since="),
+ sizeof(jcr->dir_impl->since));
+ bstrncat(jcr->dir_impl->since, jcr->starttime_string,
+ sizeof(jcr->dir_impl->since));
}
- jcr->impl->jr.JobId = jcr->JobId;
+ jcr->dir_impl->jr.JobId = jcr->JobId;
/*
* Lookup the Job record of the previous Job and store it in
- * jcr->impl_->previous_jr.
+ * jcr->dir_impl_->previous_jr.
*/
- if (jcr->impl->PrevJob[0]) {
- bstrncpy(jcr->impl->previous_jr.Job, jcr->impl->PrevJob,
- sizeof(jcr->impl->previous_jr.Job));
- if (!jcr->db->GetJobRecord(jcr, &jcr->impl->previous_jr)) {
+ if (jcr->dir_impl->PrevJob[0]) {
+ bstrncpy(jcr->dir_impl->previous_jr.Job, jcr->dir_impl->PrevJob,
+ sizeof(jcr->dir_impl->previous_jr.Job));
+ if (!jcr->db->GetJobRecord(jcr, &jcr->dir_impl->previous_jr)) {
Jmsg(jcr, M_FATAL, 0,
_("Could not get job record for previous Job. ERR=%s\n"),
jcr->db->strerror());
@@ -1191,7 +1199,7 @@ bool GetLevelSinceTime(JobControlRecord* jcr)
}
Dmsg3(100, "Level=%c last start time=%s job=%s\n", JobLevel,
- jcr->starttime_string, jcr->impl->PrevJob);
+ jcr->starttime_string, jcr->dir_impl->PrevJob);
return pool_updated;
}
@@ -1205,86 +1213,93 @@ void ApplyPoolOverrides(JobControlRecord* jcr, bool force)
* If a cmdline pool override is given ignore any level pool overrides.
* Unless a force is given then we always apply any overrides.
*/
- if (!force && jcr->impl->IgnoreLevelPoolOverrides) { return; }
+ if (!force && jcr->dir_impl->IgnoreLevelPoolOverrides) { return; }
/*
* If only a pool override and no level overrides are given in run entry
* choose this pool
*/
- if (jcr->impl->res.run_pool_override && !jcr->impl->res.run_full_pool_override
- && !jcr->impl->res.run_vfull_pool_override
- && !jcr->impl->res.run_inc_pool_override
- && !jcr->impl->res.run_diff_pool_override) {
- PmStrcpy(jcr->impl->res.pool_source, _("Run Pool override"));
+ if (jcr->dir_impl->res.run_pool_override
+ && !jcr->dir_impl->res.run_full_pool_override
+ && !jcr->dir_impl->res.run_vfull_pool_override
+ && !jcr->dir_impl->res.run_inc_pool_override
+ && !jcr->dir_impl->res.run_diff_pool_override) {
+ PmStrcpy(jcr->dir_impl->res.pool_source, _("Run Pool override"));
Dmsg2(100, "Pool set to '%s' because of %s",
- jcr->impl->res.pool->resource_name_, _("Run Pool override\n"));
+ jcr->dir_impl->res.pool->resource_name_, _("Run Pool override\n"));
} else {
// Apply any level related Pool selections
switch (jcr->getJobLevel()) {
case L_FULL:
- if (jcr->impl->res.full_pool) {
- jcr->impl->res.pool = jcr->impl->res.full_pool;
+ if (jcr->dir_impl->res.full_pool) {
+ jcr->dir_impl->res.pool = jcr->dir_impl->res.full_pool;
pool_override = true;
- if (jcr->impl->res.run_full_pool_override) {
- PmStrcpy(jcr->impl->res.pool_source, _("Run FullPool override"));
+ if (jcr->dir_impl->res.run_full_pool_override) {
+ PmStrcpy(jcr->dir_impl->res.pool_source,
+ _("Run FullPool override"));
Dmsg2(100, "Pool set to '%s' because of %s",
- jcr->impl->res.full_pool->resource_name_,
+ jcr->dir_impl->res.full_pool->resource_name_,
"Run FullPool override\n");
} else {
- PmStrcpy(jcr->impl->res.pool_source, _("Job FullPool override"));
+ PmStrcpy(jcr->dir_impl->res.pool_source,
+ _("Job FullPool override"));
Dmsg2(100, "Pool set to '%s' because of %s",
- jcr->impl->res.full_pool->resource_name_,
+ jcr->dir_impl->res.full_pool->resource_name_,
"Job FullPool override\n");
}
}
break;
case L_VIRTUAL_FULL:
- if (jcr->impl->res.vfull_pool) {
- jcr->impl->res.pool = jcr->impl->res.vfull_pool;
+ if (jcr->dir_impl->res.vfull_pool) {
+ jcr->dir_impl->res.pool = jcr->dir_impl->res.vfull_pool;
pool_override = true;
- if (jcr->impl->res.run_vfull_pool_override) {
- PmStrcpy(jcr->impl->res.pool_source, _("Run VFullPool override"));
+ if (jcr->dir_impl->res.run_vfull_pool_override) {
+ PmStrcpy(jcr->dir_impl->res.pool_source,
+ _("Run VFullPool override"));
Dmsg2(100, "Pool set to '%s' because of %s",
- jcr->impl->res.vfull_pool->resource_name_,
+ jcr->dir_impl->res.vfull_pool->resource_name_,
"Run VFullPool override\n");
} else {
- PmStrcpy(jcr->impl->res.pool_source, _("Job VFullPool override"));
+ PmStrcpy(jcr->dir_impl->res.pool_source,
+ _("Job VFullPool override"));
Dmsg2(100, "Pool set to '%s' because of %s",
- jcr->impl->res.vfull_pool->resource_name_,
+ jcr->dir_impl->res.vfull_pool->resource_name_,
"Job VFullPool override\n");
}
}
break;
case L_INCREMENTAL:
- if (jcr->impl->res.inc_pool) {
- jcr->impl->res.pool = jcr->impl->res.inc_pool;
+ if (jcr->dir_impl->res.inc_pool) {
+ jcr->dir_impl->res.pool = jcr->dir_impl->res.inc_pool;
pool_override = true;
- if (jcr->impl->res.run_inc_pool_override) {
- PmStrcpy(jcr->impl->res.pool_source, _("Run IncPool override"));
+ if (jcr->dir_impl->res.run_inc_pool_override) {
+ PmStrcpy(jcr->dir_impl->res.pool_source, _("Run IncPool override"));
Dmsg2(100, "Pool set to '%s' because of %s",
- jcr->impl->res.inc_pool->resource_name_,
+ jcr->dir_impl->res.inc_pool->resource_name_,
"Run IncPool override\n");
} else {
- PmStrcpy(jcr->impl->res.pool_source, _("Job IncPool override"));
+ PmStrcpy(jcr->dir_impl->res.pool_source, _("Job IncPool override"));
Dmsg2(100, "Pool set to '%s' because of %s",
- jcr->impl->res.inc_pool->resource_name_,
+ jcr->dir_impl->res.inc_pool->resource_name_,
"Job IncPool override\n");
}
}
break;
case L_DIFFERENTIAL:
- if (jcr->impl->res.diff_pool) {
- jcr->impl->res.pool = jcr->impl->res.diff_pool;
+ if (jcr->dir_impl->res.diff_pool) {
+ jcr->dir_impl->res.pool = jcr->dir_impl->res.diff_pool;
pool_override = true;
- if (jcr->impl->res.run_diff_pool_override) {
- PmStrcpy(jcr->impl->res.pool_source, _("Run DiffPool override"));
+ if (jcr->dir_impl->res.run_diff_pool_override) {
+ PmStrcpy(jcr->dir_impl->res.pool_source,
+ _("Run DiffPool override"));
Dmsg2(100, "Pool set to '%s' because of %s",
- jcr->impl->res.diff_pool->resource_name_,
+ jcr->dir_impl->res.diff_pool->resource_name_,
"Run DiffPool override\n");
} else {
- PmStrcpy(jcr->impl->res.pool_source, _("Job DiffPool override"));
+ PmStrcpy(jcr->dir_impl->res.pool_source,
+ _("Job DiffPool override"));
Dmsg2(100, "Pool set to '%s' because of %s",
- jcr->impl->res.diff_pool->resource_name_,
+ jcr->dir_impl->res.diff_pool->resource_name_,
"Job DiffPool override\n");
}
}
@@ -1293,9 +1308,9 @@ void ApplyPoolOverrides(JobControlRecord* jcr, bool force)
}
// Update catalog if pool overridden
- if (pool_override && jcr->impl->res.pool->catalog) {
- jcr->impl->res.catalog = jcr->impl->res.pool->catalog;
- PmStrcpy(jcr->impl->res.catalog_source, _("Pool resource"));
+ if (pool_override && jcr->dir_impl->res.pool->catalog) {
+ jcr->dir_impl->res.catalog = jcr->dir_impl->res.pool->catalog;
+ PmStrcpy(jcr->dir_impl->res.catalog_source, _("Pool resource"));
}
}
@@ -1304,40 +1319,40 @@ bool GetOrCreateClientRecord(JobControlRecord* jcr)
{
ClientDbRecord cr;
- bstrncpy(cr.Name, jcr->impl->res.client->resource_name_, sizeof(cr.Name));
- cr.AutoPrune = jcr->impl->res.client->AutoPrune;
- cr.FileRetention = jcr->impl->res.client->FileRetention;
- cr.JobRetention = jcr->impl->res.client->JobRetention;
+ bstrncpy(cr.Name, jcr->dir_impl->res.client->resource_name_, sizeof(cr.Name));
+ cr.AutoPrune = jcr->dir_impl->res.client->AutoPrune;
+ cr.FileRetention = jcr->dir_impl->res.client->FileRetention;
+ cr.JobRetention = jcr->dir_impl->res.client->JobRetention;
if (!jcr->client_name) { jcr->client_name = GetPoolMemory(PM_NAME); }
- PmStrcpy(jcr->client_name, jcr->impl->res.client->resource_name_);
+ PmStrcpy(jcr->client_name, jcr->dir_impl->res.client->resource_name_);
if (!jcr->db->CreateClientRecord(jcr, &cr)) {
Jmsg(jcr, M_FATAL, 0, _("Could not create Client record. ERR=%s\n"),
jcr->db->strerror());
return false;
}
// Only initialize quota when a Soft or Hard Limit is set.
- if (jcr->impl->res.client->HardQuota != 0
- || jcr->impl->res.client->SoftQuota != 0) {
+ if (jcr->dir_impl->res.client->HardQuota != 0
+ || jcr->dir_impl->res.client->SoftQuota != 0) {
if (!jcr->db->GetQuotaRecord(jcr, &cr)) {
if (!jcr->db->CreateQuotaRecord(jcr, &cr)) {
Jmsg(jcr, M_FATAL, 0, _("Could not create Quota record. ERR=%s\n"),
jcr->db->strerror());
}
- jcr->impl->res.client->QuotaLimit = 0;
- jcr->impl->res.client->GraceTime = 0;
+ jcr->dir_impl->res.client->QuotaLimit = 0;
+ jcr->dir_impl->res.client->GraceTime = 0;
}
}
- jcr->impl->jr.ClientId = cr.ClientId;
- jcr->impl->res.client->QuotaLimit = cr.QuotaLimit;
- jcr->impl->res.client->GraceTime = cr.GraceTime;
+ jcr->dir_impl->jr.ClientId = cr.ClientId;
+ jcr->dir_impl->res.client->QuotaLimit = cr.QuotaLimit;
+ jcr->dir_impl->res.client->GraceTime = cr.GraceTime;
if (cr.Uname[0]) {
- if (!jcr->impl->client_uname) {
- jcr->impl->client_uname = GetPoolMemory(PM_NAME);
+ if (!jcr->dir_impl->client_uname) {
+ jcr->dir_impl->client_uname = GetPoolMemory(PM_NAME);
}
- PmStrcpy(jcr->impl->client_uname, cr.Uname);
+ PmStrcpy(jcr->dir_impl->client_uname, cr.Uname);
}
Dmsg2(100, "Created Client %s record %d\n",
- jcr->impl->res.client->resource_name_, jcr->impl->jr.ClientId);
+ jcr->dir_impl->res.client->resource_name_, jcr->dir_impl->jr.ClientId);
return true;
}
@@ -1346,22 +1361,22 @@ bool GetOrCreateFilesetRecord(JobControlRecord* jcr)
FileSetDbRecord fsr;
// Get or Create FileSet record
- bstrncpy(fsr.FileSet, jcr->impl->res.fileset->resource_name_,
+ bstrncpy(fsr.FileSet, jcr->dir_impl->res.fileset->resource_name_,
sizeof(fsr.FileSet));
- if (jcr->impl->res.fileset->have_MD5) {
+ if (jcr->dir_impl->res.fileset->have_MD5) {
MD5_CTX md5c;
unsigned char digest[16]; /* MD5 digest length */
- memcpy(&md5c, &jcr->impl->res.fileset->md5c, sizeof(md5c));
+ memcpy(&md5c, &jcr->dir_impl->res.fileset->md5c, sizeof(md5c));
ALLOW_DEPRECATED(MD5_Final(digest, &md5c));
/* Keep the flag (last arg) set to false otherwise old FileSets will
* get new MD5 sums and the user will get Full backups on everything */
BinToBase64(fsr.MD5, sizeof(fsr.MD5), (char*)digest, sizeof(digest), false);
- bstrncpy(jcr->impl->res.fileset->MD5, fsr.MD5,
- sizeof(jcr->impl->res.fileset->MD5));
+ bstrncpy(jcr->dir_impl->res.fileset->MD5, fsr.MD5,
+ sizeof(jcr->dir_impl->res.fileset->MD5));
} else {
Jmsg(jcr, M_WARNING, 0, _("FileSet MD5 digest not found.\n"));
}
- if (!jcr->impl->res.fileset->ignore_fs_changes
+ if (!jcr->dir_impl->res.fileset->ignore_fs_changes
|| !jcr->db->GetFilesetRecord(jcr, &fsr)) {
PoolMem FileSetText(PM_MESSAGE);
OutputFormatter output_formatter
@@ -1369,8 +1384,8 @@ bool GetOrCreateFilesetRecord(JobControlRecord* jcr)
OutputFormatterResource output_formatter_resource
= OutputFormatterResource(&output_formatter);
- jcr->impl->res.fileset->PrintConfig(output_formatter_resource, *my_config,
- false, false);
+ jcr->dir_impl->res.fileset->PrintConfig(output_formatter_resource,
+ *my_config, false, false);
fsr.FileSetText = FileSetText.c_str();
@@ -1382,46 +1397,47 @@ bool GetOrCreateFilesetRecord(JobControlRecord* jcr)
}
}
- jcr->impl->jr.FileSetId = fsr.FileSetId;
- bstrncpy(jcr->impl->FSCreateTime, fsr.cCreateTime,
- sizeof(jcr->impl->FSCreateTime));
+ jcr->dir_impl->jr.FileSetId = fsr.FileSetId;
+ bstrncpy(jcr->dir_impl->FSCreateTime, fsr.cCreateTime,
+ sizeof(jcr->dir_impl->FSCreateTime));
Dmsg2(119, "Created FileSet %s record %u\n",
- jcr->impl->res.fileset->resource_name_, jcr->impl->jr.FileSetId);
+ jcr->dir_impl->res.fileset->resource_name_,
+ jcr->dir_impl->jr.FileSetId);
return true;
}
void InitJcrJobRecord(JobControlRecord* jcr)
{
- jcr->impl->jr.SchedTime = jcr->sched_time;
- jcr->impl->jr.StartTime = jcr->start_time;
- jcr->impl->jr.EndTime = 0; /* perhaps rescheduled, clear it */
- jcr->impl->jr.JobType = jcr->getJobType();
- jcr->impl->jr.JobLevel = jcr->getJobLevel();
- jcr->impl->jr.JobStatus = jcr->getJobStatus();
- jcr->impl->jr.JobId = jcr->JobId;
- jcr->impl->jr.JobSumTotalBytes = 18446744073709551615LLU;
- bstrncpy(jcr->impl->jr.Name, jcr->impl->res.job->resource_name_,
- sizeof(jcr->impl->jr.Name));
- bstrncpy(jcr->impl->jr.Job, jcr->Job, sizeof(jcr->impl->jr.Job));
+ jcr->dir_impl->jr.SchedTime = jcr->sched_time;
+ jcr->dir_impl->jr.StartTime = jcr->start_time;
+ jcr->dir_impl->jr.EndTime = 0; /* perhaps rescheduled, clear it */
+ jcr->dir_impl->jr.JobType = jcr->getJobType();
+ jcr->dir_impl->jr.JobLevel = jcr->getJobLevel();
+ jcr->dir_impl->jr.JobStatus = jcr->getJobStatus();
+ jcr->dir_impl->jr.JobId = jcr->JobId;
+ jcr->dir_impl->jr.JobSumTotalBytes = 18446744073709551615LLU;
+ bstrncpy(jcr->dir_impl->jr.Name, jcr->dir_impl->res.job->resource_name_,
+ sizeof(jcr->dir_impl->jr.Name));
+ bstrncpy(jcr->dir_impl->jr.Job, jcr->Job, sizeof(jcr->dir_impl->jr.Job));
}
// Write status and such in DB
void UpdateJobEndRecord(JobControlRecord* jcr)
{
- jcr->impl->jr.EndTime = time(NULL);
- jcr->end_time = jcr->impl->jr.EndTime;
- jcr->impl->jr.JobId = jcr->JobId;
- jcr->impl->jr.JobStatus = jcr->getJobStatus();
- jcr->impl->jr.JobFiles = jcr->JobFiles;
- jcr->impl->jr.JobBytes = jcr->JobBytes;
- jcr->impl->jr.ReadBytes = jcr->ReadBytes;
- jcr->impl->jr.VolSessionId = jcr->VolSessionId;
- jcr->impl->jr.VolSessionTime = jcr->VolSessionTime;
- jcr->impl->jr.JobErrors = jcr->JobErrors;
- jcr->impl->jr.HasBase = jcr->HasBase;
- if (!jcr->db->UpdateJobEndRecord(jcr, &jcr->impl->jr)) {
+ jcr->dir_impl->jr.EndTime = time(NULL);
+ jcr->end_time = jcr->dir_impl->jr.EndTime;
+ jcr->dir_impl->jr.JobId = jcr->JobId;
+ jcr->dir_impl->jr.JobStatus = jcr->getJobStatus();
+ jcr->dir_impl->jr.JobFiles = jcr->JobFiles;
+ jcr->dir_impl->jr.JobBytes = jcr->JobBytes;
+ jcr->dir_impl->jr.ReadBytes = jcr->ReadBytes;
+ jcr->dir_impl->jr.VolSessionId = jcr->VolSessionId;
+ jcr->dir_impl->jr.VolSessionTime = jcr->VolSessionTime;
+ jcr->dir_impl->jr.JobErrors = jcr->JobErrors;
+ jcr->dir_impl->jr.HasBase = jcr->HasBase;
+ if (!jcr->db->UpdateJobEndRecord(jcr, &jcr->dir_impl->jr)) {
Jmsg(jcr, M_WARNING, 0, _("Error updating job record. %s\n"),
jcr->db->strerror());
}
@@ -1509,14 +1525,14 @@ void DirdFreeJcrPointers(JobControlRecord* jcr)
BfreeAndNull(jcr->sd_auth_key);
BfreeAndNull(jcr->where);
- BfreeAndNull(jcr->impl->backup_format);
+ BfreeAndNull(jcr->dir_impl->backup_format);
BfreeAndNull(jcr->RestoreBootstrap);
BfreeAndNull(jcr->ar);
FreeAndNullPoolMemory(jcr->JobIds);
- FreeAndNullPoolMemory(jcr->impl->client_uname);
+ FreeAndNullPoolMemory(jcr->dir_impl->client_uname);
FreeAndNullPoolMemory(jcr->attr);
- FreeAndNullPoolMemory(jcr->impl->fname);
+ FreeAndNullPoolMemory(jcr->dir_impl->fname);
}
/**
@@ -1528,21 +1544,21 @@ void DirdFreeJcr(JobControlRecord* jcr)
{
Dmsg0(200, "Start dird FreeJcr\n");
- if (jcr->impl->mig_jcr) {
- FreeJcr(jcr->impl->mig_jcr);
- jcr->impl->mig_jcr = NULL;
+ if (jcr->dir_impl->mig_jcr) {
+ FreeJcr(jcr->dir_impl->mig_jcr);
+ jcr->dir_impl->mig_jcr = NULL;
}
DirdFreeJcrPointers(jcr);
- if (jcr->impl->term_wait_inited) {
- pthread_cond_destroy(&jcr->impl->term_wait);
- jcr->impl->term_wait_inited = false;
+ if (jcr->dir_impl->term_wait_inited) {
+ pthread_cond_destroy(&jcr->dir_impl->term_wait);
+ jcr->dir_impl->term_wait_inited = false;
}
- if (jcr->impl->nextrun_ready_inited) {
- pthread_cond_destroy(&jcr->impl->nextrun_ready);
- jcr->impl->nextrun_ready_inited = false;
+ if (jcr->dir_impl->nextrun_ready_inited) {
+ pthread_cond_destroy(&jcr->dir_impl->nextrun_ready);
+ jcr->dir_impl->nextrun_ready_inited = false;
}
if (jcr->db_batch) {
@@ -1556,24 +1572,26 @@ void DirdFreeJcr(JobControlRecord* jcr)
jcr->db = NULL;
}
- if (jcr->impl->restore_tree_root) { FreeTree(jcr->impl->restore_tree_root); }
+ if (jcr->dir_impl->restore_tree_root) {
+ FreeTree(jcr->dir_impl->restore_tree_root);
+ }
- if (jcr->impl->bsr) {
- libbareos::FreeBsr(jcr->impl->bsr);
- jcr->impl->bsr = NULL;
+ if (jcr->dir_impl->bsr) {
+ libbareos::FreeBsr(jcr->dir_impl->bsr);
+ jcr->dir_impl->bsr = NULL;
}
FreeAndNullPoolMemory(jcr->starttime_string);
- FreeAndNullPoolMemory(jcr->impl->fname);
- FreeAndNullPoolMemory(jcr->impl->res.pool_source);
- FreeAndNullPoolMemory(jcr->impl->res.npool_source);
- FreeAndNullPoolMemory(jcr->impl->res.rpool_source);
- FreeAndNullPoolMemory(jcr->impl->res.wstore_source);
- FreeAndNullPoolMemory(jcr->impl->res.rstore_source);
- FreeAndNullPoolMemory(jcr->impl->res.catalog_source);
- FreeAndNullPoolMemory(jcr->impl->FDSecureEraseCmd);
- FreeAndNullPoolMemory(jcr->impl->SDSecureEraseCmd);
- FreeAndNullPoolMemory(jcr->impl->vf_jobids);
+ FreeAndNullPoolMemory(jcr->dir_impl->fname);
+ FreeAndNullPoolMemory(jcr->dir_impl->res.pool_source);
+ FreeAndNullPoolMemory(jcr->dir_impl->res.npool_source);
+ FreeAndNullPoolMemory(jcr->dir_impl->res.rpool_source);
+ FreeAndNullPoolMemory(jcr->dir_impl->res.wstore_source);
+ FreeAndNullPoolMemory(jcr->dir_impl->res.rstore_source);
+ FreeAndNullPoolMemory(jcr->dir_impl->res.catalog_source);
+ FreeAndNullPoolMemory(jcr->dir_impl->FDSecureEraseCmd);
+ FreeAndNullPoolMemory(jcr->dir_impl->SDSecureEraseCmd);
+ FreeAndNullPoolMemory(jcr->dir_impl->vf_jobids);
// Delete lists setup to hold storage pointers
FreeRwstorage(jcr);
@@ -1587,9 +1605,9 @@ void DirdFreeJcr(JobControlRecord* jcr)
FreePlugins(jcr); /* release instantiated plugins */
- if (jcr->impl) {
- delete jcr->impl;
- jcr->impl = nullptr;
+ if (jcr->dir_impl) {
+ delete jcr->dir_impl;
+ jcr->dir_impl = nullptr;
}
Dmsg0(200, "End dird FreeJcr\n");
@@ -1633,7 +1651,7 @@ void GetJobStorage(UnifiedStorageResource* store,
*/
void SetJcrDefaults(JobControlRecord* jcr, JobResource* job)
{
- jcr->impl->res.job = job;
+ jcr->dir_impl->res.job = job;
jcr->setJobType(job->JobType);
jcr->setJobProtocol(job->Protocol);
jcr->setJobStatus(JS_Created);
@@ -1650,18 +1668,18 @@ void SetJcrDefaults(JobControlRecord* jcr, JobResource* job)
break;
}
- if (!jcr->impl->fname) { jcr->impl->fname = GetPoolMemory(PM_FNAME); }
- if (!jcr->impl->res.pool_source) {
- jcr->impl->res.pool_source = GetPoolMemory(PM_MESSAGE);
- PmStrcpy(jcr->impl->res.pool_source, _("unknown source"));
+ if (!jcr->dir_impl->fname) { jcr->dir_impl->fname = GetPoolMemory(PM_FNAME); }
+ if (!jcr->dir_impl->res.pool_source) {
+ jcr->dir_impl->res.pool_source = GetPoolMemory(PM_MESSAGE);
+ PmStrcpy(jcr->dir_impl->res.pool_source, _("unknown source"));
}
- if (!jcr->impl->res.npool_source) {
- jcr->impl->res.npool_source = GetPoolMemory(PM_MESSAGE);
- PmStrcpy(jcr->impl->res.npool_source, _("unknown source"));
+ if (!jcr->dir_impl->res.npool_source) {
+ jcr->dir_impl->res.npool_source = GetPoolMemory(PM_MESSAGE);
+ PmStrcpy(jcr->dir_impl->res.npool_source, _("unknown source"));
}
- if (!jcr->impl->res.catalog_source) {
- jcr->impl->res.catalog_source = GetPoolMemory(PM_MESSAGE);
- PmStrcpy(jcr->impl->res.catalog_source, _("unknown source"));
+ if (!jcr->dir_impl->res.catalog_source) {
+ jcr->dir_impl->res.catalog_source = GetPoolMemory(PM_MESSAGE);
+ PmStrcpy(jcr->dir_impl->res.catalog_source, _("unknown source"));
}
jcr->JobPriority = job->Priority;
@@ -1672,48 +1690,48 @@ void SetJcrDefaults(JobControlRecord* jcr, JobResource* job)
} else if (job->pool) {
CopyRwstorage(jcr, job->pool->storage, _("Pool resource"));
}
- jcr->impl->res.client = job->client;
+ jcr->dir_impl->res.client = job->client;
- if (jcr->impl->res.client) {
+ if (jcr->dir_impl->res.client) {
if (!jcr->client_name) { jcr->client_name = GetPoolMemory(PM_NAME); }
- PmStrcpy(jcr->client_name, jcr->impl->res.client->resource_name_);
+ PmStrcpy(jcr->client_name, jcr->dir_impl->res.client->resource_name_);
}
- PmStrcpy(jcr->impl->res.pool_source, _("Job resource"));
- jcr->impl->res.pool = job->pool;
- jcr->impl->res.full_pool = job->full_pool;
- jcr->impl->res.inc_pool = job->inc_pool;
- jcr->impl->res.diff_pool = job->diff_pool;
+ PmStrcpy(jcr->dir_impl->res.pool_source, _("Job resource"));
+ jcr->dir_impl->res.pool = job->pool;
+ jcr->dir_impl->res.full_pool = job->full_pool;
+ jcr->dir_impl->res.inc_pool = job->inc_pool;
+ jcr->dir_impl->res.diff_pool = job->diff_pool;
if (job->pool && job->pool->catalog) {
- jcr->impl->res.catalog = job->pool->catalog;
- PmStrcpy(jcr->impl->res.catalog_source, _("Pool resource"));
+ jcr->dir_impl->res.catalog = job->pool->catalog;
+ PmStrcpy(jcr->dir_impl->res.catalog_source, _("Pool resource"));
} else {
if (job->catalog) {
- jcr->impl->res.catalog = job->catalog;
- PmStrcpy(jcr->impl->res.catalog_source, _("Job resource"));
+ jcr->dir_impl->res.catalog = job->catalog;
+ PmStrcpy(jcr->dir_impl->res.catalog_source, _("Job resource"));
} else {
if (job->client) {
- jcr->impl->res.catalog = job->client->catalog;
- PmStrcpy(jcr->impl->res.catalog_source, _("Client resource"));
+ jcr->dir_impl->res.catalog = job->client->catalog;
+ PmStrcpy(jcr->dir_impl->res.catalog_source, _("Client resource"));
} else {
- jcr->impl->res.catalog
+ jcr->dir_impl->res.catalog
= (CatalogResource*)my_config->GetNextRes(R_CATALOG, NULL);
- PmStrcpy(jcr->impl->res.catalog_source, _("Default catalog"));
+ PmStrcpy(jcr->dir_impl->res.catalog_source, _("Default catalog"));
}
}
}
- jcr->impl->res.fileset = job->fileset;
+ jcr->dir_impl->res.fileset = job->fileset;
jcr->accurate = job->accurate;
- jcr->impl->res.messages = job->messages;
- jcr->impl->spool_data = job->spool_data;
- jcr->impl->spool_size = job->spool_size;
- jcr->impl->IgnoreDuplicateJobChecking = job->IgnoreDuplicateJobChecking;
- jcr->impl->MaxRunSchedTime = job->MaxRunSchedTime;
+ jcr->dir_impl->res.messages = job->messages;
+ jcr->dir_impl->spool_data = job->spool_data;
+ jcr->dir_impl->spool_size = job->spool_size;
+ jcr->dir_impl->IgnoreDuplicateJobChecking = job->IgnoreDuplicateJobChecking;
+ jcr->dir_impl->MaxRunSchedTime = job->MaxRunSchedTime;
- if (jcr->impl->backup_format) { free(jcr->impl->backup_format); }
- jcr->impl->backup_format = strdup(job->backup_format);
+ if (jcr->dir_impl->backup_format) { free(jcr->dir_impl->backup_format); }
+ jcr->dir_impl->backup_format = strdup(job->backup_format);
if (jcr->RestoreBootstrap) {
free(jcr->RestoreBootstrap);
@@ -1726,7 +1744,7 @@ void SetJcrDefaults(JobControlRecord* jcr, JobResource* job)
}
// This can be overridden by Console program
- jcr->impl->res.verify_job = job->verify_job;
+ jcr->dir_impl->res.verify_job = job->verify_job;
// If no default level given, set one
if (jcr->getJobLevel() == 0) {
@@ -1751,12 +1769,12 @@ void SetJcrDefaults(JobControlRecord* jcr, JobResource* job)
void CreateClones(JobControlRecord* jcr)
{
// Fire off any clone jobs (run directives)
- Dmsg2(900, "cloned=%d run_cmds=%p\n", jcr->impl->cloned,
- jcr->impl->res.job->run_cmds);
- if (!jcr->impl->cloned && jcr->impl->res.job->run_cmds) {
+ Dmsg2(900, "cloned=%d run_cmds=%p\n", jcr->dir_impl->cloned,
+ jcr->dir_impl->res.job->run_cmds);
+ if (!jcr->dir_impl->cloned && jcr->dir_impl->res.job->run_cmds) {
const char* runcmd = nullptr;
JobId_t jobid;
- JobResource* job = jcr->impl->res.job;
+ JobResource* job = jcr->dir_impl->res.job;
POOLMEM* cmd = GetPoolMemory(PM_FNAME);
UaContext* ua = new_ua_context(jcr);
@@ -1781,7 +1799,7 @@ void CreateClones(JobControlRecord* jcr)
}
/**
- * Given: a JobId in jcr->impl_->previous_jr.JobId,
+ * Given: a JobId in jcr->dir_impl_->previous_jr.JobId,
* this subroutine writes a bsr file to restore that job.
* Returns: -1 on error
* number of files if OK
@@ -1794,24 +1812,24 @@ int CreateRestoreBootstrapFile(JobControlRecord* jcr)
rx.bsr = std::make_unique<RestoreBootstrapRecord>();
rx.JobIds = (char*)"";
- rx.bsr->JobId = jcr->impl->previous_jr.JobId;
+ rx.bsr->JobId = jcr->dir_impl->previous_jr.JobId;
ua = new_ua_context(jcr);
if (!AddVolumeInformationToBsr(ua, rx.bsr.get())) {
files = -1;
goto bail_out;
}
- for (uint32_t fi = 1; fi <= jcr->impl->previous_jr.JobFiles; fi++) {
+ for (uint32_t fi = 1; fi <= jcr->dir_impl->previous_jr.JobFiles; fi++) {
rx.bsr->fi->Add(fi);
}
- jcr->impl->ExpectedFiles = WriteBsrFile(ua, rx);
- if (jcr->impl->ExpectedFiles == 0) {
+ jcr->dir_impl->ExpectedFiles = WriteBsrFile(ua, rx);
+ if (jcr->dir_impl->ExpectedFiles == 0) {
files = 0;
goto bail_out;
}
FreeUaContext(ua);
rx.bsr.reset(nullptr);
- jcr->impl->needs_sd = true;
- return jcr->impl->ExpectedFiles;
+ jcr->dir_impl->needs_sd = true;
+ return jcr->dir_impl->ExpectedFiles;
bail_out:
FreeUaContext(ua);