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/backup.cc')
-rw-r--r--core/src/dird/backup.cc291
1 files changed, 150 insertions, 141 deletions
diff --git a/core/src/dird/backup.cc b/core/src/dird/backup.cc
index 07a57ab6d..65ad1e5a7 100644
--- a/core/src/dird/backup.cc
+++ b/core/src/dird/backup.cc
@@ -39,7 +39,7 @@
#include "dird/fd_cmds.h"
#include "dird/getmsg.h"
#include "dird/inc_conf.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/msgchan.h"
#include "dird/quota.h"
@@ -73,14 +73,15 @@ static char EndJob[]
static inline bool ValidateClient(JobControlRecord* jcr)
{
- switch (jcr->impl->res.client->Protocol) {
+ switch (jcr->dir_impl->res.client->Protocol) {
case APT_NATIVE:
return true;
default:
Jmsg(jcr, M_FATAL, 0,
_("Client %s has illegal backup protocol %s for Native backup\n"),
- jcr->impl->res.client->resource_name_,
- AuthenticationProtocolTypeToString(jcr->impl->res.client->Protocol));
+ jcr->dir_impl->res.client->resource_name_,
+ AuthenticationProtocolTypeToString(
+ jcr->dir_impl->res.client->Protocol));
return false;
}
}
@@ -131,7 +132,7 @@ static inline bool ValidateStorage(JobControlRecord* jcr)
{
StorageResource* store = nullptr;
- foreach_alist (store, jcr->impl->res.write_storage_list) {
+ foreach_alist (store, jcr->dir_impl->res.write_storage_list) {
switch (store->Protocol) {
case APT_NATIVE:
continue;
@@ -153,13 +154,13 @@ bool DoNativeBackupInit(JobControlRecord* jcr)
if (!AllowDuplicateJob(jcr)) { return false; }
- jcr->impl->jr.PoolId
- = GetOrCreatePoolRecord(jcr, jcr->impl->res.pool->resource_name_);
- if (jcr->impl->jr.PoolId == 0) { return false; }
+ jcr->dir_impl->jr.PoolId
+ = GetOrCreatePoolRecord(jcr, jcr->dir_impl->res.pool->resource_name_);
+ if (jcr->dir_impl->jr.PoolId == 0) { return false; }
// If pool storage specified, use it instead of job storage
- CopyWstorage(jcr, jcr->impl->res.pool->storage, _("Pool resource"));
- if (!jcr->impl->res.write_storage_list) {
+ CopyWstorage(jcr, jcr->dir_impl->res.pool->storage, _("Pool resource"));
+ if (!jcr->dir_impl->res.write_storage_list) {
Jmsg(jcr, M_FATAL, 0,
_("No Storage specification found in Job or Pool.\n"));
return false;
@@ -179,13 +180,13 @@ static bool GetBaseJobids(JobControlRecord* jcr, db_list_ctx* jobids)
JobResource* job = nullptr;
JobId_t id;
- if (!jcr->impl->res.job->base) {
+ if (!jcr->dir_impl->res.job->base) {
return false; /* no base job, stop accurate */
}
- jr.StartTime = jcr->impl->jr.StartTime;
+ jr.StartTime = jcr->dir_impl->jr.StartTime;
- foreach_alist (job, jcr->impl->res.job->base) {
+ foreach_alist (job, jcr->dir_impl->res.job->base) {
bstrncpy(jr.Name, job->resource_name_, sizeof(jr.Name));
jcr->db->GetBaseJobid(jcr, &jr, &id);
@@ -211,7 +212,7 @@ static int AccurateListHandler(void* ctx, int num_fields, char** row)
}
/* sending with checksum */
- if (jcr->impl->use_accurate_chksum && num_fields == 9 && row[6][0]
+ if (jcr->dir_impl->use_accurate_chksum && num_fields == 9 && row[6][0]
&& /* skip checksum = '0' */
row[6][1]) {
jcr->file_bsock->fsend("%s%s%c%s%c%s%c%s", row[0], row[1], 0, row[4], 0,
@@ -235,9 +236,11 @@ static bool IsChecksumNeededByFileset(JobControlRecord* jcr)
bool in_block = false;
bool have_basejob_option = false;
- if (!jcr->impl->res.job || !jcr->impl->res.job->fileset) { return false; }
+ if (!jcr->dir_impl->res.job || !jcr->dir_impl->res.job->fileset) {
+ return false;
+ }
- fs = jcr->impl->res.job->fileset;
+ fs = jcr->dir_impl->res.job->fileset;
for (std::size_t i = 0; i < fs->include_items.size(); i++) {
inc = fs->include_items[i];
@@ -309,7 +312,7 @@ bool SendAccurateCurrentFiles(JobControlRecord* jcr)
}
} else {
// For Incr/Diff level, we search for older jobs
- jcr->db->AccurateGetJobids(jcr, &jcr->impl->jr, &jobids);
+ jcr->db->AccurateGetJobids(jcr, &jcr->dir_impl->jr, &jobids);
// We are in Incr/Diff, but no Full to build the accurate list...
if (jobids.empty()) {
@@ -319,7 +322,7 @@ bool SendAccurateCurrentFiles(JobControlRecord* jcr)
}
// Don't send and store the checksum if fileset doesn't require it
- jcr->impl->use_accurate_chksum = IsChecksumNeededByFileset(jcr);
+ jcr->dir_impl->use_accurate_chksum = IsChecksumNeededByFileset(jcr);
if (jcr->JobId) { /* display the message only for real jobs */
Jmsg(jcr, M_INFO, 0, _("Sending Accurate information.\n"));
}
@@ -339,7 +342,7 @@ bool SendAccurateCurrentFiles(JobControlRecord* jcr)
jcr->db->strerror());
return false;
}
- if (!jcr->db->GetBaseFileList(jcr, jcr->impl->use_accurate_chksum,
+ if (!jcr->db->GetBaseFileList(jcr, jcr->dir_impl->use_accurate_chksum,
AccurateListHandler, (void*)jcr)) {
Jmsg(jcr, M_FATAL, 0, "error in jcr->db->GetBaseFileList:%s\n",
jcr->db->strerror());
@@ -351,9 +354,10 @@ bool SendAccurateCurrentFiles(JobControlRecord* jcr)
return false; /* Fail */
}
- if (!jcr->db_batch->GetFileList(
- jcr, jobids.GetAsString().c_str(), jcr->impl->use_accurate_chksum,
- false /* no delta */, AccurateListHandler, (void*)jcr)) {
+ if (!jcr->db_batch->GetFileList(jcr, jobids.GetAsString().c_str(),
+ jcr->dir_impl->use_accurate_chksum,
+ false /* no delta */, AccurateListHandler,
+ (void*)jcr)) {
Jmsg(jcr, M_FATAL, 0, "error in jcr->db_batch->GetBaseFileList:%s\n",
jcr->db_batch->strerror());
return false;
@@ -385,10 +389,10 @@ bool DoNativeBackup(JobControlRecord* jcr)
Jmsg(jcr, M_INFO, 0, _("Start Backup JobId %s, Job=%s\n"),
edit_uint64(jcr->JobId, ed1), jcr->Job);
- jcr->setJobStatus(JS_Running);
- Dmsg2(100, "JobId=%d JobLevel=%c\n", jcr->impl->jr.JobId,
- jcr->impl->jr.JobLevel);
- if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->impl->jr)) {
+ jcr->setJobStatusWithPriorityCheck(JS_Running);
+ Dmsg2(100, "JobId=%d JobLevel=%c\n", jcr->dir_impl->jr.JobId,
+ jcr->dir_impl->jr.JobLevel);
+ if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->dir_impl->jr)) {
Jmsg(jcr, M_FATAL, 0, "%s", jcr->db->strerror());
return false;
}
@@ -411,14 +415,15 @@ bool DoNativeBackup(JobControlRecord* jcr)
* will be contacting him for a backup session.
*/
Dmsg0(110, "Open connection with storage daemon\n");
- jcr->setJobStatus(JS_WaitSD);
+ jcr->setJobStatusWithPriorityCheck(JS_WaitSD);
if (!ConnectToStorageDaemon(jcr, 10, me->SDConnectTimeout, true)) {
return false;
}
sd = jcr->store_bsock;
- if (!StartStorageDaemonJob(jcr, NULL, jcr->impl->res.write_storage_list)) {
+ if (!StartStorageDaemonJob(jcr, NULL,
+ jcr->dir_impl->res.write_storage_list)) {
return false;
}
@@ -426,7 +431,7 @@ bool DoNativeBackup(JobControlRecord* jcr)
* When the client is not in passive mode we can put the SD in
* listen mode for the FD connection.
*/
- jcr->passive_client = jcr->impl->res.client->passive;
+ jcr->passive_client = jcr->dir_impl->res.client->passive;
if (!jcr->passive_client) {
/*
* Start the job prior to starting the message thread below
@@ -446,7 +451,7 @@ bool DoNativeBackup(JobControlRecord* jcr)
Dmsg0(150, "Storage daemon connection OK\n");
}
- jcr->setJobStatus(JS_WaitFD);
+ jcr->setJobStatusWithPriorityCheck(JS_WaitFD);
if (!ConnectToFileDaemon(jcr, 10, me->FDConnectTimeout, true)) {
goto bail_out;
}
@@ -454,15 +459,15 @@ bool DoNativeBackup(JobControlRecord* jcr)
SendJobInfoToFileDaemon(jcr);
fd = jcr->file_bsock;
- if (jcr->passive_client && jcr->impl->FDVersion < FD_VERSION_51) {
+ if (jcr->passive_client && jcr->dir_impl->FDVersion < FD_VERSION_51) {
Jmsg(jcr, M_FATAL, 0,
_("Client \"%s\" doesn't support passive client mode. "
"Please upgrade your client or disable compat mode.\n"),
- jcr->impl->res.client->resource_name_);
+ jcr->dir_impl->res.client->resource_name_);
goto close_fd;
}
- jcr->setJobStatus(JS_Running);
+ jcr->setJobStatusWithPriorityCheck(JS_Running);
if (!SendLevelCommand(jcr)) { goto bail_out; }
@@ -478,25 +483,25 @@ bool DoNativeBackup(JobControlRecord* jcr)
Dmsg1(500, "Unexpected %s secure erase\n", "client");
}
- if (jcr->impl->res.job->max_bandwidth > 0) {
- jcr->max_bandwidth = jcr->impl->res.job->max_bandwidth;
- } else if (jcr->impl->res.client->max_bandwidth > 0) {
- jcr->max_bandwidth = jcr->impl->res.client->max_bandwidth;
+ if (jcr->dir_impl->res.job->max_bandwidth > 0) {
+ jcr->max_bandwidth = jcr->dir_impl->res.job->max_bandwidth;
+ } else if (jcr->dir_impl->res.client->max_bandwidth > 0) {
+ jcr->max_bandwidth = jcr->dir_impl->res.client->max_bandwidth;
}
if (jcr->max_bandwidth > 0) {
SendBwlimitToFd(jcr, jcr->Job); /* Old clients don't have this command */
}
- client = jcr->impl->res.client;
- store = jcr->impl->res.write_storage;
+ client = jcr->dir_impl->res.client;
+ store = jcr->dir_impl->res.write_storage;
char* connection_target_address;
if (!jcr->passive_client) {
// TLS Requirement
TlsPolicy tls_policy;
- if (jcr->impl->res.client->connection_successful_handshake_
+ if (jcr->dir_impl->res.client->connection_successful_handshake_
!= ClientConnectionHandshakeMode::kTlsFirst) {
tls_policy = store->GetPolicy();
} else {
@@ -518,7 +523,7 @@ bool DoNativeBackup(JobControlRecord* jcr)
} else { /* passive client */
TlsPolicy tls_policy;
- if (jcr->impl->res.client->connection_successful_handshake_
+ if (jcr->dir_impl->res.client->connection_successful_handshake_
!= ClientConnectionHandshakeMode::kTlsFirst) {
tls_policy = client->GetPolicy();
} else {
@@ -570,8 +575,8 @@ bool DoNativeBackup(JobControlRecord* jcr)
* 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());
}
@@ -616,7 +621,7 @@ close_fd:
}
bail_out:
- jcr->setJobStatus(JS_ErrorTerminated);
+ jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
WaitForJobTermination(jcr, me->FDConnectTimeout);
return false;
@@ -642,7 +647,7 @@ int WaitForJobTermination(JobControlRecord* jcr, int timeout)
int Encrypt = 0;
btimer_t* tid = NULL;
- jcr->setJobStatus(JS_Running);
+ jcr->setJobStatusWithPriorityCheck(JS_Running);
if (fd) {
if (timeout) {
@@ -652,12 +657,12 @@ int WaitForJobTermination(JobControlRecord* jcr, int timeout)
// Wait for Client to terminate
while ((n = BgetDirmsg(fd)) >= 0) {
if (!fd_ok
- && sscanf(fd->msg, EndJob, &jcr->impl->FDJobStatus, &JobFiles,
+ && sscanf(fd->msg, EndJob, &jcr->dir_impl->FDJobStatus, &JobFiles,
&ReadBytes, &JobBytes, &JobErrors, &VSS, &Encrypt)
== 7) {
fd_ok = true;
- jcr->setJobStatus(jcr->impl->FDJobStatus);
- Dmsg1(100, "FDStatus=%c\n", (char)jcr->JobStatus);
+ jcr->setJobStatusWithPriorityCheck(jcr->dir_impl->FDJobStatus);
+ Dmsg1(100, "FDStatus=%c\n", (char)jcr->getJobStatus());
} else {
Jmsg(jcr, M_WARNING, 0, _("Unexpected Client Job message: %s\n"),
fd->msg);
@@ -670,7 +675,7 @@ int WaitForJobTermination(JobControlRecord* jcr, int timeout)
int i = 0;
Jmsg(jcr, M_FATAL, 0, _("Network error with FD during %s: ERR=%s\n"),
job_type_to_str(jcr->getJobType()), fd->bstrerror());
- while (i++ < 10 && jcr->impl->res.job->RescheduleIncompleteJobs
+ while (i++ < 10 && jcr->dir_impl->res.job->RescheduleIncompleteJobs
&& jcr->IsCanceled()) {
Bmicrosleep(3, 0);
}
@@ -683,11 +688,13 @@ int WaitForJobTermination(JobControlRecord* jcr, int timeout)
* the SD despool.
*/
Dmsg5(100, "cancel=%d fd_ok=%d FDJS=%d JS=%d SDJS=%d\n", jcr->IsCanceled(),
- fd_ok, jcr->impl->FDJobStatus, jcr->JobStatus, jcr->impl->SDJobStatus);
+ fd_ok, jcr->dir_impl->FDJobStatus.load(), jcr->getJobStatus(),
+ jcr->dir_impl->SDJobStatus.load());
if (jcr->IsCanceled()
- || (!jcr->impl->res.job->RescheduleIncompleteJobs && !fd_ok)) {
+ || (!jcr->dir_impl->res.job->RescheduleIncompleteJobs && !fd_ok)) {
Dmsg4(100, "fd_ok=%d FDJS=%d JS=%d SDJS=%d\n", fd_ok,
- jcr->impl->FDJobStatus, jcr->JobStatus, jcr->impl->SDJobStatus);
+ jcr->dir_impl->FDJobStatus.load(), jcr->getJobStatus(),
+ jcr->dir_impl->SDJobStatus.load());
CancelStorageDaemonJob(jcr);
}
@@ -701,25 +708,25 @@ int WaitForJobTermination(JobControlRecord* jcr, int timeout)
jcr->ReadBytes = ReadBytes;
jcr->JobBytes = JobBytes;
jcr->JobWarnings = JobWarnings;
- jcr->impl->VSS = VSS;
- jcr->impl->Encrypt = Encrypt;
+ jcr->dir_impl->VSS = VSS;
+ jcr->dir_impl->Encrypt = Encrypt;
} else {
Jmsg(jcr, M_FATAL, 0, _("No Job status returned from FD.\n"));
}
// Dmsg4(100, "fd_ok=%d FDJS=%d JS=%d SDJS=%d\n", fd_ok,
- // jcr->impl_->FDJobStatus,
- // jcr->JobStatus, jcr->impl_->SDJobStatus);
+ // jcr->dir_impl_->FDJobStatus,
+ // jcr->JobStatus, jcr->dir_impl_->SDJobStatus);
// Return the first error status we find Dir, FD, or SD
if (!fd_ok || IsBnetError(fd)) { /* if fd not set, that use !fd_ok */
- jcr->impl->FDJobStatus = JS_ErrorTerminated;
+ jcr->dir_impl->FDJobStatus = JS_ErrorTerminated;
}
- if (jcr->JobStatus != JS_Terminated) { return jcr->JobStatus; }
- if (jcr->impl->FDJobStatus != JS_Terminated) {
- return jcr->impl->FDJobStatus;
+ if (jcr->getJobStatus() != JS_Terminated) { return jcr->getJobStatus(); }
+ if (jcr->dir_impl->FDJobStatus != JS_Terminated) {
+ return jcr->dir_impl->FDJobStatus;
}
- return jcr->impl->SDJobStatus;
+ return jcr->dir_impl->SDJobStatus;
}
// Release resources allocated during backup.
@@ -733,20 +740,20 @@ void NativeBackupCleanup(JobControlRecord* jcr, int TermCode)
Dmsg2(100, "Enter backup_cleanup %d %c\n", TermCode, TermCode);
if (jcr->is_JobStatus(JS_Terminated)
- && (jcr->JobErrors || jcr->impl->SDErrors || jcr->JobWarnings)) {
+ && (jcr->JobErrors || jcr->dir_impl->SDErrors || jcr->JobWarnings)) {
TermCode = JS_Warnings;
}
UpdateJobEnd(jcr, TermCode);
- if (!jcr->db->GetJobRecord(jcr, &jcr->impl->jr)) {
+ if (!jcr->db->GetJobRecord(jcr, &jcr->dir_impl->jr)) {
Jmsg(jcr, M_WARNING, 0,
_("Error getting Job record for Job report: ERR=%s\n"),
jcr->db->strerror());
- jcr->setJobStatus(JS_ErrorTerminated);
+ jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
}
- bstrncpy(cr.Name, jcr->impl->res.client->resource_name_, sizeof(cr.Name));
+ bstrncpy(cr.Name, jcr->dir_impl->res.client->resource_name_, sizeof(cr.Name));
if (!jcr->db->GetClientRecord(jcr, &cr)) {
Jmsg(jcr, M_WARNING, 0,
_("Error getting Client record for Job report: ERR=%s\n"),
@@ -755,7 +762,7 @@ void NativeBackupCleanup(JobControlRecord* jcr, int TermCode)
UpdateBootstrapFile(jcr);
- switch (jcr->JobStatus) {
+ switch (jcr->getJobStatus()) {
case JS_Terminated:
TermMsg = _("Backup OK");
break;
@@ -771,8 +778,8 @@ void NativeBackupCleanup(JobControlRecord* jcr, int TermCode)
msg_type = M_ERROR; /* Generate error message */
if (jcr->store_bsock) {
jcr->store_bsock->signal(BNET_TERMINATE);
- if (jcr->impl->SD_msg_chan_started) {
- pthread_cancel(jcr->impl->SD_msg_chan);
+ if (jcr->dir_impl->SD_msg_chan_started) {
+ pthread_cancel(jcr->dir_impl->SD_msg_chan);
}
}
break;
@@ -780,14 +787,15 @@ void NativeBackupCleanup(JobControlRecord* jcr, int TermCode)
TermMsg = _("Backup Canceled");
if (jcr->store_bsock) {
jcr->store_bsock->signal(BNET_TERMINATE);
- if (jcr->impl->SD_msg_chan_started) {
- pthread_cancel(jcr->impl->SD_msg_chan);
+ if (jcr->dir_impl->SD_msg_chan_started) {
+ pthread_cancel(jcr->dir_impl->SD_msg_chan);
}
}
break;
default:
TermMsg = term_code;
- sprintf(term_code, _("Inappropriate term code: %c\n"), jcr->JobStatus);
+ sprintf(term_code, _("Inappropriate term code: %c\n"),
+ jcr->getJobStatus());
break;
}
@@ -799,8 +807,8 @@ void NativeBackupCleanup(JobControlRecord* jcr, int TermCode)
void UpdateBootstrapFile(JobControlRecord* jcr)
{
// Now update the bootstrap file if any
- if (jcr->IsTerminatedOk() && jcr->impl->jr.JobBytes
- && jcr->impl->res.job->WriteBootstrap) {
+ if (jcr->IsTerminatedOk() && jcr->dir_impl->jr.JobBytes
+ && jcr->dir_impl->res.job->WriteBootstrap) {
FILE* fd;
int VolCount;
int got_pipe = 0;
@@ -809,7 +817,8 @@ void UpdateBootstrapFile(JobControlRecord* jcr)
char edt[50], ed1[50], ed2[50];
POOLMEM* fname = GetPoolMemory(PM_FNAME);
- fname = edit_job_codes(jcr, fname, jcr->impl->res.job->WriteBootstrap, "");
+ fname = edit_job_codes(jcr, fname, jcr->dir_impl->res.job->WriteBootstrap,
+ "");
if (*fname == '|') {
got_pipe = 1;
bpipe = OpenBpipe(fname + 1, 0, "w"); /* skip first char "|" */
@@ -825,14 +834,14 @@ void UpdateBootstrapFile(JobControlRecord* jcr)
_("Could not get Job Volume Parameters to "
"update Bootstrap file. ERR=%s\n"),
jcr->db->strerror());
- if (jcr->impl->SDJobFiles != 0) {
- jcr->setJobStatus(JS_ErrorTerminated);
+ if (jcr->dir_impl->SDJobFiles != 0) {
+ jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
}
}
/* Start output with when and who wrote it */
bstrftimes(edt, sizeof(edt), time(NULL));
- fprintf(fd, "# %s - %s - %s%s\n", edt, jcr->impl->jr.Job,
- JobLevelToString(jcr->getJobLevel()), jcr->impl->since);
+ fprintf(fd, "# %s - %s - %s%s\n", edt, jcr->dir_impl->jr.Job,
+ JobLevelToString(jcr->getJobLevel()), jcr->dir_impl->since);
for (int i = 0; i < VolCount; i++) {
/* Write the record */
fprintf(fd, "Volume=\"%s\"\n", VolParams[i].VolumeName);
@@ -867,7 +876,7 @@ void UpdateBootstrapFile(JobControlRecord* jcr)
_("Could not open WriteBootstrap file:\n"
"%s: ERR=%s\n"),
fname, be.bstrerror());
- jcr->setJobStatus(JS_ErrorTerminated);
+ jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
}
FreePoolMemory(fname);
}
@@ -900,28 +909,28 @@ void GenerateBackupSummary(JobControlRecord *jcr, ClientDbRecord *cr, int msg_ty
secure_erase_status,
compress_algo_list;
- bstrftimes(schedt, sizeof(schedt), jcr->impl->jr.SchedTime);
- bstrftimes(sdt, sizeof(sdt), jcr->impl->jr.StartTime);
- bstrftimes(edt, sizeof(edt), jcr->impl->jr.EndTime);
- RunTime = jcr->impl->jr.EndTime - jcr->impl->jr.StartTime;
+ bstrftimes(schedt, sizeof(schedt), jcr->dir_impl->jr.SchedTime);
+ bstrftimes(sdt, sizeof(sdt), jcr->dir_impl->jr.StartTime);
+ bstrftimes(edt, sizeof(edt), jcr->dir_impl->jr.EndTime);
+ RunTime = jcr->dir_impl->jr.EndTime - jcr->dir_impl->jr.StartTime;
bstrftimes(gdt, sizeof(gdt),
- jcr->impl->res.client->GraceTime +
- jcr->impl->res.client->SoftQuotaGracePeriod);
+ jcr->dir_impl->res.client->GraceTime +
+ jcr->dir_impl->res.client->SoftQuotaGracePeriod);
if (RunTime <= 0) {
kbps = 0;
} else {
- kbps = ((double)jcr->impl->jr.JobBytes) / (1000.0 * (double)RunTime);
+ kbps = ((double)jcr->dir_impl->jr.JobBytes) / (1000.0 * (double)RunTime);
}
- if (!jcr->db->GetJobVolumeNames(jcr, jcr->impl->jr.JobId, jcr->VolumeName)) {
+ if (!jcr->db->GetJobVolumeNames(jcr, jcr->dir_impl->jr.JobId, jcr->VolumeName)) {
/*
* Note, if the job has erred, most likely it did not write any
* tape, so suppress this "error" message since in that case
* it is normal. Or look at it the other way, only for a
* normal exit should we complain about this error.
*/
- if (jcr->IsTerminatedOk() && jcr->impl->jr.JobBytes) {
+ if (jcr->IsTerminatedOk() && jcr->dir_impl->jr.JobBytes) {
Jmsg(jcr, M_ERROR, 0, "%s", jcr->db->strerror());
}
jcr->VolumeName[0] = 0; /* none */
@@ -954,36 +963,36 @@ void GenerateBackupSummary(JobControlRecord *jcr, ClientDbRecord *cr, int msg_ty
}
}
- JobstatusToAscii(jcr->impl->FDJobStatus, fd_term_msg, sizeof(fd_term_msg));
- JobstatusToAscii(jcr->impl->SDJobStatus, sd_term_msg, sizeof(sd_term_msg));
+ JobstatusToAscii(jcr->dir_impl->FDJobStatus, fd_term_msg, sizeof(fd_term_msg));
+ JobstatusToAscii(jcr->dir_impl->SDJobStatus, sd_term_msg, sizeof(sd_term_msg));
switch (jcr->getJobProtocol()) {
case PT_NDMP_BAREOS:
Mmsg(level_info, _(
" Backup Level: %s%s\n"),
- JobLevelToString(jcr->getJobLevel()), jcr->impl->since);
+ JobLevelToString(jcr->getJobLevel()), jcr->dir_impl->since);
Mmsg(statistics, _(
" NDMP Files Written: %s\n"
" SD Files Written: %s\n"
" NDMP Bytes Written: %s (%sB)\n"
" SD Bytes Written: %s (%sB)\n"),
- edit_uint64_with_commas(jcr->impl->jr.JobFiles, ec1),
- edit_uint64_with_commas(jcr->impl->SDJobFiles, ec2),
- edit_uint64_with_commas(jcr->impl->jr.JobBytes, ec3),
- edit_uint64_with_suffix(jcr->impl->jr.JobBytes, ec4),
- edit_uint64_with_commas(jcr->impl->SDJobBytes, ec5),
- edit_uint64_with_suffix(jcr->impl->SDJobBytes, ec6));
+ edit_uint64_with_commas(jcr->dir_impl->jr.JobFiles, ec1),
+ edit_uint64_with_commas(jcr->dir_impl->SDJobFiles, ec2),
+ edit_uint64_with_commas(jcr->dir_impl->jr.JobBytes, ec3),
+ edit_uint64_with_suffix(jcr->dir_impl->jr.JobBytes, ec4),
+ edit_uint64_with_commas(jcr->dir_impl->SDJobBytes, ec5),
+ edit_uint64_with_suffix(jcr->dir_impl->SDJobBytes, ec6));
break;
case PT_NDMP_NATIVE:
Mmsg(level_info, _(
" Backup Level: %s%s\n"),
- JobLevelToString(jcr->getJobLevel()), jcr->impl->since);
+ JobLevelToString(jcr->getJobLevel()), jcr->dir_impl->since);
Mmsg(statistics, _(
" NDMP Files Written: %s\n"
" NDMP Bytes Written: %s (%sB)\n"),
- edit_uint64_with_commas(jcr->impl->jr.JobFiles, ec1),
- edit_uint64_with_commas(jcr->impl->jr.JobBytes, ec3),
- edit_uint64_with_suffix(jcr->impl->jr.JobBytes, ec4));
+ edit_uint64_with_commas(jcr->dir_impl->jr.JobFiles, ec1),
+ edit_uint64_with_commas(jcr->dir_impl->jr.JobBytes, ec3),
+ edit_uint64_with_suffix(jcr->dir_impl->jr.JobBytes, ec4));
break;
default:
if (jcr->is_JobLevel(L_VIRTUAL_FULL)) {
@@ -992,32 +1001,32 @@ void GenerateBackupSummary(JobControlRecord *jcr, ClientDbRecord *cr, int msg_ty
Mmsg(statistics, _(
" SD Files Written: %s\n"
" SD Bytes Written: %s (%sB)\n"),
- edit_uint64_with_commas(jcr->impl->SDJobFiles, ec2),
- edit_uint64_with_commas(jcr->impl->SDJobBytes, ec5),
- edit_uint64_with_suffix(jcr->impl->SDJobBytes, ec6));
+ edit_uint64_with_commas(jcr->dir_impl->SDJobFiles, ec2),
+ edit_uint64_with_commas(jcr->dir_impl->SDJobBytes, ec5),
+ edit_uint64_with_suffix(jcr->dir_impl->SDJobBytes, ec6));
} else {
Mmsg(level_info, _(
" Backup Level: %s%s\n"),
- JobLevelToString(jcr->getJobLevel()), jcr->impl->since);
+ JobLevelToString(jcr->getJobLevel()), jcr->dir_impl->since);
Mmsg(statistics, _(
" FD Files Written: %s\n"
" SD Files Written: %s\n"
" FD Bytes Written: %s (%sB)\n"
" SD Bytes Written: %s (%sB)\n"),
- edit_uint64_with_commas(jcr->impl->jr.JobFiles, ec1),
- edit_uint64_with_commas(jcr->impl->SDJobFiles, ec2),
- edit_uint64_with_commas(jcr->impl->jr.JobBytes, ec3),
- edit_uint64_with_suffix(jcr->impl->jr.JobBytes, ec4),
- edit_uint64_with_commas(jcr->impl->SDJobBytes, ec5),
- edit_uint64_with_suffix(jcr->impl->SDJobBytes, ec6));
+ edit_uint64_with_commas(jcr->dir_impl->jr.JobFiles, ec1),
+ edit_uint64_with_commas(jcr->dir_impl->SDJobFiles, ec2),
+ edit_uint64_with_commas(jcr->dir_impl->jr.JobBytes, ec3),
+ edit_uint64_with_suffix(jcr->dir_impl->jr.JobBytes, ec4),
+ edit_uint64_with_commas(jcr->dir_impl->SDJobBytes, ec5),
+ edit_uint64_with_suffix(jcr->dir_impl->SDJobBytes, ec6));
}
break;
}
- if (jcr->impl->HasQuota) {
- if (jcr->impl->res.client->GraceTime != 0) {
- bstrftimes(gdt, sizeof(gdt), jcr->impl->res.client->GraceTime +
- jcr->impl->res.client->SoftQuotaGracePeriod);
+ if (jcr->dir_impl->HasQuota) {
+ if (jcr->dir_impl->res.client->GraceTime != 0) {
+ bstrftimes(gdt, sizeof(gdt), jcr->dir_impl->res.client->GraceTime +
+ jcr->dir_impl->res.client->SoftQuotaGracePeriod);
} else {
bstrncpy(gdt, "Soft Quota not exceeded", sizeof(gdt));
}
@@ -1027,14 +1036,14 @@ void GenerateBackupSummary(JobControlRecord *jcr, ClientDbRecord *cr, int msg_ty
" Soft Quota: %s (%sB)\n"
" Hard Quota: %s (%sB)\n"
" Grace Expiry Date: %s\n"),
- edit_uint64_with_commas(jcr->impl->jr.JobSumTotalBytes+jcr->impl->SDJobBytes, ec1),
- edit_uint64_with_suffix(jcr->impl->jr.JobSumTotalBytes+jcr->impl->SDJobBytes, ec2),
- edit_uint64_with_commas(jcr->impl->res.client->QuotaLimit, ec3),
- edit_uint64_with_suffix(jcr->impl->res.client->QuotaLimit, ec4),
- edit_uint64_with_commas(jcr->impl->res.client->SoftQuota, ec5),
- edit_uint64_with_suffix(jcr->impl->res.client->SoftQuota, ec6),
- edit_uint64_with_commas(jcr->impl->res.client->HardQuota, ec7),
- edit_uint64_with_suffix(jcr->impl->res.client->HardQuota, ec8),
+ edit_uint64_with_commas(jcr->dir_impl->jr.JobSumTotalBytes+jcr->dir_impl->SDJobBytes, ec1),
+ edit_uint64_with_suffix(jcr->dir_impl->jr.JobSumTotalBytes+jcr->dir_impl->SDJobBytes, ec2),
+ edit_uint64_with_commas(jcr->dir_impl->res.client->QuotaLimit, ec3),
+ edit_uint64_with_suffix(jcr->dir_impl->res.client->QuotaLimit, ec4),
+ edit_uint64_with_commas(jcr->dir_impl->res.client->SoftQuota, ec5),
+ edit_uint64_with_suffix(jcr->dir_impl->res.client->SoftQuota, ec6),
+ edit_uint64_with_commas(jcr->dir_impl->res.client->HardQuota, ec7),
+ edit_uint64_with_suffix(jcr->dir_impl->res.client->HardQuota, ec8),
gdt);
}
@@ -1048,7 +1057,7 @@ void GenerateBackupSummary(JobControlRecord *jcr, ClientDbRecord *cr, int msg_ty
" SD Errors: %d\n"
" SD termination status: %s\n"
" Accurate: %s\n"),
- jcr->impl->SDErrors,
+ jcr->dir_impl->SDErrors,
sd_term_msg,
jcr->accurate ? _("yes") : _("no"));
} else {
@@ -1064,8 +1073,8 @@ void GenerateBackupSummary(JobControlRecord *jcr, ClientDbRecord *cr, int msg_ty
jcr->nb_base_files,
jcr->nb_base_files_used,
jcr->nb_base_files_used * 100.0 / jcr->nb_base_files,
- jcr->impl->VSS ? _("yes") : _("no"),
- jcr->impl->Encrypt ? _("yes") : _("no"),
+ jcr->dir_impl->VSS ? _("yes") : _("no"),
+ jcr->dir_impl->Encrypt ? _("yes") : _("no"),
jcr->accurate ? _("yes") : _("no"));
} else {
Mmsg(client_options, _(
@@ -1075,8 +1084,8 @@ void GenerateBackupSummary(JobControlRecord *jcr, ClientDbRecord *cr, int msg_ty
" Accurate: %s\n"),
compress,
compress_algo_list.c_str(),
- jcr->impl->VSS ? _("yes") : _("no"),
- jcr->impl->Encrypt ? _("yes") : _("no"),
+ jcr->dir_impl->VSS ? _("yes") : _("no"),
+ jcr->dir_impl->Encrypt ? _("yes") : _("no"),
jcr->accurate ? _("yes") : _("no"));
}
@@ -1086,7 +1095,7 @@ void GenerateBackupSummary(JobControlRecord *jcr, ClientDbRecord *cr, int msg_ty
" FD termination status: %s\n"
" SD termination status: %s\n"),
jcr->JobErrors,
- jcr->impl->SDErrors,
+ jcr->dir_impl->SDErrors,
fd_term_msg,
sd_term_msg);
@@ -1094,12 +1103,12 @@ void GenerateBackupSummary(JobControlRecord *jcr, ClientDbRecord *cr, int msg_ty
Mmsg(temp," Dir Secure Erase Cmd: %s\n", me->secure_erase_cmdline);
PmStrcat(secure_erase_status, temp.c_str());
}
- if (!bstrcmp(jcr->impl->FDSecureEraseCmd, "*None*")) {
- Mmsg(temp, " FD Secure Erase Cmd: %s\n", jcr->impl->FDSecureEraseCmd);
+ if (!bstrcmp(jcr->dir_impl->FDSecureEraseCmd, "*None*")) {
+ Mmsg(temp, " FD Secure Erase Cmd: %s\n", jcr->dir_impl->FDSecureEraseCmd);
PmStrcat(secure_erase_status, temp.c_str());
}
- if (!bstrcmp(jcr->impl->SDSecureEraseCmd, "*None*")) {
- Mmsg(temp, " SD Secure Erase Cmd: %s\n", jcr->impl->SDSecureEraseCmd);
+ if (!bstrcmp(jcr->dir_impl->SDSecureEraseCmd, "*None*")) {
+ Mmsg(temp, " SD Secure Erase Cmd: %s\n", jcr->dir_impl->SDSecureEraseCmd);
PmStrcat(secure_erase_status, temp.c_str());
}
}
@@ -1138,14 +1147,14 @@ void GenerateBackupSummary(JobControlRecord *jcr, ClientDbRecord *cr, int msg_ty
" Termination: %s\n\n"),
BAREOS, my_name, kBareosVersionStrings.Full,
kBareosVersionStrings.ShortDate, kBareosVersionStrings.GetOsInfo(),
- jcr->impl->jr.JobId,
- jcr->impl->jr.Job,
+ jcr->dir_impl->jr.JobId,
+ jcr->dir_impl->jr.Job,
level_info.c_str(),
- jcr->impl->res.client->resource_name_, cr->Uname,
- jcr->impl->res.fileset->resource_name_, jcr->impl->FSCreateTime,
- jcr->impl->res.pool->resource_name_, jcr->impl->res.pool_source,
- jcr->impl->res.catalog->resource_name_, jcr->impl->res.catalog_source,
- jcr->impl->res.write_storage->resource_name_, jcr->impl->res.wstore_source,
+ jcr->dir_impl->res.client->resource_name_, cr->Uname,
+ jcr->dir_impl->res.fileset->resource_name_, jcr->dir_impl->FSCreateTime,
+ jcr->dir_impl->res.pool->resource_name_, jcr->dir_impl->res.pool_source,
+ jcr->dir_impl->res.catalog->resource_name_, jcr->dir_impl->res.catalog_source,
+ jcr->dir_impl->res.write_storage->resource_name_, jcr->dir_impl->res.wstore_source,
schedt,
sdt,
edt,
@@ -1163,7 +1172,7 @@ void GenerateBackupSummary(JobControlRecord *jcr, ClientDbRecord *cr, int msg_ty
daemon_status.c_str(),
secure_erase_status.c_str(),
kBareosVersionStrings.JoblogMessage,
- JobTriggerToString(jcr->impl->job_trigger).c_str(),
+ JobTriggerToString(jcr->dir_impl->job_trigger).c_str(),
TermMsg);
/* clang-format on */