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:
authorPhilipp Storz <philipp.storz@bareos.com>2022-11-09 19:31:13 +0300
committerGitHub <noreply@github.com>2022-11-09 19:31:13 +0300
commit6032bd7c005a461c5dc43d4d01889ca884375703 (patch)
treec096cf63581839d4d20e8ce53b1ba6b97d0114b3
parent95f1be87cebe22d951cf9a551239632ce96e7937 (diff)
parent9fd878ecebbc34baa32618534f9ab98f3b351f35 (diff)
Merge pull request #1307
core: use distinct names for JobControlRecordPrivate
-rw-r--r--CHANGELOG.md1
-rw-r--r--core/src/dird/admin.cc18
-rw-r--r--core/src/dird/archive.cc18
-rw-r--r--core/src/dird/authenticate.cc12
-rw-r--r--core/src/dird/autoprune.cc15
-rw-r--r--core/src/dird/backup.cc266
-rw-r--r--core/src/dird/bsr.cc17
-rw-r--r--core/src/dird/catreq.cc35
-rw-r--r--core/src/dird/consolidate.cc75
-rw-r--r--core/src/dird/dbcopy/database_connection.h10
-rw-r--r--core/src/dird/dbcopy/dbcopy.cc2
-rw-r--r--core/src/dird/dir_plugins.cc61
-rw-r--r--core/src/dird/dird_conf.cc24
-rw-r--r--core/src/dird/director_jcr_impl.h (renamed from core/src/dird/jcr_private.h)18
-rw-r--r--core/src/dird/expand.cc24
-rw-r--r--core/src/dird/fd_cmds.cc165
-rw-r--r--core/src/dird/get_database_connection.cc23
-rw-r--r--core/src/dird/getmsg.cc6
-rw-r--r--core/src/dird/inc_conf.cc6
-rw-r--r--core/src/dird/jcr_util.cc5
-rw-r--r--core/src/dird/jcr_util.h2
-rw-r--r--core/src/dird/job.cc564
-rw-r--r--core/src/dird/jobq.cc239
-rw-r--r--core/src/dird/migrate.cc455
-rw-r--r--core/src/dird/msgchan.cc91
-rw-r--r--core/src/dird/ndmp_dma_backup_NDMP_BAREOS.cc51
-rw-r--r--core/src/dird/ndmp_dma_backup_NDMP_NATIVE.cc54
-rw-r--r--core/src/dird/ndmp_dma_backup_common.cc32
-rw-r--r--core/src/dird/ndmp_dma_generic.cc41
-rw-r--r--core/src/dird/ndmp_dma_restore_NDMP_BAREOS.cc76
-rw-r--r--core/src/dird/ndmp_dma_restore_NDMP_NATIVE.cc22
-rw-r--r--core/src/dird/ndmp_dma_restore_common.cc16
-rw-r--r--core/src/dird/ndmp_dma_storage.cc10
-rw-r--r--core/src/dird/newvol.cc8
-rw-r--r--core/src/dird/next_vol.cc23
-rw-r--r--core/src/dird/quota.cc183
-rw-r--r--core/src/dird/recycle.cc8
-rw-r--r--core/src/dird/restore.cc123
-rw-r--r--core/src/dird/run_on_incoming_connect_interval.cc2
-rw-r--r--core/src/dird/scheduler.cc2
-rw-r--r--core/src/dird/scheduler_private.cc34
-rw-r--r--core/src/dird/sd_cmds.cc68
-rw-r--r--core/src/dird/stats.cc8
-rw-r--r--core/src/dird/storage.cc235
-rw-r--r--core/src/dird/testfind.cc14
-rw-r--r--core/src/dird/ua_cmds.cc46
-rw-r--r--core/src/dird/ua_db.cc6
-rw-r--r--core/src/dird/ua_dotcmds.cc4
-rw-r--r--core/src/dird/ua_label.cc25
-rw-r--r--core/src/dird/ua_output.cc18
-rw-r--r--core/src/dird/ua_purge.cc6
-rw-r--r--core/src/dird/ua_restore.cc4
-rw-r--r--core/src/dird/ua_run.cc472
-rw-r--r--core/src/dird/ua_select.cc18
-rw-r--r--core/src/dird/ua_server.cc8
-rw-r--r--core/src/dird/ua_status.cc38
-rw-r--r--core/src/dird/ua_update.cc4
-rw-r--r--core/src/dird/vbackup.cc137
-rw-r--r--core/src/dird/verify.cc169
-rw-r--r--core/src/filed/accurate.cc62
-rw-r--r--core/src/filed/authenticate.cc4
-rw-r--r--core/src/filed/backup.cc115
-rw-r--r--core/src/filed/compression.cc4
-rw-r--r--core/src/filed/crypto.cc119
-rw-r--r--core/src/filed/dir_cmd.cc258
-rw-r--r--core/src/filed/estimate.cc15
-rw-r--r--core/src/filed/evaluate_job_command.cc6
-rw-r--r--core/src/filed/fd_plugins.cc50
-rw-r--r--core/src/filed/filed.cc2
-rw-r--r--core/src/filed/filed_jcr_impl.h (renamed from core/src/filed/jcr_private.h)10
-rw-r--r--core/src/filed/fileset.cc42
-rw-r--r--core/src/filed/heartbeat.cc76
-rw-r--r--core/src/filed/restore.cc136
-rw-r--r--core/src/filed/sd_cmds.cc6
-rw-r--r--core/src/filed/status.cc43
-rw-r--r--core/src/filed/verify.cc30
-rw-r--r--core/src/filed/verify_vol.cc8
-rw-r--r--core/src/include/jcr.h11
-rw-r--r--core/src/plugins/stored/scsicrypto/scsicrypto-sd.cc6
-rw-r--r--core/src/stored/acquire.cc24
-rw-r--r--core/src/stored/append.cc90
-rw-r--r--core/src/stored/authenticate.cc6
-rw-r--r--core/src/stored/bcopy.cc28
-rw-r--r--core/src/stored/bextract.cc8
-rw-r--r--core/src/stored/bls.cc12
-rw-r--r--core/src/stored/bscan.cc62
-rw-r--r--core/src/stored/bsr.cc28
-rw-r--r--core/src/stored/btape.cc32
-rw-r--r--core/src/stored/butil.cc62
-rw-r--r--core/src/stored/dev.cc32
-rw-r--r--core/src/stored/device.cc22
-rw-r--r--core/src/stored/dir_cmd.cc45
-rw-r--r--core/src/stored/fd_cmds.cc56
-rw-r--r--core/src/stored/job.cc108
-rw-r--r--core/src/stored/label.cc20
-rw-r--r--core/src/stored/mac.cc154
-rw-r--r--core/src/stored/mount.cc10
-rw-r--r--core/src/stored/ndmp_tape.cc55
-rw-r--r--core/src/stored/read.cc10
-rw-r--r--core/src/stored/read_record.cc24
-rw-r--r--core/src/stored/record.cc5
-rw-r--r--core/src/stored/reserve.cc66
-rw-r--r--core/src/stored/sd_cmds.cc14
-rw-r--r--core/src/stored/sd_plugins.cc30
-rw-r--r--core/src/stored/sd_stats.cc7
-rw-r--r--core/src/stored/spool.cc22
-rw-r--r--core/src/stored/status.cc10
-rw-r--r--core/src/stored/stored.cc26
-rw-r--r--core/src/stored/stored_jcr_impl.h (renamed from core/src/stored/jcr_private.h)10
-rw-r--r--core/src/tests/catalog.cc6
-rw-r--r--core/src/tests/dir_fd_connection.cc2
-rw-r--r--core/src/tests/messages_resource.cc2
-rw-r--r--core/src/tests/run_on_incoming_connect_interval.cc4
-rw-r--r--core/src/tests/scheduler.cc6
-rw-r--r--core/src/tests/sd_backend.cc2
-rw-r--r--core/src/tests/sd_reservation.cc4
-rw-r--r--core/src/win32/filed/vss.cc22
117 files changed, 3218 insertions, 3028 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 18ffca8d8..b3bf5ce09 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -147,6 +147,7 @@ and since Bareos version 20 this project adheres to [Semantic Versioning](https:
- lib: make foreach_res() reload-safe [PR #1279]
- Prepare Bareos for an upgrade to the C++20 standard [PR #1271]
- stored: refactor the SD's backend interface [PR #1272]
+- core: use distinct names for JobControlRecordPrivate [PR #1307]
### Deprecated
- make_catalog_backup.pl is now a shell wrapper script which will be removed in version 23.
diff --git a/core/src/dird/admin.cc b/core/src/dird/admin.cc
index d51e60a36..889ab476d 100644
--- a/core/src/dird/admin.cc
+++ b/core/src/dird/admin.cc
@@ -30,7 +30,7 @@
#include "include/bareos.h"
#include "dird.h"
#include "dird/admin.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/storage.h"
@@ -52,9 +52,9 @@ bool DoAdminInit(JobControlRecord* jcr)
*/
bool do_admin(JobControlRecord* jcr)
{
- jcr->impl->jr.JobId = jcr->JobId;
+ jcr->dir_impl->jr.JobId = jcr->JobId;
- jcr->impl->fname = (char*)GetPoolMemory(PM_FNAME);
+ jcr->dir_impl->fname = (char*)GetPoolMemory(PM_FNAME);
Jmsg(jcr, M_INFO, 0, _("Start Admin JobId %d, Job=%s\n"), jcr->JobId,
jcr->Job);
@@ -76,7 +76,7 @@ void AdminCleanup(JobControlRecord* jcr, int TermCode)
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());
@@ -102,9 +102,9 @@ void AdminCleanup(JobControlRecord* jcr, int TermCode)
jcr->getJobStatus());
break;
}
- bstrftimes(schedt, sizeof(schedt), jcr->impl->jr.SchedTime);
- bstrftimes(sdt, sizeof(sdt), jcr->impl->jr.StartTime);
- bstrftimes(edt, sizeof(edt), jcr->impl->jr.EndTime);
+ 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);
Jmsg(jcr, msg_type, 0,
_("BAREOS %s (%s): %s\n"
@@ -117,9 +117,9 @@ void AdminCleanup(JobControlRecord* jcr, int TermCode)
" Job triggered by: %s\n"
" Termination: %s\n\n"),
kBareosVersionStrings.Full, kBareosVersionStrings.ShortDate, edt,
- jcr->impl->jr.JobId, jcr->impl->jr.Job, schedt, sdt, edt,
+ jcr->dir_impl->jr.JobId, jcr->dir_impl->jr.Job, schedt, sdt, edt,
kBareosVersionStrings.JoblogMessage,
- JobTriggerToString(jcr->impl->job_trigger).c_str(), TermMsg);
+ JobTriggerToString(jcr->dir_impl->job_trigger).c_str(), TermMsg);
Dmsg0(debuglevel, "Leave AdminCleanup()\n");
}
diff --git a/core/src/dird/archive.cc b/core/src/dird/archive.cc
index dad5ac6ab..d1f0c8ea7 100644
--- a/core/src/dird/archive.cc
+++ b/core/src/dird/archive.cc
@@ -30,7 +30,7 @@
#include "dird.h"
#include "dird/archive.h"
#include "dird/job.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/storage.h"
namespace directordaemon {
@@ -51,9 +51,9 @@ bool DoArchiveInit(JobControlRecord* jcr)
*/
bool DoArchive(JobControlRecord* jcr)
{
- jcr->impl->jr.JobId = jcr->JobId;
+ jcr->dir_impl->jr.JobId = jcr->JobId;
- jcr->impl->fname = (char*)GetPoolMemory(PM_FNAME);
+ jcr->dir_impl->fname = (char*)GetPoolMemory(PM_FNAME);
Jmsg(jcr, M_INFO, 0, _("Start Archive JobId %d, Job=%s\n"), jcr->JobId,
jcr->Job);
@@ -75,7 +75,7 @@ void ArchiveCleanup(JobControlRecord* jcr, int TermCode)
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());
@@ -102,9 +102,9 @@ void ArchiveCleanup(JobControlRecord* jcr, int TermCode)
break;
}
- bstrftimes(schedt, sizeof(schedt), jcr->impl->jr.SchedTime);
- bstrftimes(sdt, sizeof(sdt), jcr->impl->jr.StartTime);
- bstrftimes(edt, sizeof(edt), jcr->impl->jr.EndTime);
+ 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);
Jmsg(jcr, msg_type, 0,
_("BAREOS %s (%s): %s\n"
@@ -117,9 +117,9 @@ void ArchiveCleanup(JobControlRecord* jcr, int TermCode)
" Job triggered by: %s\n"
" Termination: %s\n\n"),
kBareosVersionStrings.Full, kBareosVersionStrings.ShortDate, edt,
- jcr->impl->jr.JobId, jcr->impl->jr.Job, schedt, sdt, edt,
+ jcr->dir_impl->jr.JobId, jcr->dir_impl->jr.Job, schedt, sdt, edt,
kBareosVersionStrings.JoblogMessage,
- JobTriggerToString(jcr->impl->job_trigger).c_str(), TermMsg);
+ JobTriggerToString(jcr->dir_impl->job_trigger).c_str(), TermMsg);
Dmsg0(debuglevel, "Leave ArchiveCleanup()\n");
}
diff --git a/core/src/dird/authenticate.cc b/core/src/dird/authenticate.cc
index 4cbc2315b..db8584339 100644
--- a/core/src/dird/authenticate.cc
+++ b/core/src/dird/authenticate.cc
@@ -3,7 +3,7 @@
Copyright (C) 2001-2008 Free Software Foundation Europe e.V.
Copyright (C) 2011-2012 Planets Communications B.V.
- Copyright (C) 2013-2020 Bareos GmbH & Co. KG
+ Copyright (C) 2013-2022 Bareos GmbH & Co. KG
This program is Free Software; you can redistribute it and/or
modify it under the terms of version three of the GNU Affero General Public
@@ -37,7 +37,7 @@
#include "dird/fd_cmds.h"
#include "dird/client_connection_handshake_mode.h"
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "lib/bnet.h"
#include "lib/qualified_resource_name_type_converter.h"
#include "lib/bstringlist.h"
@@ -124,9 +124,9 @@ bool AuthenticateWithFileDaemon(JobControlRecord* jcr)
if (jcr->authenticated) { return true; }
BareosSocket* fd = jcr->file_bsock;
- ClientResource* client = jcr->impl->res.client;
+ ClientResource* client = jcr->dir_impl->res.client;
- if (jcr->impl->connection_handshake_try_
+ if (jcr->dir_impl->connection_handshake_try_
== ClientConnectionHandshakeMode::kTlsFirst) {
std::string qualified_resource_name;
if (!my_config->GetQualifiedResourceNameTypeConverter()->ResourceToString(
@@ -186,9 +186,9 @@ bool AuthenticateWithFileDaemon(JobControlRecord* jcr)
}
Dmsg1(110, "<filed: %s", fd->msg);
- jcr->impl->FDVersion = 0;
+ jcr->dir_impl->FDVersion = 0;
if (!bstrncmp(fd->msg, FDOKhello, sizeof(FDOKhello))
- && sscanf(fd->msg, FDOKnewHello, &jcr->impl->FDVersion) != 1) {
+ && sscanf(fd->msg, FDOKnewHello, &jcr->dir_impl->FDVersion) != 1) {
Dmsg0(debuglevel, _("File daemon rejected Hello command\n"));
Jmsg(jcr, M_FATAL, 0,
_("File daemon at \"%s:%d\" rejected Hello command\n"), fd->host(),
diff --git a/core/src/dird/autoprune.cc b/core/src/dird/autoprune.cc
index e63a956bd..6634d103a 100644
--- a/core/src/dird/autoprune.cc
+++ b/core/src/dird/autoprune.cc
@@ -28,7 +28,7 @@
#include "include/bareos.h"
#include "dird.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/next_vol.h"
#include "dird/ua_server.h"
#include "dird/ua_prune.h"
@@ -49,14 +49,14 @@ void DoAutoprune(JobControlRecord* jcr)
PoolResource* pool;
bool pruned;
- if (!jcr->impl->res.client) { /* temp -- remove me */
+ if (!jcr->dir_impl->res.client) { /* temp -- remove me */
return;
}
ua = new_ua_context(jcr);
- job = jcr->impl->res.job;
- client = jcr->impl->res.client;
- pool = jcr->impl->res.pool;
+ job = jcr->dir_impl->res.job;
+ client = jcr->dir_impl->res.client;
+ pool = jcr->dir_impl->res.pool;
if (job->PruneJobs || client->AutoPrune) {
PruneJobs(ua, client, pool);
@@ -92,8 +92,9 @@ void PruneVolumes(JobControlRecord* jcr,
PoolMem query(PM_MESSAGE);
char ed1[50], ed2[100], ed3[50];
- Dmsg1(100, "Prune volumes PoolId=%d\n", jcr->impl->jr.PoolId);
- if (!jcr->impl->res.job->PruneVolumes && !jcr->impl->res.pool->AutoPrune) {
+ Dmsg1(100, "Prune volumes PoolId=%d\n", jcr->dir_impl->jr.PoolId);
+ if (!jcr->dir_impl->res.job->PruneVolumes
+ && !jcr->dir_impl->res.pool->AutoPrune) {
Dmsg0(100, "AutoPrune not set in Pool.\n");
return;
}
diff --git a/core/src/dird/backup.cc b/core/src/dird/backup.cc
index 8ab09913a..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;
@@ -386,9 +390,9 @@ bool DoNativeBackup(JobControlRecord* jcr)
edit_uint64(jcr->JobId, ed1), jcr->Job);
jcr->setJobStatusWithPriorityCheck(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)) {
+ 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;
}
@@ -418,7 +422,8 @@ bool DoNativeBackup(JobControlRecord* jcr)
}
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
@@ -454,11 +459,11 @@ 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;
}
@@ -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());
}
@@ -652,11 +657,11 @@ 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->setJobStatusWithPriorityCheck(jcr->impl->FDJobStatus);
+ 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"),
@@ -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,13 +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.load(), jcr->getJobStatus(),
- jcr->impl->SDJobStatus.load());
+ 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.load(), jcr->getJobStatus(),
- jcr->impl->SDJobStatus.load());
+ jcr->dir_impl->FDJobStatus.load(), jcr->getJobStatus(),
+ jcr->dir_impl->SDJobStatus.load());
CancelStorageDaemonJob(jcr);
}
@@ -703,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->getJobStatus() != JS_Terminated) { return jcr->getJobStatus(); }
- if (jcr->impl->FDJobStatus != JS_Terminated) {
- return jcr->impl->FDJobStatus;
+ 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.
@@ -735,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->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"),
@@ -773,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;
@@ -782,8 +787,8 @@ 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;
@@ -802,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;
@@ -812,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 "|" */
@@ -828,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) {
+ 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);
@@ -903,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 */
@@ -957,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)) {
@@ -995,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));
}
@@ -1030,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);
}
@@ -1051,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 {
@@ -1067,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, _(
@@ -1078,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"));
}
@@ -1089,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);
@@ -1097,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());
}
}
@@ -1141,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,
@@ -1166,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 */
diff --git a/core/src/dird/bsr.cc b/core/src/dird/bsr.cc
index 968f64aac..767041555 100644
--- a/core/src/dird/bsr.cc
+++ b/core/src/dird/bsr.cc
@@ -29,7 +29,7 @@
#include "include/bareos.h"
#include "dird.h"
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/ua_input.h"
#include "dird/ua_restore.h"
#include "dird/ua_server.h"
@@ -247,13 +247,13 @@ static void MakeUniqueRestoreFilename(UaContext* ua, PoolMem& fname)
int i = FindArgWithValue(ua, "bootstrap");
if (i >= 0) {
Mmsg(fname, "%s", ua->argv[i]);
- jcr->impl->unlink_bsr = false;
+ jcr->dir_impl->unlink_bsr = false;
} else {
lock_mutex(mutex);
uniq++;
unlock_mutex(mutex);
Mmsg(fname, "%s/%s.restore.%u.bsr", working_directory, my_name, uniq);
- jcr->impl->unlink_bsr = true;
+ jcr->dir_impl->unlink_bsr = true;
}
if (jcr->RestoreBootstrap) { free(jcr->RestoreBootstrap); }
jcr->RestoreBootstrap = strdup(fname.c_str());
@@ -572,7 +572,7 @@ bool OpenBootstrapFile(JobControlRecord* jcr, bootstrap_info& info)
info.ua = NULL;
if (!jcr->RestoreBootstrap) { return false; }
- bstrncpy(info.storage, jcr->impl->res.read_storage->resource_name_,
+ bstrncpy(info.storage, jcr->dir_impl->res.read_storage->resource_name_,
MAX_NAME_LENGTH);
bs = fopen(jcr->RestoreBootstrap, "rb");
@@ -610,13 +610,13 @@ static inline bool IsOnSameStorage(JobControlRecord* jcr, char* new_one)
StorageResource* new_store;
// With old FD, we send the whole bootstrap to the storage
- if (jcr->impl->FDVersion < FD_VERSION_2) { return true; }
+ if (jcr->dir_impl->FDVersion < FD_VERSION_2) { return true; }
// We are in init loop ? shoudn't fail here
if (!*new_one) { return true; }
// Same name
- if (bstrcmp(new_one, jcr->impl->res.read_storage->resource_name_)) {
+ if (bstrcmp(new_one, jcr->dir_impl->res.read_storage->resource_name_)) {
return true;
}
@@ -631,8 +631,9 @@ static inline bool IsOnSameStorage(JobControlRecord* jcr, char* new_one)
* If Port and Hostname/IP are same, we are talking to the same
* Storage Daemon
*/
- if (jcr->impl->res.read_storage->SDport != new_store->SDport
- || !bstrcmp(jcr->impl->res.read_storage->address, new_store->address)) {
+ if (jcr->dir_impl->res.read_storage->SDport != new_store->SDport
+ || !bstrcmp(jcr->dir_impl->res.read_storage->address,
+ new_store->address)) {
return false;
}
diff --git a/core/src/dird/catreq.cc b/core/src/dird/catreq.cc
index 4650a0dc4..b9dc5f533 100644
--- a/core/src/dird/catreq.cc
+++ b/core/src/dird/catreq.cc
@@ -35,7 +35,7 @@
#include "include/bareos.h"
#include "dird.h"
#include "dird/next_vol.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/sd_cmds.h"
#include "findlib/find.h"
#include "lib/berrno.h"
@@ -88,7 +88,7 @@ static int SendVolumeInfoToStorageDaemon(JobControlRecord* jcr,
int status;
char ed1[50], ed2[50], ed3[50], ed4[50], ed5[50], ed6[50];
- jcr->impl->MediaId = mr->MediaId;
+ jcr->dir_impl->MediaId = mr->MediaId;
PmStrcpy(jcr->VolumeName, mr->VolumeName);
BashSpaces(mr->VolumeName);
status = sd->fsend(
@@ -145,7 +145,7 @@ void CatalogRequest(JobControlRecord* jcr, BareosSocket* bs)
ok = jcr->db->GetPoolRecord(jcr, &pr);
if (ok) {
mr.PoolId = pr.PoolId;
- SetStorageidInMr(jcr->impl->res.write_storage, &mr);
+ SetStorageidInMr(jcr->dir_impl->res.write_storage, &mr);
mr.ScratchPoolId = pr.ScratchPoolId;
ok = FindNextVolumeForAppend(jcr, &mr, index, unwanted_volumes.c_str(),
fnv_create_vol, fnv_prune);
@@ -179,10 +179,10 @@ void CatalogRequest(JobControlRecord* jcr, BareosSocket* bs)
* Pool matches, and it is either Append or Recycle
* and Media Type matches and Pool allows any volume.
*/
- if (mr.PoolId != jcr->impl->jr.PoolId) {
+ if (mr.PoolId != jcr->dir_impl->jr.PoolId) {
reason = _("not in Pool");
} else if (!bstrcmp(mr.MediaType,
- jcr->impl->res.write_storage->media_type)) {
+ jcr->dir_impl->res.write_storage->media_type)) {
reason = _("not correct MediaType");
} else {
/*
@@ -280,11 +280,11 @@ void CatalogRequest(JobControlRecord* jcr, BareosSocket* bs)
* However, do so only if we are writing the tape, i.e.
* the number of VolWrites has increased.
*/
- if (jcr->impl->res.write_storage && sdmr.VolWrites > mr.VolWrites) {
+ if (jcr->dir_impl->res.write_storage && sdmr.VolWrites > mr.VolWrites) {
Dmsg2(050, "Update StorageId old=%d new=%d\n", mr.StorageId,
- jcr->impl->res.write_storage->StorageId);
+ jcr->dir_impl->res.write_storage->StorageId);
// Update StorageId after write
- SetStorageidInMr(jcr->impl->res.write_storage, &mr);
+ SetStorageidInMr(jcr->dir_impl->res.write_storage, &mr);
} else {
// Nothing written, reset same StorageId
SetStorageidInMr(NULL, &mr);
@@ -331,8 +331,8 @@ void CatalogRequest(JobControlRecord* jcr, BareosSocket* bs)
&jm.EndBlock, &Copy, &Stripe, &MediaId)
== 10) {
// Request to create a JobMedia record
- if (jcr->impl->mig_jcr) {
- jm.JobId = jcr->impl->mig_jcr->JobId;
+ if (jcr->dir_impl->mig_jcr) {
+ jm.JobId = jcr->dir_impl->mig_jcr->JobId;
} else {
jm.JobId = jcr->JobId;
}
@@ -465,7 +465,7 @@ static void UpdateAttribute(JobControlRecord* jcr,
Dmsg5(400, "UpdCat VolSessId=%d VolSessT=%d FI=%d Strm=%d reclen=%d\n",
VolSessionId, VolSessionTime, FileIndex, Stream, reclen);
- jcr->impl->SDJobBytes
+ jcr->dir_impl->SDJobBytes
+= reclen; /* update number of bytes transferred for quotas */
switch (Stream) {
@@ -515,8 +515,8 @@ static void UpdateAttribute(JobControlRecord* jcr,
}
ar->Stream = Stream;
ar->link = NULL;
- if (jcr->impl->mig_jcr) {
- ar->JobId = jcr->impl->mig_jcr->JobId;
+ if (jcr->dir_impl->mig_jcr) {
+ ar->JobId = jcr->dir_impl->mig_jcr->JobId;
} else {
ar->JobId = jcr->JobId;
}
@@ -542,8 +542,8 @@ static void UpdateAttribute(JobControlRecord* jcr,
ro.Stream = Stream;
ro.FileIndex = FileIndex;
- if (jcr->impl->mig_jcr) {
- ro.JobId = jcr->impl->mig_jcr->JobId;
+ if (jcr->dir_impl->mig_jcr) {
+ ro.JobId = jcr->dir_impl->mig_jcr->JobId;
} else {
ro.JobId = jcr->JobId;
}
@@ -659,7 +659,7 @@ static void UpdateAttribute(JobControlRecord* jcr,
// Update File Attributes in the catalog with data sent by the Storage daemon.
void CatalogUpdate(JobControlRecord* jcr, BareosSocket* bs)
{
- if (!jcr->impl->res.pool->catalog_files) {
+ if (!jcr->dir_impl->res.pool->catalog_files) {
return; /* user disabled cataloging */
}
@@ -696,7 +696,8 @@ bool DespoolAttributesFromFile(JobControlRecord* jcr, const char* file)
Dmsg0(100, "Begin DespoolAttributesFromFile\n");
- if (jcr->IsJobCanceled() || !jcr->impl->res.pool->catalog_files || !jcr->db) {
+ if (jcr->IsJobCanceled() || !jcr->dir_impl->res.pool->catalog_files
+ || !jcr->db) {
goto bail_out; /* user disabled cataloging */
}
diff --git a/core/src/dird/consolidate.cc b/core/src/dird/consolidate.cc
index 4fdedbb23..f4c5b46e6 100644
--- a/core/src/dird/consolidate.cc
+++ b/core/src/dird/consolidate.cc
@@ -31,7 +31,7 @@
#include "include/bareos.h"
#include "dird.h"
#include "dird/consolidate.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/storage.h"
#include "dird/ua_input.h"
@@ -54,7 +54,7 @@ bool DoConsolidateInit(JobControlRecord* jcr)
/**
* Start a Virtual(Full) Job that creates a new virtual backup
- * containing the jobids given in jcr->impl_->vf_jobids
+ * containing the jobids given in jcr->dir_impl_->vf_jobids
*/
static inline void StartNewConsolidationJob(JobControlRecord* jcr,
char* jobname)
@@ -66,7 +66,8 @@ static inline void StartNewConsolidationJob(JobControlRecord* jcr,
ua = new_ua_context(jcr);
ua->batch = true;
Mmsg(ua->cmd, "run job=\"%s\" jobid=%s level=VirtualFull %s", jobname,
- jcr->impl->vf_jobids, jcr->accurate ? "accurate=yes" : "accurate=no");
+ jcr->dir_impl->vf_jobids,
+ jcr->accurate ? "accurate=yes" : "accurate=no");
Dmsg1(debuglevel, "=============== consolidate cmd=%s\n", ua->cmd);
ParseUaArgs(ua); /* parse command */
@@ -100,16 +101,16 @@ bool DoConsolidate(JobControlRecord* jcr)
int32_t fullconsolidations_started = 0;
int32_t max_full_consolidations = 0;
- tmpjob = jcr->impl->res.job; /* Memorize job */
+ tmpjob = jcr->dir_impl->res.job; /* Memorize job */
// Get Value for MaxFullConsolidations from Consolidation job
- max_full_consolidations = jcr->impl->res.job->MaxFullConsolidations;
+ max_full_consolidations = jcr->dir_impl->res.job->MaxFullConsolidations;
- jcr->impl->jr.JobId = jcr->JobId;
- jcr->impl->fname = (char*)GetPoolMemory(PM_FNAME);
+ jcr->dir_impl->jr.JobId = jcr->JobId;
+ jcr->dir_impl->fname = (char*)GetPoolMemory(PM_FNAME);
// do not cancel virtual fulls started by consolidation
- jcr->impl->IgnoreDuplicateJobChecking = true;
+ jcr->dir_impl->IgnoreDuplicateJobChecking = true;
// Print Job Start message
Jmsg(jcr, M_INFO, 0, _("Start Consolidate JobId %d, Job=%s\n"), jcr->JobId,
@@ -123,12 +124,12 @@ bool DoConsolidate(JobControlRecord* jcr)
job->resource_name_);
// Fake always incremental job as job of current jcr.
- jcr->impl->res.job = job;
- jcr->impl->res.fileset = job->fileset;
- jcr->impl->res.client = job->client;
- jcr->impl->jr.JobLevel = L_INCREMENTAL;
- jcr->impl->jr.limit = 0;
- jcr->impl->jr.StartTime = 0;
+ jcr->dir_impl->res.job = job;
+ jcr->dir_impl->res.fileset = job->fileset;
+ jcr->dir_impl->res.client = job->client;
+ jcr->dir_impl->jr.JobLevel = L_INCREMENTAL;
+ jcr->dir_impl->jr.limit = 0;
+ jcr->dir_impl->jr.StartTime = 0;
if (!GetOrCreateFilesetRecord(jcr)) {
Jmsg(jcr, M_FATAL, 0, _("JobId=%d no FileSet\n"), (int)jcr->JobId);
@@ -144,7 +145,7 @@ bool DoConsolidate(JobControlRecord* jcr)
// First determine the number of total incrementals
db_list_ctx all_jobids_ctx;
- jcr->db->AccurateGetJobids(jcr, &jcr->impl->jr, &all_jobids_ctx);
+ jcr->db->AccurateGetJobids(jcr, &jcr->dir_impl->jr, &all_jobids_ctx);
Dmsg1(10, "unlimited jobids list: %s.\n",
all_jobids_ctx.GetAsString().c_str());
@@ -156,20 +157,20 @@ bool DoConsolidate(JobControlRecord* jcr)
if (job->AlwaysIncrementalJobRetention) {
char sdt[50];
- jcr->impl->jr.StartTime = now - job->AlwaysIncrementalJobRetention;
- bstrftimes(sdt, sizeof(sdt), jcr->impl->jr.StartTime);
+ jcr->dir_impl->jr.StartTime = now - job->AlwaysIncrementalJobRetention;
+ bstrftimes(sdt, sizeof(sdt), jcr->dir_impl->jr.StartTime);
Jmsg(jcr, M_INFO, 0,
_("%s: considering jobs older than %s for consolidation.\n"),
job->resource_name_, sdt);
Dmsg4(10,
_("%s: considering jobs with ClientId %d and FilesetId %d older "
"than %s for consolidation.\n"),
- job->resource_name_, jcr->impl->jr.ClientId,
- jcr->impl->jr.FileSetId, sdt);
+ job->resource_name_, jcr->dir_impl->jr.ClientId,
+ jcr->dir_impl->jr.FileSetId, sdt);
}
db_list_ctx jobids_ctx;
- jcr->db->AccurateGetJobids(jcr, &jcr->impl->jr, &jobids_ctx);
+ jcr->db->AccurateGetJobids(jcr, &jcr->dir_impl->jr, &jobids_ctx);
Dmsg1(10, "consolidate candidates: %s.\n",
jobids_ctx.GetAsString().c_str());
@@ -212,12 +213,12 @@ bool DoConsolidate(JobControlRecord* jcr)
const int32_t max_incrementals_to_consolidate
= incrementals_total - job->AlwaysIncrementalKeepNumber;
- jcr->impl->jr.limit = max_incrementals_to_consolidate + 1;
+ jcr->dir_impl->jr.limit = max_incrementals_to_consolidate + 1;
Dmsg3(10, "total: %d, to_consolidate: %d, limit: %d.\n",
incrementals_total, max_incrementals_to_consolidate,
- jcr->impl->jr.limit);
+ jcr->dir_impl->jr.limit);
jobids_ctx.clear();
- jcr->db->AccurateGetJobids(jcr, &jcr->impl->jr, &jobids_ctx);
+ jcr->db->AccurateGetJobids(jcr, &jcr->dir_impl->jr, &jobids_ctx);
const int32_t incrementals_to_consolidate = jobids_ctx.size() - 1;
Dmsg2(10, "%d consolidate ids after limit: %s.\n", jobids_ctx.size(),
jobids_ctx.GetAsString().c_str());
@@ -256,18 +257,18 @@ bool DoConsolidate(JobControlRecord* jcr)
if (p) { *p = '\0'; }
// Get db record of oldest jobid and check its age
- jcr->impl->previous_jr = JobDbRecord{};
- jcr->impl->previous_jr.JobId = str_to_int64(jobids);
+ jcr->dir_impl->previous_jr = JobDbRecord{};
+ jcr->dir_impl->previous_jr.JobId = str_to_int64(jobids);
Dmsg1(10, "Previous JobId=%s\n", jobids);
- if (!jcr->db->GetJobRecord(jcr, &jcr->impl->previous_jr)) {
+ if (!jcr->db->GetJobRecord(jcr, &jcr->dir_impl->previous_jr)) {
Jmsg(jcr, M_FATAL, 0,
_("Error getting Job record for first Job: ERR=%s\n"),
jcr->db->strerror());
goto bail_out;
}
- starttime = jcr->impl->previous_jr.JobTDate;
+ starttime = jcr->dir_impl->previous_jr.JobTDate;
oldest_allowed_starttime = now - job->AlwaysIncrementalMaxFullAge;
bstrftimes(sdt_allowed, sizeof(sdt_allowed), oldest_allowed_starttime);
bstrftimes(sdt_starttime, sizeof(sdt_starttime), starttime);
@@ -305,10 +306,10 @@ bool DoConsolidate(JobControlRecord* jcr)
}
// Set the virtualfull jobids to be consolidated
- if (!jcr->impl->vf_jobids) {
- jcr->impl->vf_jobids = GetPoolMemory(PM_MESSAGE);
+ if (!jcr->dir_impl->vf_jobids) {
+ jcr->dir_impl->vf_jobids = GetPoolMemory(PM_MESSAGE);
}
- PmStrcpy(jcr->impl->vf_jobids, p);
+ PmStrcpy(jcr->dir_impl->vf_jobids, p);
Jmsg(jcr, M_INFO, 0, _("%s: Start new consolidation\n"),
job->resource_name_);
@@ -318,7 +319,7 @@ bool DoConsolidate(JobControlRecord* jcr)
bail_out:
// Restore original job back to jcr.
- jcr->impl->res.job = tmpjob;
+ jcr->dir_impl->res.job = tmpjob;
jcr->setJobStatusWithPriorityCheck(JS_Terminated);
ConsolidateCleanup(jcr, JS_Terminated);
@@ -339,7 +340,7 @@ void ConsolidateCleanup(JobControlRecord* jcr, int TermCode)
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());
@@ -365,9 +366,9 @@ void ConsolidateCleanup(JobControlRecord* jcr, int TermCode)
jcr->getJobStatus());
break;
}
- bstrftimes(schedt, sizeof(schedt), jcr->impl->jr.SchedTime);
- bstrftimes(sdt, sizeof(sdt), jcr->impl->jr.StartTime);
- bstrftimes(edt, sizeof(edt), jcr->impl->jr.EndTime);
+ 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);
Jmsg(jcr, msg_type, 0,
_("BAREOS %s (%s): %s\n"
@@ -380,9 +381,9 @@ void ConsolidateCleanup(JobControlRecord* jcr, int TermCode)
" Job triggered by: %s\n"
" Termination: %s\n\n"),
kBareosVersionStrings.Full, kBareosVersionStrings.ShortDate, edt,
- jcr->impl->jr.JobId, jcr->impl->jr.Job, schedt, sdt, edt,
+ jcr->dir_impl->jr.JobId, jcr->dir_impl->jr.Job, schedt, sdt, edt,
kBareosVersionStrings.JoblogMessage,
- JobTriggerToString(jcr->impl->job_trigger).c_str(), TermMsg);
+ JobTriggerToString(jcr->dir_impl->job_trigger).c_str(), TermMsg);
Dmsg0(debuglevel, "Leave ConsolidateCleanup()\n");
}
diff --git a/core/src/dird/dbcopy/database_connection.h b/core/src/dird/dbcopy/database_connection.h
index 3d758ae80..10ffff845 100644
--- a/core/src/dird/dbcopy/database_connection.h
+++ b/core/src/dird/dbcopy/database_connection.h
@@ -1,7 +1,7 @@
/*
BAREOSĀ® - Backup Archiving REcovery Open Sourced
- Copyright (C) 2020-2021 Bareos GmbH & Co. KG
+ Copyright (C) 2020-2022 Bareos GmbH & Co. KG
This program is Free Software; you can redistribute it and/or
modify it under the terms of version three of the GNU Affero General Public
@@ -25,7 +25,7 @@
#include "include/bareos.h"
#include "dird/dird_globals.h"
#include "dird/job.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/dird_conf.h"
#include "dird/get_database_connection.h"
#include "dird/dbcopy/database_type.h"
@@ -47,11 +47,11 @@ class DatabaseConnection {
{
jcr_.reset(directordaemon::NewDirectorJcr());
- jcr_->impl->res.catalog
+ jcr_->dir_impl->res.catalog
= static_cast<directordaemon::CatalogResource*>(config->GetResWithName(
directordaemon::R_CATALOG, catalog_resource_name.c_str()));
- if (jcr_->impl->res.catalog == nullptr) {
+ if (jcr_->dir_impl->res.catalog == nullptr) {
std::string err{"Could not find catalog resource "};
err += catalog_resource_name;
err += ".";
@@ -67,7 +67,7 @@ class DatabaseConnection {
throw std::runtime_error(err);
}
- db_type = DatabaseType::Convert(jcr_->impl->res.catalog->db_driver);
+ db_type = DatabaseType::Convert(jcr_->dir_impl->res.catalog->db_driver);
}
private:
diff --git a/core/src/dird/dbcopy/dbcopy.cc b/core/src/dird/dbcopy/dbcopy.cc
index 7a96bf82c..7f2ce6dee 100644
--- a/core/src/dird/dbcopy/dbcopy.cc
+++ b/core/src/dird/dbcopy/dbcopy.cc
@@ -30,7 +30,7 @@
#include "dird/dird_conf.h"
#include "dird/dird_globals.h"
#include "dird/get_database_connection.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "lib/parse_conf.h"
#include "lib/util.h"
diff --git a/core/src/dird/dir_plugins.cc b/core/src/dird/dir_plugins.cc
index 183938919..c9a05c98e 100644
--- a/core/src/dird/dir_plugins.cc
+++ b/core/src/dird/dir_plugins.cc
@@ -27,7 +27,7 @@
#include "include/bareos.h"
#include "dird.h"
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dir_plugins.h"
#include "lib/edit.h"
@@ -387,7 +387,7 @@ static inline PluginContext* instantiate_plugin(JobControlRecord* jcr,
/**
* Send a bDirEventNewPluginOptions event to all plugins configured in
- * jcr->impl_->res.Job.DirPluginOptions
+ * jcr->dir_impl_->res.Job.DirPluginOptions
*/
void DispatchNewPluginOptions(JobControlRecord* jcr)
{
@@ -403,13 +403,13 @@ void DispatchNewPluginOptions(JobControlRecord* jcr)
if (!dird_plugin_list || dird_plugin_list->empty()) { return; }
- if (jcr->impl->res.job && jcr->impl->res.job->DirPluginOptions
- && jcr->impl->res.job->DirPluginOptions->size()) {
+ if (jcr->dir_impl->res.job && jcr->dir_impl->res.job->DirPluginOptions
+ && jcr->dir_impl->res.job->DirPluginOptions->size()) {
eventType = bDirEventNewPluginOptions;
event.eventType = eventType;
foreach_alist_index (i, plugin_options,
- jcr->impl->res.job->DirPluginOptions) {
+ jcr->dir_impl->res.job->DirPluginOptions) {
// Make a private copy of plugin options.
PmStrcpy(priv_plugin_options, plugin_options);
@@ -559,7 +559,7 @@ static bRC bareosGetValue(PluginContext* ctx, brDirVariable var, void* value)
NPRT(*((char**)value)));
break;
case bDirVarJob:
- *((char**)value) = jcr->impl->res.job->resource_name_;
+ *((char**)value) = jcr->dir_impl->res.job->resource_name_;
Dmsg1(debuglevel, "dir-plugin: return bDirVarJob=%s\n",
NPRT(*((char**)value)));
break;
@@ -574,29 +574,30 @@ static bRC bareosGetValue(PluginContext* ctx, brDirVariable var, void* value)
jcr->getJobType());
break;
case bDirVarClient:
- *((char**)value) = jcr->impl->res.client->resource_name_;
+ *((char**)value) = jcr->dir_impl->res.client->resource_name_;
Dmsg1(debuglevel, "dir-plugin: return bDirVarClient=%s\n",
NPRT(*((char**)value)));
break;
case bDirVarNumVols: {
PoolDbRecord pr;
- bstrncpy(pr.Name, jcr->impl->res.pool->resource_name_, sizeof(pr.Name));
+ bstrncpy(pr.Name, jcr->dir_impl->res.pool->resource_name_,
+ sizeof(pr.Name));
if (!jcr->db->GetPoolRecord(jcr, &pr)) { retval = bRC_Error; }
*((int*)value) = pr.NumVols;
Dmsg1(debuglevel, "dir-plugin: return bDirVarNumVols=%d\n", pr.NumVols);
break;
}
case bDirVarPool:
- *((char**)value) = jcr->impl->res.pool->resource_name_;
+ *((char**)value) = jcr->dir_impl->res.pool->resource_name_;
Dmsg1(debuglevel, "dir-plugin: return bDirVarPool=%s\n",
NPRT(*((char**)value)));
break;
case bDirVarStorage:
- if (jcr->impl->res.write_storage) {
- *((char**)value) = jcr->impl->res.write_storage->resource_name_;
- } else if (jcr->impl->res.read_storage) {
- *((char**)value) = jcr->impl->res.read_storage->resource_name_;
+ if (jcr->dir_impl->res.write_storage) {
+ *((char**)value) = jcr->dir_impl->res.write_storage->resource_name_;
+ } else if (jcr->dir_impl->res.read_storage) {
+ *((char**)value) = jcr->dir_impl->res.read_storage->resource_name_;
} else {
*((char**)value) = NULL;
retval = bRC_Error;
@@ -605,8 +606,8 @@ static bRC bareosGetValue(PluginContext* ctx, brDirVariable var, void* value)
NPRT(*((char**)value)));
break;
case bDirVarWriteStorage:
- if (jcr->impl->res.write_storage) {
- *((char**)value) = jcr->impl->res.write_storage->resource_name_;
+ if (jcr->dir_impl->res.write_storage) {
+ *((char**)value) = jcr->dir_impl->res.write_storage->resource_name_;
} else {
*((char**)value) = NULL;
retval = bRC_Error;
@@ -615,8 +616,8 @@ static bRC bareosGetValue(PluginContext* ctx, brDirVariable var, void* value)
NPRT(*((char**)value)));
break;
case bDirVarReadStorage:
- if (jcr->impl->res.read_storage) {
- *((char**)value) = jcr->impl->res.read_storage->resource_name_;
+ if (jcr->dir_impl->res.read_storage) {
+ *((char**)value) = jcr->dir_impl->res.read_storage->resource_name_;
} else {
*((char**)value) = NULL;
retval = bRC_Error;
@@ -625,15 +626,15 @@ static bRC bareosGetValue(PluginContext* ctx, brDirVariable var, void* value)
NPRT(*((char**)value)));
break;
case bDirVarCatalog:
- *((char**)value) = jcr->impl->res.catalog->resource_name_;
+ *((char**)value) = jcr->dir_impl->res.catalog->resource_name_;
Dmsg1(debuglevel, "dir-plugin: return bDirVarCatalog=%s\n",
NPRT(*((char**)value)));
break;
case bDirVarMediaType:
- if (jcr->impl->res.write_storage) {
- *((char**)value) = jcr->impl->res.write_storage->media_type;
- } else if (jcr->impl->res.read_storage) {
- *((char**)value) = jcr->impl->res.read_storage->media_type;
+ if (jcr->dir_impl->res.write_storage) {
+ *((char**)value) = jcr->dir_impl->res.write_storage->media_type;
+ } else if (jcr->dir_impl->res.read_storage) {
+ *((char**)value) = jcr->dir_impl->res.read_storage->media_type;
} else {
*((char**)value) = NULL;
retval = bRC_Error;
@@ -670,24 +671,24 @@ static bRC bareosGetValue(PluginContext* ctx, brDirVariable var, void* value)
jcr->JobFiles);
break;
case bDirVarSDJobFiles:
- *((int*)value) = jcr->impl->SDJobFiles;
+ *((int*)value) = jcr->dir_impl->SDJobFiles;
Dmsg1(debuglevel, "dir-plugin: return bDirVarSDFiles=%d\n",
- jcr->impl->SDJobFiles);
+ jcr->dir_impl->SDJobFiles);
break;
case bDirVarSDErrors:
- *((int*)value) = jcr->impl->SDErrors;
+ *((int*)value) = jcr->dir_impl->SDErrors;
Dmsg1(debuglevel, "dir-plugin: return bDirVarSDErrors=%d\n",
- jcr->impl->SDErrors);
+ jcr->dir_impl->SDErrors);
break;
case bDirVarFDJobStatus:
- *((int*)value) = jcr->impl->FDJobStatus;
+ *((int*)value) = jcr->dir_impl->FDJobStatus;
Dmsg1(debuglevel, "dir-plugin: return bDirVarFDJobStatus=%c\n",
- jcr->impl->FDJobStatus.load());
+ jcr->dir_impl->FDJobStatus.load());
break;
case bDirVarSDJobStatus:
- *((int*)value) = jcr->impl->SDJobStatus;
+ *((int*)value) = jcr->dir_impl->SDJobStatus;
Dmsg1(debuglevel, "dir-plugin: return bDirVarSDJobStatus=%c\n",
- jcr->impl->SDJobStatus.load());
+ jcr->dir_impl->SDJobStatus.load());
break;
case bDirVarLastRate:
*((int*)value) = jcr->LastRate;
diff --git a/core/src/dird/dird_conf.cc b/core/src/dird/dird_conf.cc
index fb206c5ec..9f7192098 100644
--- a/core/src/dird/dird_conf.cc
+++ b/core/src/dird/dird_conf.cc
@@ -49,7 +49,7 @@
#include "dird.h"
#include "dird/inc_conf.h"
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "include/auth_protocol_types.h"
#include "include/auth_types.h"
#include "include/migration_selection_types.h"
@@ -3139,25 +3139,29 @@ extern "C" char* job_code_callback_director(JobControlRecord* jcr,
switch (param[0]) {
case 'f':
- if (jcr->impl->res.fileset) {
- return jcr->impl->res.fileset->resource_name_;
+ if (jcr->dir_impl->res.fileset) {
+ return jcr->dir_impl->res.fileset->resource_name_;
}
break;
case 'h':
- if (jcr->impl->res.client) { return jcr->impl->res.client->address; }
+ if (jcr->dir_impl->res.client) {
+ return jcr->dir_impl->res.client->address;
+ }
break;
case 'p':
- if (jcr->impl->res.pool) { return jcr->impl->res.pool->resource_name_; }
+ if (jcr->dir_impl->res.pool) {
+ return jcr->dir_impl->res.pool->resource_name_;
+ }
break;
case 'w':
- if (jcr->impl->res.write_storage) {
- return jcr->impl->res.write_storage->resource_name_;
+ if (jcr->dir_impl->res.write_storage) {
+ return jcr->dir_impl->res.write_storage->resource_name_;
}
break;
case 'x':
- return jcr->impl->spool_data ? yes : no;
+ return jcr->dir_impl->spool_data ? yes : no;
case 'C':
- return jcr->impl->cloned ? yes : no;
+ return jcr->dir_impl->cloned ? yes : no;
case 'D':
return my_name;
case 'V':
@@ -3166,7 +3170,7 @@ extern "C" char* job_code_callback_director(JobControlRecord* jcr,
* If this is a migration/copy we need the volume name from the
* mig_jcr.
*/
- if (jcr->impl->mig_jcr) { jcr = jcr->impl->mig_jcr; }
+ if (jcr->dir_impl->mig_jcr) { jcr = jcr->dir_impl->mig_jcr; }
if (jcr->VolumeName) {
return jcr->VolumeName;
diff --git a/core/src/dird/jcr_private.h b/core/src/dird/director_jcr_impl.h
index 00f22b50b..d3f7fe5e5 100644
--- a/core/src/dird/jcr_private.h
+++ b/core/src/dird/director_jcr_impl.h
@@ -21,8 +21,8 @@
02110-1301, USA.
*/
-#ifndef BAREOS_DIRD_JCR_PRIVATE_H_
-#define BAREOS_DIRD_JCR_PRIVATE_H_
+#ifndef BAREOS_DIRD_DIRECTOR_JCR_IMPL_H_
+#define BAREOS_DIRD_DIRECTOR_JCR_IMPL_H_
#include "cats/cats.h"
#include "dird/client_connection_handshake_mode.h"
@@ -55,10 +55,10 @@ struct BootStrapRecord;
|| jcr->getJobStatus() == JS_WaitClientRes \
|| jcr->getJobStatus() == JS_WaitMaxJobs \
|| jcr->getJobStatus() == JS_WaitPriority \
- || jcr->impl->SDJobStatus == JS_WaitMedia \
- || jcr->impl->SDJobStatus == JS_WaitMount \
- || jcr->impl->SDJobStatus == JS_WaitDevice \
- || jcr->impl->SDJobStatus == JS_WaitMaxJobs))
+ || jcr->dir_impl->SDJobStatus == JS_WaitMedia \
+ || jcr->dir_impl->SDJobStatus == JS_WaitMount \
+ || jcr->dir_impl->SDJobStatus == JS_WaitDevice \
+ || jcr->dir_impl->SDJobStatus == JS_WaitMaxJobs))
/* clang-format off */
struct Resources {
@@ -96,8 +96,8 @@ struct Resources {
bool run_next_pool_override{}; /**< Next pool override was given on run cmdline */
};
-struct JobControlRecordPrivate {
- JobControlRecordPrivate( std::shared_ptr<ConfigResourcesContainer> configuration_resources_container) : job_config_resources_container_(configuration_resources_container) {
+struct DirectorJcrImpl {
+ DirectorJcrImpl( std::shared_ptr<ConfigResourcesContainer> configuration_resources_container) : job_config_resources_container_(configuration_resources_container) {
RestoreJobId = 0; MigrateJobId = 0; VerifyJobId = 0;
}
std::shared_ptr<ConfigResourcesContainer> job_config_resources_container_;
@@ -169,4 +169,4 @@ struct JobControlRecordPrivate {
};
/* clang-format on */
-#endif // BAREOS_DIRD_JCR_PRIVATE_H_
+#endif // BAREOS_DIRD_DIRECTOR_JCR_IMPL_H_
diff --git a/core/src/dird/expand.cc b/core/src/dird/expand.cc
index a89f3f520..5a4cdea00 100644
--- a/core/src/dird/expand.cc
+++ b/core/src/dird/expand.cc
@@ -30,7 +30,7 @@
#include "include/bareos.h"
#include "dird.h"
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "lib/parse_conf.h"
#include "lib/util.h"
#include "lib/output_formatter.h"
@@ -92,7 +92,7 @@ static int job_item(JobControlRecord* jcr,
switch (code) {
case 1: /* Job */
- str = jcr->impl->res.job->resource_name_;
+ str = jcr->dir_impl->res.job->resource_name_;
break;
case 2: /* Director's name */
str = my_name;
@@ -108,31 +108,31 @@ static int job_item(JobControlRecord* jcr,
str = buf;
break;
case 6: /* Client */
- str = jcr->impl->res.client->resource_name_;
+ str = jcr->dir_impl->res.client->resource_name_;
if (!str) { str = " "; }
break;
case 7: /* NumVols */
- Bsnprintf(buf, sizeof(buf), "%d", jcr->impl->NumVols);
+ Bsnprintf(buf, sizeof(buf), "%d", jcr->dir_impl->NumVols);
str = buf;
break;
case 8: /* Pool */
- str = jcr->impl->res.pool->resource_name_;
+ str = jcr->dir_impl->res.pool->resource_name_;
break;
case 9: /* Storage */
- if (jcr->impl->res.write_storage) {
- str = jcr->impl->res.write_storage->resource_name_;
+ if (jcr->dir_impl->res.write_storage) {
+ str = jcr->dir_impl->res.write_storage->resource_name_;
} else {
- str = jcr->impl->res.read_storage->resource_name_;
+ str = jcr->dir_impl->res.read_storage->resource_name_;
}
break;
case 10: /* Catalog */
- str = jcr->impl->res.catalog->resource_name_;
+ str = jcr->dir_impl->res.catalog->resource_name_;
break;
case 11: /* MediaType */
- if (jcr->impl->res.write_storage) {
- str = jcr->impl->res.write_storage->media_type;
+ if (jcr->dir_impl->res.write_storage) {
+ str = jcr->dir_impl->res.write_storage->media_type;
} else {
- str = jcr->impl->res.read_storage->media_type;
+ str = jcr->dir_impl->res.read_storage->media_type;
}
break;
case 12: /* JobName */
diff --git a/core/src/dird/fd_cmds.cc b/core/src/dird/fd_cmds.cc
index 422d3effa..1fc1c9ee4 100644
--- a/core/src/dird/fd_cmds.cc
+++ b/core/src/dird/fd_cmds.cc
@@ -35,12 +35,12 @@
#include "cats/cats.h"
#include "dird.h"
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "findlib/find.h"
#include "dird/authenticate.h"
#include "dird/fd_cmds.h"
#include "dird/getmsg.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/msgchan.h"
#include "dird/run_on_incoming_connect_interval.h"
#include "dird/scheduler.h"
@@ -128,21 +128,21 @@ static bool connect_outbound_to_file_daemon(JobControlRecord* jcr,
if (!IsConnectingToClientAllowed(jcr)) {
Dmsg1(120, "Connection to client \"%s\" is not allowed.\n",
- jcr->impl->res.client->resource_name_);
+ jcr->dir_impl->res.client->resource_name_);
return false;
}
fd = new BareosSocketTCP;
- heart_beat = get_heartbeat_interval(jcr->impl->res.client);
+ heart_beat = get_heartbeat_interval(jcr->dir_impl->res.client);
char name[MAX_NAME_LENGTH + 100];
bstrncpy(name, _("Client: "), sizeof(name));
- bstrncat(name, jcr->impl->res.client->resource_name_, sizeof(name));
+ bstrncat(name, jcr->dir_impl->res.client->resource_name_, sizeof(name));
fd->SetSourceAddress(me->DIRsrc_addr);
if (!fd->connect(jcr, retry_interval, max_retry_time, heart_beat, name,
- jcr->impl->res.client->address, NULL,
- jcr->impl->res.client->FDport, verbose)) {
+ jcr->dir_impl->res.client->address, NULL,
+ jcr->dir_impl->res.client->FDport, verbose)) {
delete fd;
fd = NULL;
jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
@@ -160,9 +160,9 @@ static void OutputMessageForConnectionTry(JobControlRecord* jcr, UaContext* ua)
{
std::string m;
- if (jcr->impl->res.client->connection_successful_handshake_
+ if (jcr->dir_impl->res.client->connection_successful_handshake_
== ClientConnectionHandshakeMode::kUndefined
- || jcr->impl->res.client->connection_successful_handshake_
+ || jcr->dir_impl->res.client->connection_successful_handshake_
== ClientConnectionHandshakeMode::kFailed) {
m = "Probing client protocol... (result will be saved until config reload)";
} else {
@@ -190,11 +190,11 @@ static void SendInfoChosenCipher(JobControlRecord* jcr, UaContext* ua)
static void SendInfoSuccess(JobControlRecord* jcr, UaContext* ua)
{
std::string m;
- if (jcr->impl->res.client->connection_successful_handshake_
+ if (jcr->dir_impl->res.client->connection_successful_handshake_
== ClientConnectionHandshakeMode::kUndefined) {
m = "\r\v";
}
- switch (jcr->impl->connection_handshake_try_) {
+ switch (jcr->dir_impl->connection_handshake_try_) {
case ClientConnectionHandshakeMode::kTlsFirst:
m += " Handshake: Immediate TLS,";
break;
@@ -227,7 +227,7 @@ bool ConnectToFileDaemon(JobControlRecord* jcr,
{
if (!IsConnectingToClientAllowed(jcr) && !IsConnectFromClientAllowed(jcr)) {
Emsg1(M_WARNING, 0, _("Connecting to %s is not allowed.\n"),
- jcr->impl->res.client->resource_name_);
+ jcr->dir_impl->res.client->resource_name_);
return false;
}
bool success = false;
@@ -239,22 +239,22 @@ bool ConnectToFileDaemon(JobControlRecord* jcr,
* in case there is a client that cannot do Tls immediately then
* fall back to cleartext md5-handshake */
OutputMessageForConnectionTry(jcr, ua);
- if (jcr->impl->res.client->connection_successful_handshake_
+ if (jcr->dir_impl->res.client->connection_successful_handshake_
== ClientConnectionHandshakeMode::kUndefined
- || jcr->impl->res.client->connection_successful_handshake_
+ || jcr->dir_impl->res.client->connection_successful_handshake_
== ClientConnectionHandshakeMode::kFailed) {
- if (jcr->impl->res.client->IsTlsConfigured()) {
- jcr->impl->connection_handshake_try_
+ if (jcr->dir_impl->res.client->IsTlsConfigured()) {
+ jcr->dir_impl->connection_handshake_try_
= ClientConnectionHandshakeMode::kTlsFirst;
} else {
- jcr->impl->connection_handshake_try_
+ jcr->dir_impl->connection_handshake_try_
= ClientConnectionHandshakeMode::kCleartextFirst;
}
jcr->is_passive_client_connection_probing = true;
} else {
/* if there is a stored mode from a previous connection then use this */
- jcr->impl->connection_handshake_try_
- = jcr->impl->res.client->connection_successful_handshake_;
+ jcr->dir_impl->connection_handshake_try_
+ = jcr->dir_impl->res.client->connection_successful_handshake_;
jcr->is_passive_client_connection_probing = false;
}
@@ -280,14 +280,14 @@ bool ConnectToFileDaemon(JobControlRecord* jcr,
SendInfoSuccess(jcr, ua);
SendInfoChosenCipher(jcr, ua);
jcr->is_passive_client_connection_probing = false;
- jcr->impl->res.client->connection_successful_handshake_
- = jcr->impl->connection_handshake_try_;
+ jcr->dir_impl->res.client->connection_successful_handshake_
+ = jcr->dir_impl->connection_handshake_try_;
} else {
/* authentication failed due to
* - tls mismatch or
* - if an old client cannot do tls- before md5-handshake
* */
- switch (jcr->impl->connection_handshake_try_) {
+ switch (jcr->dir_impl->connection_handshake_try_) {
case ClientConnectionHandshakeMode::kTlsFirst:
if (jcr->file_bsock) {
jcr->file_bsock->close();
@@ -295,11 +295,11 @@ bool ConnectToFileDaemon(JobControlRecord* jcr,
jcr->file_bsock = nullptr;
}
jcr->setJobStatus(JS_Running);
- jcr->impl->connection_handshake_try_
+ jcr->dir_impl->connection_handshake_try_
= ClientConnectionHandshakeMode::kCleartextFirst;
break;
case ClientConnectionHandshakeMode::kCleartextFirst:
- jcr->impl->connection_handshake_try_
+ jcr->dir_impl->connection_handshake_try_
= ClientConnectionHandshakeMode::kFailed;
break;
case ClientConnectionHandshakeMode::kFailed:
@@ -310,11 +310,11 @@ bool ConnectToFileDaemon(JobControlRecord* jcr,
}
} else {
Jmsg(jcr, M_FATAL, 0, "\nFailed to connect to client \"%s\".\n",
- jcr->impl->res.client->resource_name_);
+ jcr->dir_impl->res.client->resource_name_);
}
connect_tries--;
} while (!tcp_connect_failed && connect_tries && !success
- && jcr->impl->connection_handshake_try_
+ && jcr->dir_impl->connection_handshake_try_
!= ClientConnectionHandshakeMode::kFailed);
if (!success) { jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); }
@@ -328,7 +328,7 @@ int SendJobInfoToFileDaemon(JobControlRecord* jcr)
if (jcr->sd_auth_key == NULL) { jcr->sd_auth_key = strdup("dummy"); }
- if (jcr->impl->res.client->connection_successful_handshake_
+ if (jcr->dir_impl->res.client->connection_successful_handshake_
== ClientConnectionHandshakeMode::kTlsFirst) {
/* client protocol onwards Bareos 18.2 */
TlsPolicy tls_policy = kBnetTlsUnknown;
@@ -341,10 +341,10 @@ int SendJobInfoToFileDaemon(JobControlRecord* jcr)
break;
default:
StorageResource* storage = nullptr;
- if (jcr->impl->res.write_storage) {
- storage = jcr->impl->res.write_storage;
- } else if (jcr->impl->res.read_storage) {
- storage = jcr->impl->res.read_storage;
+ if (jcr->dir_impl->res.write_storage) {
+ storage = jcr->dir_impl->res.write_storage;
+ } else if (jcr->dir_impl->res.read_storage) {
+ storage = jcr->dir_impl->res.read_storage;
} else {
Jmsg(jcr, M_FATAL, 0, _("No read or write storage defined\n"));
jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
@@ -360,16 +360,16 @@ int SendJobInfoToFileDaemon(JobControlRecord* jcr)
fd->fsend(jobcmdssl, edit_int64(jcr->JobId, ed1), jcr->Job,
jcr->VolSessionId, jcr->VolSessionTime, jcr->sd_auth_key,
tls_policy);
- } else { /* jcr->impl_->res.client->connection_successful_handshake_ !=
+ } else { /* jcr->dir_impl_->res.client->connection_successful_handshake_ !=
ClientConnectionHandshakeMode::kTlsFirst */
/* client protocol before Bareos 18.2 */
char ed1[30];
fd->fsend(jobcmd, edit_int64(jcr->JobId, ed1), jcr->Job, jcr->VolSessionId,
jcr->VolSessionTime, jcr->sd_auth_key);
- } /* if (jcr->impl_->res.client->connection_successful_handshake_ ==
+ } /* if (jcr->dir_impl_->res.client->connection_successful_handshake_ ==
ClientConnectionHandshakeMode::kTlsFirst) */
- if (!jcr->impl->keep_sd_auth_key && !bstrcmp(jcr->sd_auth_key, "dummy")) {
+ if (!jcr->dir_impl->keep_sd_auth_key && !bstrcmp(jcr->sd_auth_key, "dummy")) {
memset(jcr->sd_auth_key, 0, strlen(jcr->sd_auth_key));
}
@@ -378,16 +378,17 @@ int SendJobInfoToFileDaemon(JobControlRecord* jcr)
Dmsg1(110, "<filed: %s", fd->msg);
if (!bstrncmp(fd->msg, OKjob, strlen(OKjob))) {
Jmsg(jcr, M_FATAL, 0, _("File daemon \"%s\" rejected Job command: %s\n"),
- jcr->impl->res.client->resource_name_, fd->msg);
+ jcr->dir_impl->res.client->resource_name_, fd->msg);
jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
return 0;
} else if (jcr->db) {
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;
bstrncpy(cr.Uname, fd->msg + strlen(OKjob) + 1, sizeof(cr.Uname));
if (!jcr->db->UpdateClientRecord(jcr, &cr)) {
Jmsg(jcr, M_WARNING, 0, _("Error updating Client record. ERR=%s\n"),
@@ -412,8 +413,8 @@ bool SendPreviousRestoreObjects(JobControlRecord* jcr)
switch (JobLevel) {
case L_DIFFERENTIAL:
case L_INCREMENTAL:
- if (jcr->impl->previous_jr.JobId > 0) {
- if (!SendRestoreObjects(jcr, jcr->impl->previous_jr.JobId, false)) {
+ if (jcr->dir_impl->previous_jr.JobId > 0) {
+ if (!SendRestoreObjects(jcr, jcr->dir_impl->previous_jr.JobId, false)) {
return false;
}
}
@@ -429,7 +430,7 @@ bool SendBwlimitToFd(JobControlRecord* jcr, const char* Job)
{
BareosSocket* fd = jcr->file_bsock;
- if (jcr->impl->FDVersion >= FD_VERSION_4) {
+ if (jcr->dir_impl->FDVersion >= FD_VERSION_4) {
fd->fsend(bandwidthcmd, jcr->max_bandwidth, Job);
if (!response(jcr, fd, OKBandwidth, "Bandwidth", DISPLAY_ERROR)) {
jcr->max_bandwidth = 0; /* can't set bandwidth limit */
@@ -445,29 +446,29 @@ bool SendSecureEraseReqToFd(JobControlRecord* jcr)
int32_t n;
BareosSocket* fd = jcr->file_bsock;
- if (!jcr->impl->FDSecureEraseCmd) {
- jcr->impl->FDSecureEraseCmd = GetPoolMemory(PM_NAME);
+ if (!jcr->dir_impl->FDSecureEraseCmd) {
+ jcr->dir_impl->FDSecureEraseCmd = GetPoolMemory(PM_NAME);
}
- if (jcr->impl->FDVersion > FD_VERSION_53) {
+ if (jcr->dir_impl->FDVersion > FD_VERSION_53) {
fd->fsend(getSecureEraseCmd);
while ((n = BgetDirmsg(fd)) >= 0) {
- jcr->impl->FDSecureEraseCmd = CheckPoolMemorySize(
- jcr->impl->FDSecureEraseCmd, fd->message_length);
- if (sscanf(fd->msg, OKgetSecureEraseCmd, jcr->impl->FDSecureEraseCmd)
+ jcr->dir_impl->FDSecureEraseCmd = CheckPoolMemorySize(
+ jcr->dir_impl->FDSecureEraseCmd, fd->message_length);
+ if (sscanf(fd->msg, OKgetSecureEraseCmd, jcr->dir_impl->FDSecureEraseCmd)
== 1) {
Dmsg1(400, "Got FD Secure Erase Cmd: %s\n",
- jcr->impl->FDSecureEraseCmd);
+ jcr->dir_impl->FDSecureEraseCmd);
break;
} else {
Jmsg(jcr, M_WARNING, 0, _("Unexpected Client Secure Erase Cmd: %s\n"),
fd->msg);
- PmStrcpy(jcr->impl->FDSecureEraseCmd, "*None*");
+ PmStrcpy(jcr->dir_impl->FDSecureEraseCmd, "*None*");
return false;
}
}
} else {
- PmStrcpy(jcr->impl->FDSecureEraseCmd, "*None*");
+ PmStrcpy(jcr->dir_impl->FDSecureEraseCmd, "*None*");
}
return true;
@@ -481,7 +482,7 @@ static void SendSinceTime(JobControlRecord* jcr)
stime = StrToUtime(jcr->starttime_string);
fd->fsend(levelcmd, "", NT_("since_utime "), edit_uint64(stime, ed1), 0,
- NT_("prev_job="), jcr->impl->PrevJob);
+ NT_("prev_job="), jcr->dir_impl->PrevJob);
while (BgetDirmsg(fd) >= 0) { /* allow him to poll us to sync clocks */
Jmsg(jcr, M_INFO, 0, "%s\n", fd->msg);
@@ -538,9 +539,9 @@ bool SendLevelCommand(JobControlRecord* jcr)
// Send either an Included or an Excluded list to FD
static bool SendFileset(JobControlRecord* jcr)
{
- FilesetResource* fileset = jcr->impl->res.fileset;
+ FilesetResource* fileset = jcr->dir_impl->res.fileset;
BareosSocket* fd = jcr->file_bsock;
- StorageResource* store = jcr->impl->res.write_storage;
+ StorageResource* store = jcr->dir_impl->res.write_storage;
int num;
bool include = true;
@@ -775,8 +776,9 @@ static bool SendListItem(JobControlRecord* jcr,
bool SendIncludeList(JobControlRecord* jcr)
{
BareosSocket* fd = jcr->file_bsock;
- if (jcr->impl->res.fileset->new_include) {
- fd->fsend(filesetcmd, jcr->impl->res.fileset->enable_vss ? " vss=1" : "");
+ if (jcr->dir_impl->res.fileset->new_include) {
+ fd->fsend(filesetcmd,
+ jcr->dir_impl->res.fileset->enable_vss ? " vss=1" : "");
return SendFileset(jcr);
}
return true;
@@ -820,18 +822,18 @@ int SendRunscriptsCommands(JobControlRecord* jcr)
bool has_before_jobs = false;
// See if there are any runscripts that need to be ran on the client.
- if (!HaveClientRunscripts(jcr->impl->res.job->RunScripts)) { return 1; }
+ if (!HaveClientRunscripts(jcr->dir_impl->res.job->RunScripts)) { return 1; }
Dmsg0(120, "dird: sending runscripts to fd\n");
msg = GetPoolMemory(PM_FNAME);
ehost = GetPoolMemory(PM_FNAME);
- foreach_alist (cmd, jcr->impl->res.job->RunScripts) {
+ foreach_alist (cmd, jcr->dir_impl->res.job->RunScripts) {
if (!cmd->target.empty()) {
ehost = edit_job_codes(jcr, ehost, cmd->target.c_str(), "");
Dmsg2(200, "dird: runscript %s -> %s\n", cmd->target.c_str(), ehost);
- if (bstrcmp(ehost, jcr->impl->res.client->resource_name_)) {
+ if (bstrcmp(ehost, jcr->dir_impl->res.client->resource_name_)) {
PmStrcpy(msg, cmd->command.c_str());
BashSpaces(msg);
@@ -897,15 +899,15 @@ static int RestoreObjectHandler(void* ctx, int, char** row)
if (jcr->IsJobCanceled()) { return 1; }
// Old File Daemon doesn't handle restore objects
- if (jcr->impl->FDVersion < FD_VERSION_3) {
+ if (jcr->dir_impl->FDVersion < FD_VERSION_3) {
Jmsg(jcr, M_WARNING, 0,
_("Client \"%s\" may not be used to restore "
"this job. Please upgrade your client.\n"),
- jcr->impl->res.client->resource_name_);
+ jcr->dir_impl->res.client->resource_name_);
return 1;
}
- if (jcr->impl->FDVersion
+ if (jcr->dir_impl->FDVersion
< FD_VERSION_5) { /* Old version without PluginName */
fd->fsend("restoreobject JobId=%s %s,%s,%s,%s,%s,%s\n", row[0], row[1],
row[2], row[3], row[4], row[5], row[6]);
@@ -949,9 +951,9 @@ bool SendPluginOptions(JobControlRecord* jcr)
const char* plugin_options;
POOLMEM* msg;
- if (jcr->impl->plugin_options) {
+ if (jcr->dir_impl->plugin_options) {
msg = GetPoolMemory(PM_FNAME);
- PmStrcpy(msg, jcr->impl->plugin_options);
+ PmStrcpy(msg, jcr->dir_impl->plugin_options);
BashSpaces(msg);
fd->fsend(pluginoptionscmd, msg);
@@ -962,11 +964,11 @@ bool SendPluginOptions(JobControlRecord* jcr)
return false;
}
}
- if (jcr->impl->res.job && jcr->impl->res.job->FdPluginOptions
- && jcr->impl->res.job->FdPluginOptions->size()) {
+ if (jcr->dir_impl->res.job && jcr->dir_impl->res.job->FdPluginOptions
+ && jcr->dir_impl->res.job->FdPluginOptions->size()) {
Dmsg2(200, "dird: sendpluginoptions found FdPluginOptions in res.job\n");
foreach_alist_index (i, plugin_options,
- jcr->impl->res.job->FdPluginOptions) {
+ jcr->dir_impl->res.job->FdPluginOptions) {
PmStrcpy(cur_plugin_options, plugin_options);
BashSpaces(cur_plugin_options.c_str());
@@ -1063,8 +1065,8 @@ int GetAttributesAndPutInCatalog(JobControlRecord* jcr)
PoolMem digest(PM_MESSAGE);
fd = jcr->file_bsock;
- jcr->impl->jr.FirstIndex = 1;
- jcr->impl->FileIndex = 0;
+ jcr->dir_impl->jr.FirstIndex = 1;
+ jcr->dir_impl->FileIndex = 0;
// Start transaction allocates jcr->attr and jcr->ar if needed
jcr->db->StartTransaction(jcr); /* start transaction if not already open */
@@ -1111,15 +1113,15 @@ int GetAttributesAndPutInCatalog(JobControlRecord* jcr)
}
// Any cached attr is flushed so we can reuse jcr->attr and jcr->ar
- fn = jcr->impl->fname
- = CheckPoolMemorySize(jcr->impl->fname, fd->message_length);
+ fn = jcr->dir_impl->fname
+ = CheckPoolMemorySize(jcr->dir_impl->fname, fd->message_length);
while (*p != 0) { *fn++ = *p++; /* copy filename */ }
*fn = *p++; /* term filename and point p to attribs */
PmStrcpy(jcr->attr, p); /* save attributes */
jcr->JobFiles++;
- jcr->impl->FileIndex = file_index;
+ jcr->dir_impl->FileIndex = file_index;
ar->attr = jcr->attr;
- ar->fname = jcr->impl->fname;
+ ar->fname = jcr->dir_impl->fname;
ar->FileIndex = file_index;
ar->Stream = stream;
ar->link = NULL;
@@ -1131,7 +1133,8 @@ int GetAttributesAndPutInCatalog(JobControlRecord* jcr)
ar->DeltaSeq = 0;
jcr->cached_attribute = true;
- Dmsg2(debuglevel, "dird<filed: stream=%d %s\n", stream, jcr->impl->fname);
+ Dmsg2(debuglevel, "dird<filed: stream=%d %s\n", stream,
+ jcr->dir_impl->fname);
Dmsg1(debuglevel, "dird<filed: attr=%s\n", ar->attr);
jcr->FileId = ar->FileId;
} else if (CryptoDigestStreamType(stream) != CRYPTO_DIGEST_NONE) {
@@ -1143,9 +1146,9 @@ int GetAttributesAndPutInCatalog(JobControlRecord* jcr)
* it (or not) When we get a new STREAM_UNIX_ATTRIBUTES, we known that we
* can add file to the catalog At the end, we have to add the last file
*/
- if (jcr->impl->FileIndex != (uint32_t)file_index) {
+ if (jcr->dir_impl->FileIndex != (uint32_t)file_index) {
Jmsg3(jcr, M_ERROR, 0, _("%s index %d not same as attributes %d\n"),
- stream_to_ascii(stream), file_index, jcr->impl->FileIndex);
+ stream_to_ascii(stream), file_index, jcr->dir_impl->FileIndex);
continue;
}
@@ -1157,8 +1160,8 @@ int GetAttributesAndPutInCatalog(JobControlRecord* jcr)
Dmsg4(debuglevel, "stream=%d DigestLen=%d Digest=%s type=%d\n", stream,
strlen(digest.c_str()), digest.c_str(), ar->DigestType);
}
- jcr->impl->jr.JobFiles = jcr->JobFiles = file_index;
- jcr->impl->jr.LastIndex = file_index;
+ jcr->dir_impl->jr.JobFiles = jcr->JobFiles = file_index;
+ jcr->dir_impl->jr.LastIndex = file_index;
}
if (IsBnetError(fd)) {
@@ -1188,7 +1191,7 @@ bool CancelFileDaemonJob(UaContext* ua, JobControlRecord* jcr)
{
BareosSocket* fd;
- ua->jcr->impl->res.client = jcr->impl->res.client;
+ ua->jcr->dir_impl->res.client = jcr->dir_impl->res.client;
if (!ConnectToFileDaemon(ua->jcr, 10, me->FDConnectTimeout, true, ua)) {
ua->ErrorMsg(_("\nFailed to connect to File daemon.\n"));
return false;
@@ -1212,7 +1215,7 @@ void DoNativeClientStatus(UaContext* ua, ClientResource* client, char* cmd)
BareosSocket* fd;
// Connect to File daemon
- ua->jcr->impl->res.client = client;
+ ua->jcr->dir_impl->res.client = client;
// Try to connect for 15 seconds
if (!ua->api) {
@@ -1255,7 +1258,7 @@ void DoClientResolve(UaContext* ua, ClientResource* client)
BareosSocket* fd;
// Connect to File daemon
- ua->jcr->impl->res.client = client;
+ ua->jcr->dir_impl->res.client = client;
// Try to connect for 15 seconds
if (!ua->api) {
diff --git a/core/src/dird/get_database_connection.cc b/core/src/dird/get_database_connection.cc
index 3d9cbf42c..2f978d75d 100644
--- a/core/src/dird/get_database_connection.cc
+++ b/core/src/dird/get_database_connection.cc
@@ -3,7 +3,7 @@
Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
Copyright (C) 2011-2016 Planets Communications B.V.
- Copyright (C) 2019-2019 Bareos GmbH & Co. KG
+ Copyright (C) 2019-2022 Bareos GmbH & Co. KG
This program is Free Software; you can redistribute it and/or
modify it under the terms of version three of the GNU Affero General Public
@@ -25,7 +25,7 @@
#include "cats/sql_pooling.h"
#include "dird/dird_conf.h"
#include "dird/get_database_connection.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "include/jcr.h"
namespace directordaemon {
@@ -33,15 +33,16 @@ namespace directordaemon {
BareosDb* GetDatabaseConnection(JobControlRecord* jcr)
{
return DbSqlGetPooledConnection(
- jcr, jcr->impl->res.catalog->db_driver, jcr->impl->res.catalog->db_name,
- jcr->impl->res.catalog->db_user,
- jcr->impl->res.catalog->db_password.value,
- jcr->impl->res.catalog->db_address, jcr->impl->res.catalog->db_port,
- jcr->impl->res.catalog->db_socket,
- jcr->impl->res.catalog->mult_db_connections,
- jcr->impl->res.catalog->disable_batch_insert,
- jcr->impl->res.catalog->try_reconnect,
- jcr->impl->res.catalog->exit_on_fatal);
+ jcr, jcr->dir_impl->res.catalog->db_driver,
+ jcr->dir_impl->res.catalog->db_name, jcr->dir_impl->res.catalog->db_user,
+ jcr->dir_impl->res.catalog->db_password.value,
+ jcr->dir_impl->res.catalog->db_address,
+ jcr->dir_impl->res.catalog->db_port,
+ jcr->dir_impl->res.catalog->db_socket,
+ jcr->dir_impl->res.catalog->mult_db_connections,
+ jcr->dir_impl->res.catalog->disable_batch_insert,
+ jcr->dir_impl->res.catalog->try_reconnect,
+ jcr->dir_impl->res.catalog->exit_on_fatal);
}
} // namespace directordaemon
diff --git a/core/src/dird/getmsg.cc b/core/src/dird/getmsg.cc
index a16f698c2..0338b33a1 100644
--- a/core/src/dird/getmsg.cc
+++ b/core/src/dird/getmsg.cc
@@ -43,7 +43,7 @@
#include "include/bareos.h"
#include "dird.h"
#include "dird/catreq.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/msgchan.h"
#include "lib/bnet.h"
#include "lib/edit.h"
@@ -81,10 +81,10 @@ static void SetJcrSdJobStatus(JobControlRecord* jcr, int SDJobStatus)
Dmsg0(800, "Setting wait_time\n");
jcr->wait_time = time(NULL);
}
- jcr->impl->SDJobStatus = SDJobStatus;
+ jcr->dir_impl->SDJobStatus = SDJobStatus;
// Some SD Job status setting are propagated to the controlling Job.
- switch (jcr->impl->SDJobStatus) {
+ switch (jcr->dir_impl->SDJobStatus) {
case JS_Incomplete:
jcr->setJobStatusWithPriorityCheck(JS_Incomplete);
break;
diff --git a/core/src/dird/inc_conf.cc b/core/src/dird/inc_conf.cc
index 5a22a2380..e16101333 100644
--- a/core/src/dird/inc_conf.cc
+++ b/core/src/dird/inc_conf.cc
@@ -30,7 +30,7 @@
#include "include/bareos.h"
#include "dird.h"
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "findlib/match.h"
#include "lib/parse_conf.h"
#include "include/allow_deprecated.h"
@@ -300,9 +300,9 @@ void FindUsedCompressalgos(PoolMem* compressalgos, JobControlRecord* jcr)
FilesetResource* fs;
struct s_fs_opt* fs_opt;
- if (!jcr->impl->res.job || !jcr->impl->res.job->fileset) { return; }
+ if (!jcr->dir_impl->res.job || !jcr->dir_impl->res.job->fileset) { return; }
- 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];
diff --git a/core/src/dird/jcr_util.cc b/core/src/dird/jcr_util.cc
index 53fbc11d0..8653b9e7e 100644
--- a/core/src/dird/jcr_util.cc
+++ b/core/src/dird/jcr_util.cc
@@ -20,7 +20,7 @@
*/
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "lib/parse_bsr.h"
#include "lib/parse_conf.h"
@@ -30,8 +30,7 @@ namespace directordaemon {
JobControlRecord* NewDirectorJcr(JCR_free_HANDLER* DirdFreeJcr)
{
JobControlRecord* jcr = new_jcr(DirdFreeJcr);
- jcr->impl
- = new JobControlRecordPrivate(my_config->config_resources_container_);
+ jcr->dir_impl = new DirectorJcrImpl(my_config->config_resources_container_);
Dmsg1(10, "NewDirectorJcr: configuration_resources_ is at %p %s\n",
my_config->config_resources_container_->configuration_resources_,
my_config->config_resources_container_->TimeStampAsString().c_str());
diff --git a/core/src/dird/jcr_util.h b/core/src/dird/jcr_util.h
index 83921b79f..32ba3ffb4 100644
--- a/core/src/dird/jcr_util.h
+++ b/core/src/dird/jcr_util.h
@@ -22,7 +22,7 @@
#ifndef BAREOS_DIRD_JCR_UTIL_H_
#define BAREOS_DIRD_JCR_UTIL_H_
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
namespace directordaemon {
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);
diff --git a/core/src/dird/jobq.cc b/core/src/dird/jobq.cc
index 8c4281ab3..0dd832e94 100644
--- a/core/src/dird/jobq.cc
+++ b/core/src/dird/jobq.cc
@@ -33,7 +33,7 @@
#include "include/bareos.h"
#include "dird.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/jobq.h"
#include "dird/storage.h"
@@ -206,15 +206,15 @@ int JobqAdd(jobq_t* jq, JobControlRecord* jcr)
pthread_t id;
wait_pkt* sched_pkt;
- if (!jcr->impl->term_wait_inited) {
+ if (!jcr->dir_impl->term_wait_inited) {
// Initialize termination condition variable
- if ((status = pthread_cond_init(&jcr->impl->term_wait, NULL)) != 0) {
+ if ((status = 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(status));
return status;
}
- jcr->impl->term_wait_inited = true;
+ jcr->dir_impl->term_wait_inited = true;
}
Dmsg3(2300, "JobqAdd jobid=%d jcr=0x%x UseCount=%d\n", jcr->JobId, jcr,
@@ -441,12 +441,12 @@ extern "C" void* jobq_server(void* arg)
* been acquired for jobs canceled before they were put into the ready
* queue.
*/
- if (jcr->impl->acquired_resource_locks) {
+ if (jcr->dir_impl->acquired_resource_locks) {
DecReadStore(jcr);
DecWriteStore(jcr);
DecClientConcurrency(jcr);
DecJobConcurrency(jcr);
- jcr->impl->acquired_resource_locks = false;
+ jcr->dir_impl->acquired_resource_locks = false;
}
if (RescheduleJob(jcr, jq, je)) { continue; /* go look for more work */ }
@@ -454,7 +454,7 @@ extern "C" void* jobq_server(void* arg)
// Clean up and release old jcr
Dmsg2(2300, "====== Termination job=%d use_cnt=%d\n", jcr->JobId,
jcr->UseCount());
- jcr->impl->SDJobStatus = 0;
+ jcr->dir_impl->SDJobStatus = 0;
unlock_mutex(jq->mutex); /* release internal lock */
FreeJcr(jcr);
free(je); /* release job entry */
@@ -475,10 +475,10 @@ extern "C" void* jobq_server(void* arg)
running_allow_mix = true;
for (; re;) {
- Dmsg2(
- 2300, "JobId %d is also running with %s\n", re->jcr->JobId,
- re->jcr->impl->res.job->allow_mixed_priority ? "mix" : "no mix");
- if (!re->jcr->impl->res.job->allow_mixed_priority) {
+ Dmsg2(2300, "JobId %d is also running with %s\n", re->jcr->JobId,
+ re->jcr->dir_impl->res.job->allow_mixed_priority ? "mix"
+ : "no mix");
+ if (!re->jcr->dir_impl->res.job->allow_mixed_priority) {
running_allow_mix = false;
break;
}
@@ -502,12 +502,12 @@ extern "C" void* jobq_server(void* arg)
Dmsg4(2300, "Examining Job=%d JobPri=%d want Pri=%d (%s)\n", jcr->JobId,
jcr->JobPriority, Priority,
- jcr->impl->res.job->allow_mixed_priority ? "mix" : "no mix");
+ jcr->dir_impl->res.job->allow_mixed_priority ? "mix" : "no mix");
// Take only jobs of correct Priority
if (!(jcr->JobPriority == Priority
|| (jcr->JobPriority < Priority
- && jcr->impl->res.job->allow_mixed_priority
+ && jcr->dir_impl->res.job->allow_mixed_priority
&& running_allow_mix))) {
jcr->setJobStatusWithPriorityCheck(JS_WaitPriority);
break;
@@ -593,15 +593,16 @@ static bool RescheduleJob(JobControlRecord* jcr, jobq_t* jq, jobq_item_t* je)
// Reschedule the job if requested and possible
// Basic condition is that more reschedule times remain
- if (jcr->impl->res.job->RescheduleTimes == 0
- || jcr->impl->reschedule_count < jcr->impl->res.job->RescheduleTimes) {
+ if (jcr->dir_impl->res.job->RescheduleTimes == 0
+ || jcr->dir_impl->reschedule_count
+ < jcr->dir_impl->res.job->RescheduleTimes) {
resched =
// Check for incomplete jobs
- (jcr->impl->res.job->RescheduleIncompleteJobs && jcr->IsIncomplete()
+ (jcr->dir_impl->res.job->RescheduleIncompleteJobs && jcr->IsIncomplete()
&& jcr->is_JobType(JT_BACKUP) && !jcr->is_JobLevel(L_BASE))
||
// Check for failed jobs
- (jcr->impl->res.job->RescheduleOnError && !jcr->IsTerminatedOk()
+ (jcr->dir_impl->res.job->RescheduleOnError && !jcr->IsTerminatedOk()
&& !jcr->is_JobStatus(JS_Canceled) && jcr->is_JobType(JT_BACKUP));
}
@@ -614,19 +615,19 @@ static bool RescheduleJob(JobControlRecord* jcr, jobq_t* jq, jobq_item_t* je)
* possible.
*/
now = time(NULL);
- jcr->impl->reschedule_count++;
- jcr->sched_time = now + jcr->impl->res.job->RescheduleInterval;
+ jcr->dir_impl->reschedule_count++;
+ jcr->sched_time = now + jcr->dir_impl->res.job->RescheduleInterval;
bstrftime(dt, sizeof(dt), now);
bstrftime(dt2, sizeof(dt2), jcr->sched_time);
Dmsg4(2300, "Rescheduled Job %s to re-run in %d seconds.(now=%u,then=%u)\n",
- jcr->Job, (int)jcr->impl->res.job->RescheduleInterval, now,
+ jcr->Job, (int)jcr->dir_impl->res.job->RescheduleInterval, now,
jcr->sched_time);
Jmsg(jcr, M_INFO, 0,
_("Rescheduled Job %s at %s to re-run in %d seconds (%s).\n"),
- jcr->Job, dt, (int)jcr->impl->res.job->RescheduleInterval, dt2);
+ jcr->Job, dt, (int)jcr->dir_impl->res.job->RescheduleInterval, dt2);
DirdFreeJcrPointers(jcr); /* partial cleanup old stuff */
jcr->setJobStatus(-1);
- jcr->impl->SDJobStatus = 0;
+ jcr->dir_impl->SDJobStatus = 0;
jcr->JobErrors = 0;
if (!AllowDuplicateJob(jcr)) { return false; }
@@ -638,7 +639,7 @@ static bool RescheduleJob(JobControlRecord* jcr, jobq_t* jq, jobq_item_t* je)
UpdateJobEnd(jcr, JS_WaitStartTime);
Dmsg2(2300, "Requeue job=%d use=%d\n", jcr->JobId, jcr->UseCount());
unlock_mutex(jq->mutex);
- jcr->impl->jr.RealEndTime = 0;
+ jcr->dir_impl->jr.RealEndTime = 0;
JobqAdd(jq, jcr); /* queue the job to run again */
lock_mutex(jq->mutex);
FreeJcr(jcr); /* release jcr */
@@ -655,41 +656,43 @@ static bool RescheduleJob(JobControlRecord* jcr, jobq_t* jq, jobq_item_t* je)
*/
jcr->setJobStatusWithPriorityCheck(JS_WaitStartTime);
njcr = NewDirectorJcr(DirdFreeJcr);
- SetJcrDefaults(njcr, jcr->impl->res.job);
- njcr->impl->reschedule_count = jcr->impl->reschedule_count;
+ SetJcrDefaults(njcr, jcr->dir_impl->res.job);
+ njcr->dir_impl->reschedule_count = jcr->dir_impl->reschedule_count;
njcr->sched_time = jcr->sched_time;
njcr->initial_sched_time = jcr->initial_sched_time;
njcr->setJobLevel(jcr->getJobLevel());
- njcr->impl->res.pool = jcr->impl->res.pool;
- njcr->impl->res.run_pool_override = jcr->impl->res.run_pool_override;
- njcr->impl->res.full_pool = jcr->impl->res.full_pool;
- njcr->impl->res.run_full_pool_override
- = jcr->impl->res.run_full_pool_override;
- njcr->impl->res.inc_pool = jcr->impl->res.inc_pool;
- njcr->impl->res.run_inc_pool_override
- = jcr->impl->res.run_inc_pool_override;
- njcr->impl->res.diff_pool = jcr->impl->res.diff_pool;
- njcr->impl->res.run_diff_pool_override
- = jcr->impl->res.run_diff_pool_override;
- njcr->impl->res.next_pool = jcr->impl->res.next_pool;
- njcr->impl->res.run_next_pool_override
- = jcr->impl->res.run_next_pool_override;
+ njcr->dir_impl->res.pool = jcr->dir_impl->res.pool;
+ njcr->dir_impl->res.run_pool_override
+ = jcr->dir_impl->res.run_pool_override;
+ njcr->dir_impl->res.full_pool = jcr->dir_impl->res.full_pool;
+ njcr->dir_impl->res.run_full_pool_override
+ = jcr->dir_impl->res.run_full_pool_override;
+ njcr->dir_impl->res.inc_pool = jcr->dir_impl->res.inc_pool;
+ njcr->dir_impl->res.run_inc_pool_override
+ = jcr->dir_impl->res.run_inc_pool_override;
+ njcr->dir_impl->res.diff_pool = jcr->dir_impl->res.diff_pool;
+ njcr->dir_impl->res.run_diff_pool_override
+ = jcr->dir_impl->res.run_diff_pool_override;
+ njcr->dir_impl->res.next_pool = jcr->dir_impl->res.next_pool;
+ njcr->dir_impl->res.run_next_pool_override
+ = jcr->dir_impl->res.run_next_pool_override;
njcr->setJobStatus(-1);
njcr->setJobStatusWithPriorityCheck(jcr->getJobStatus());
- if (jcr->impl->res.read_storage) {
- CopyRstorage(njcr, jcr->impl->res.read_storage_list, _("previous Job"));
+ if (jcr->dir_impl->res.read_storage) {
+ CopyRstorage(njcr, jcr->dir_impl->res.read_storage_list,
+ _("previous Job"));
} else {
FreeRstorage(njcr);
}
- if (jcr->impl->res.write_storage) {
- CopyWstorage(njcr, jcr->impl->res.write_storage_list,
+ if (jcr->dir_impl->res.write_storage) {
+ CopyWstorage(njcr, jcr->dir_impl->res.write_storage_list,
_("previous Job"));
} else {
FreeWstorage(njcr);
}
- njcr->impl->res.messages = jcr->impl->res.messages;
- njcr->impl->spool_data = jcr->impl->spool_data;
+ njcr->dir_impl->res.messages = jcr->dir_impl->res.messages;
+ njcr->dir_impl->spool_data = jcr->dir_impl->spool_data;
Dmsg0(2300, "Call to run new job\n");
unlock_mutex(jq->mutex);
RunJob(njcr); /* This creates a "new" job */
@@ -712,7 +715,7 @@ static bool RescheduleJob(JobControlRecord* jcr, jobq_t* jq, jobq_item_t* je)
static bool AcquireResources(JobControlRecord* jcr)
{
// Set that we didn't acquire any resourse locks yet.
- jcr->impl->acquired_resource_locks = false;
+ jcr->dir_impl->acquired_resource_locks = false;
/*
* Some Job Types are excluded from the client and storage concurrency
@@ -726,11 +729,11 @@ static bool AcquireResources(JobControlRecord* jcr)
* Migration/Copy and Consolidation jobs are not counted for client
* concurrency as they do not touch the client at all
*/
- jcr->impl->IgnoreClientConcurrency = true;
+ jcr->dir_impl->IgnoreClientConcurrency = true;
Dmsg1(200, "Skipping migrate/copy Job %s for client concurrency\n",
jcr->Job);
- if (jcr->impl->MigrateJobId == 0) {
+ if (jcr->dir_impl->MigrateJobId == 0) {
/*
* Migration/Copy control jobs are not counted for storage concurrency
* as they do not touch the storage at all
@@ -738,14 +741,14 @@ static bool AcquireResources(JobControlRecord* jcr)
Dmsg1(200,
"Skipping migrate/copy Control Job %s for storage concurrency\n",
jcr->Job);
- jcr->impl->IgnoreStorageConcurrency = true;
+ jcr->dir_impl->IgnoreStorageConcurrency = true;
}
break;
default:
break;
}
- if (jcr->impl->res.read_storage) {
+ if (jcr->dir_impl->res.read_storage) {
if (!IncReadStore(jcr)) {
jcr->setJobStatusWithPriorityCheck(JS_WaitStoreRes);
@@ -753,7 +756,7 @@ static bool AcquireResources(JobControlRecord* jcr)
}
}
- if (jcr->impl->res.write_storage) {
+ if (jcr->dir_impl->res.write_storage) {
if (!IncWriteStore(jcr)) {
DecReadStore(jcr);
jcr->setJobStatusWithPriorityCheck(JS_WaitStoreRes);
@@ -781,23 +784,24 @@ static bool AcquireResources(JobControlRecord* jcr)
return false;
}
- jcr->impl->acquired_resource_locks = true;
+ jcr->dir_impl->acquired_resource_locks = true;
return true;
}
static bool IncClientConcurrency(JobControlRecord* jcr)
{
- if (!jcr->impl->res.client || jcr->impl->IgnoreClientConcurrency) {
+ if (!jcr->dir_impl->res.client || jcr->dir_impl->IgnoreClientConcurrency) {
return true;
}
lock_mutex(mutex);
- if (jcr->impl->res.client->rcs->NumConcurrentJobs
- < jcr->impl->res.client->MaxConcurrentJobs) {
- jcr->impl->res.client->rcs->NumConcurrentJobs++;
- Dmsg2(50, "Inc Client=%s rncj=%d\n", jcr->impl->res.client->resource_name_,
- jcr->impl->res.client->rcs->NumConcurrentJobs);
+ if (jcr->dir_impl->res.client->rcs->NumConcurrentJobs
+ < jcr->dir_impl->res.client->MaxConcurrentJobs) {
+ jcr->dir_impl->res.client->rcs->NumConcurrentJobs++;
+ Dmsg2(50, "Inc Client=%s rncj=%d\n",
+ jcr->dir_impl->res.client->resource_name_,
+ jcr->dir_impl->res.client->rcs->NumConcurrentJobs);
unlock_mutex(mutex);
return true;
@@ -810,13 +814,14 @@ static bool IncClientConcurrency(JobControlRecord* jcr)
static void DecClientConcurrency(JobControlRecord* jcr)
{
- if (jcr->impl->IgnoreClientConcurrency) { return; }
+ if (jcr->dir_impl->IgnoreClientConcurrency) { return; }
lock_mutex(mutex);
- if (jcr->impl->res.client) {
- jcr->impl->res.client->rcs->NumConcurrentJobs--;
- Dmsg2(50, "Dec Client=%s rncj=%d\n", jcr->impl->res.client->resource_name_,
- jcr->impl->res.client->rcs->NumConcurrentJobs);
+ if (jcr->dir_impl->res.client) {
+ jcr->dir_impl->res.client->rcs->NumConcurrentJobs--;
+ Dmsg2(50, "Dec Client=%s rncj=%d\n",
+ jcr->dir_impl->res.client->resource_name_,
+ jcr->dir_impl->res.client->rcs->NumConcurrentJobs);
}
unlock_mutex(mutex);
}
@@ -824,11 +829,11 @@ static void DecClientConcurrency(JobControlRecord* jcr)
static bool IncJobConcurrency(JobControlRecord* jcr)
{
lock_mutex(mutex);
- if (jcr->impl->res.job->rjs->NumConcurrentJobs
- < jcr->impl->res.job->MaxConcurrentJobs) {
- jcr->impl->res.job->rjs->NumConcurrentJobs++;
- Dmsg2(50, "Inc Job=%s rncj=%d\n", jcr->impl->res.job->resource_name_,
- jcr->impl->res.job->rjs->NumConcurrentJobs);
+ if (jcr->dir_impl->res.job->rjs->NumConcurrentJobs
+ < jcr->dir_impl->res.job->MaxConcurrentJobs) {
+ jcr->dir_impl->res.job->rjs->NumConcurrentJobs++;
+ Dmsg2(50, "Inc Job=%s rncj=%d\n", jcr->dir_impl->res.job->resource_name_,
+ jcr->dir_impl->res.job->rjs->NumConcurrentJobs);
unlock_mutex(mutex);
return true;
@@ -842,9 +847,9 @@ static bool IncJobConcurrency(JobControlRecord* jcr)
static void DecJobConcurrency(JobControlRecord* jcr)
{
lock_mutex(mutex);
- jcr->impl->res.job->rjs->NumConcurrentJobs--;
- Dmsg2(50, "Dec Job=%s rncj=%d\n", jcr->impl->res.job->resource_name_,
- jcr->impl->res.job->rjs->NumConcurrentJobs);
+ jcr->dir_impl->res.job->rjs->NumConcurrentJobs--;
+ Dmsg2(50, "Dec Job=%s rncj=%d\n", jcr->dir_impl->res.job->resource_name_,
+ jcr->dir_impl->res.job->rjs->NumConcurrentJobs);
unlock_mutex(mutex);
}
@@ -854,18 +859,19 @@ static void DecJobConcurrency(JobControlRecord* jcr)
*/
bool IncReadStore(JobControlRecord* jcr)
{
- if (jcr->impl->IgnoreStorageConcurrency) { return true; }
+ if (jcr->dir_impl->IgnoreStorageConcurrency) { return true; }
lock_mutex(mutex);
- if (jcr->impl->res.read_storage->runtime_storage_status->NumConcurrentJobs
- < jcr->impl->res.read_storage->MaxConcurrentJobs) {
- jcr->impl->res.read_storage->runtime_storage_status
+ if (jcr->dir_impl->res.read_storage->runtime_storage_status->NumConcurrentJobs
+ < jcr->dir_impl->res.read_storage->MaxConcurrentJobs) {
+ jcr->dir_impl->res.read_storage->runtime_storage_status
->NumConcurrentReadJobs++;
- jcr->impl->res.read_storage->runtime_storage_status->NumConcurrentJobs++;
- Dmsg2(
- 50, "Inc Rstore=%s rncj=%d\n",
- jcr->impl->res.read_storage->resource_name_,
- jcr->impl->res.read_storage->runtime_storage_status->NumConcurrentJobs);
+ jcr->dir_impl->res.read_storage->runtime_storage_status
+ ->NumConcurrentJobs++;
+ Dmsg2(50, "Inc Rstore=%s rncj=%d\n",
+ jcr->dir_impl->res.read_storage->resource_name_,
+ jcr->dir_impl->res.read_storage->runtime_storage_status
+ ->NumConcurrentJobs);
unlock_mutex(mutex);
return true;
@@ -873,38 +879,42 @@ bool IncReadStore(JobControlRecord* jcr)
unlock_mutex(mutex);
Dmsg2(50, "Fail to acquire Rstore=%s rncj=%d\n",
- jcr->impl->res.read_storage->resource_name_,
- jcr->impl->res.read_storage->runtime_storage_status->NumConcurrentJobs);
+ jcr->dir_impl->res.read_storage->resource_name_,
+ jcr->dir_impl->res.read_storage->runtime_storage_status
+ ->NumConcurrentJobs);
return false;
}
void DecReadStore(JobControlRecord* jcr)
{
- if (jcr->impl->res.read_storage && !jcr->impl->IgnoreStorageConcurrency) {
+ if (jcr->dir_impl->res.read_storage
+ && !jcr->dir_impl->IgnoreStorageConcurrency) {
lock_mutex(mutex);
- jcr->impl->res.read_storage->runtime_storage_status
+ jcr->dir_impl->res.read_storage->runtime_storage_status
->NumConcurrentReadJobs--;
- jcr->impl->res.read_storage->runtime_storage_status->NumConcurrentJobs--;
- Dmsg2(
- 50, "Dec Rstore=%s rncj=%d\n",
- jcr->impl->res.read_storage->resource_name_,
- jcr->impl->res.read_storage->runtime_storage_status->NumConcurrentJobs);
+ jcr->dir_impl->res.read_storage->runtime_storage_status
+ ->NumConcurrentJobs--;
+ Dmsg2(50, "Dec Rstore=%s rncj=%d\n",
+ jcr->dir_impl->res.read_storage->resource_name_,
+ jcr->dir_impl->res.read_storage->runtime_storage_status
+ ->NumConcurrentJobs);
- if (jcr->impl->res.read_storage->runtime_storage_status
+ if (jcr->dir_impl->res.read_storage->runtime_storage_status
->NumConcurrentReadJobs
< 0) {
Jmsg(jcr, M_FATAL, 0, _("NumConcurrentReadJobs Dec Rstore=%s rncj=%d\n"),
- jcr->impl->res.read_storage->resource_name_,
- jcr->impl->res.read_storage->runtime_storage_status
+ jcr->dir_impl->res.read_storage->resource_name_,
+ jcr->dir_impl->res.read_storage->runtime_storage_status
->NumConcurrentReadJobs);
}
- if (jcr->impl->res.read_storage->runtime_storage_status->NumConcurrentJobs
+ if (jcr->dir_impl->res.read_storage->runtime_storage_status
+ ->NumConcurrentJobs
< 0) {
Jmsg(jcr, M_FATAL, 0, _("NumConcurrentJobs Dec Rstore=%s rncj=%d\n"),
- jcr->impl->res.read_storage->resource_name_,
- jcr->impl->res.read_storage->runtime_storage_status
+ jcr->dir_impl->res.read_storage->resource_name_,
+ jcr->dir_impl->res.read_storage->runtime_storage_status
->NumConcurrentJobs);
}
unlock_mutex(mutex);
@@ -913,15 +923,17 @@ void DecReadStore(JobControlRecord* jcr)
static bool IncWriteStore(JobControlRecord* jcr)
{
- if (jcr->impl->IgnoreStorageConcurrency) { return true; }
+ if (jcr->dir_impl->IgnoreStorageConcurrency) { return true; }
lock_mutex(mutex);
- if (jcr->impl->res.write_storage->runtime_storage_status->NumConcurrentJobs
- < jcr->impl->res.write_storage->MaxConcurrentJobs) {
- jcr->impl->res.write_storage->runtime_storage_status->NumConcurrentJobs++;
+ if (jcr->dir_impl->res.write_storage->runtime_storage_status
+ ->NumConcurrentJobs
+ < jcr->dir_impl->res.write_storage->MaxConcurrentJobs) {
+ jcr->dir_impl->res.write_storage->runtime_storage_status
+ ->NumConcurrentJobs++;
Dmsg2(50, "Inc Wstore=%s wncj=%d\n",
- jcr->impl->res.write_storage->resource_name_,
- jcr->impl->res.write_storage->runtime_storage_status
+ jcr->dir_impl->res.write_storage->resource_name_,
+ jcr->dir_impl->res.write_storage->runtime_storage_status
->NumConcurrentJobs);
unlock_mutex(mutex);
@@ -929,29 +941,32 @@ static bool IncWriteStore(JobControlRecord* jcr)
}
unlock_mutex(mutex);
- Dmsg2(
- 50, "Fail to acquire Wstore=%s wncj=%d\n",
- jcr->impl->res.write_storage->resource_name_,
- jcr->impl->res.write_storage->runtime_storage_status->NumConcurrentJobs);
+ Dmsg2(50, "Fail to acquire Wstore=%s wncj=%d\n",
+ jcr->dir_impl->res.write_storage->resource_name_,
+ jcr->dir_impl->res.write_storage->runtime_storage_status
+ ->NumConcurrentJobs);
return false;
}
static void DecWriteStore(JobControlRecord* jcr)
{
- if (jcr->impl->res.write_storage && !jcr->impl->IgnoreStorageConcurrency) {
+ if (jcr->dir_impl->res.write_storage
+ && !jcr->dir_impl->IgnoreStorageConcurrency) {
lock_mutex(mutex);
- jcr->impl->res.write_storage->runtime_storage_status->NumConcurrentJobs--;
+ jcr->dir_impl->res.write_storage->runtime_storage_status
+ ->NumConcurrentJobs--;
Dmsg2(50, "Dec Wstore=%s wncj=%d\n",
- jcr->impl->res.write_storage->resource_name_,
- jcr->impl->res.write_storage->runtime_storage_status
+ jcr->dir_impl->res.write_storage->resource_name_,
+ jcr->dir_impl->res.write_storage->runtime_storage_status
->NumConcurrentJobs);
- if (jcr->impl->res.write_storage->runtime_storage_status->NumConcurrentJobs
+ if (jcr->dir_impl->res.write_storage->runtime_storage_status
+ ->NumConcurrentJobs
< 0) {
Jmsg(jcr, M_FATAL, 0, _("NumConcurrentJobs Dec Wstore=%s wncj=%d\n"),
- jcr->impl->res.write_storage->resource_name_,
- jcr->impl->res.write_storage->runtime_storage_status
+ jcr->dir_impl->res.write_storage->resource_name_,
+ jcr->dir_impl->res.write_storage->runtime_storage_status
->NumConcurrentJobs);
}
unlock_mutex(mutex);
diff --git a/core/src/dird/migrate.cc b/core/src/dird/migrate.cc
index 8280e7c48..22fe386e4 100644
--- a/core/src/dird/migrate.cc
+++ b/core/src/dird/migrate.cc
@@ -42,7 +42,7 @@
#include "dird.h"
#include "dird/dird_globals.h"
#include "dird/backup.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/migration.h"
#include "dird/msgchan.h"
@@ -250,7 +250,7 @@ static inline bool SetMigrationNextPool(JobControlRecord* jcr,
* Get the PoolId used with the original job. Then
* find the pool name from the database record.
*/
- pr.PoolId = jcr->impl->jr.PoolId;
+ pr.PoolId = jcr->dir_impl->jr.PoolId;
if (!jcr->db->GetPoolRecord(jcr, &pr)) {
Jmsg(jcr, M_FATAL, 0, _("Pool for JobId %s not in database. ERR=%s\n"),
edit_int64(pr.PoolId, ed1), jcr->db->strerror());
@@ -266,22 +266,24 @@ static inline bool SetMigrationNextPool(JobControlRecord* jcr,
}
// See if there is a next pool override.
- if (jcr->impl->res.run_next_pool_override) {
- PmStrcpy(jcr->impl->res.npool_source, _("Run NextPool override"));
- PmStrcpy(jcr->impl->res.pool_source, _("Run NextPool override"));
+ if (jcr->dir_impl->res.run_next_pool_override) {
+ PmStrcpy(jcr->dir_impl->res.npool_source, _("Run NextPool override"));
+ PmStrcpy(jcr->dir_impl->res.pool_source, _("Run NextPool override"));
storage_source = _("Storage from Run NextPool override");
} else {
// See if there is a next pool override in the Job definition.
- if (jcr->impl->res.job->next_pool) {
- jcr->impl->res.next_pool = jcr->impl->res.job->next_pool;
- PmStrcpy(jcr->impl->res.npool_source, _("Job's NextPool resource"));
- PmStrcpy(jcr->impl->res.pool_source, _("Job's NextPool resource"));
+ if (jcr->dir_impl->res.job->next_pool) {
+ jcr->dir_impl->res.next_pool = jcr->dir_impl->res.job->next_pool;
+ PmStrcpy(jcr->dir_impl->res.npool_source, _("Job's NextPool resource"));
+ PmStrcpy(jcr->dir_impl->res.pool_source, _("Job's NextPool resource"));
storage_source = _("Storage from Job's NextPool resource");
} else {
// Fall back to the pool's NextPool definition.
- jcr->impl->res.next_pool = pool->NextPool;
- PmStrcpy(jcr->impl->res.npool_source, _("Job Pool's NextPool resource"));
- PmStrcpy(jcr->impl->res.pool_source, _("Job Pool's NextPool resource"));
+ jcr->dir_impl->res.next_pool = pool->NextPool;
+ PmStrcpy(jcr->dir_impl->res.npool_source,
+ _("Job Pool's NextPool resource"));
+ PmStrcpy(jcr->dir_impl->res.pool_source,
+ _("Job Pool's NextPool resource"));
storage_source = _("Storage from Pool's NextPool resource");
}
}
@@ -291,21 +293,21 @@ static inline bool SetMigrationNextPool(JobControlRecord* jcr,
* record exists in the database. Note, in this case, we
* will be migrating from pool to pool->NextPool.
*/
- if (jcr->impl->res.next_pool) {
- jcr->impl->jr.PoolId
- = GetOrCreatePoolRecord(jcr, jcr->impl->res.next_pool->resource_name_);
- if (jcr->impl->jr.PoolId == 0) { return false; }
+ if (jcr->dir_impl->res.next_pool) {
+ jcr->dir_impl->jr.PoolId = GetOrCreatePoolRecord(
+ jcr, jcr->dir_impl->res.next_pool->resource_name_);
+ if (jcr->dir_impl->jr.PoolId == 0) { return false; }
}
- if (!SetMigrationWstorage(jcr, pool, jcr->impl->res.next_pool,
+ if (!SetMigrationWstorage(jcr, pool, jcr->dir_impl->res.next_pool,
storage_source)) {
return false;
}
- jcr->impl->res.pool = jcr->impl->res.next_pool;
+ jcr->dir_impl->res.pool = jcr->dir_impl->res.next_pool;
Dmsg2(dbglevel, "Write pool=%s read rpool=%s\n",
- jcr->impl->res.pool->resource_name_,
- jcr->impl->res.rpool->resource_name_);
+ jcr->dir_impl->res.pool->resource_name_,
+ jcr->dir_impl->res.rpool->resource_name_);
return true;
}
@@ -315,8 +317,9 @@ static inline bool SameStorage(JobControlRecord* jcr)
{
StorageResource *read_store, *write_store;
- read_store = (StorageResource*)jcr->impl->res.read_storage_list->first();
- write_store = (StorageResource*)jcr->impl->res.write_storage_list->first();
+ read_store = (StorageResource*)jcr->dir_impl->res.read_storage_list->first();
+ write_store
+ = (StorageResource*)jcr->dir_impl->res.write_storage_list->first();
if (!read_store->autochanger && !write_store->autochanger
&& bstrcmp(read_store->resource_name_, write_store->resource_name_)) {
@@ -336,21 +339,22 @@ static inline void StartNewMigrationJob(JobControlRecord* jcr)
ua = new_ua_context(jcr);
ua->batch = true;
Mmsg(ua->cmd, "run job=\"%s\" jobid=%s ignoreduplicatecheck=yes",
- jcr->impl->res.job->resource_name_,
- edit_uint64(jcr->impl->MigrateJobId, ed1));
+ jcr->dir_impl->res.job->resource_name_,
+ edit_uint64(jcr->dir_impl->MigrateJobId, ed1));
// Make sure we have something to compare against.
- if (jcr->impl->res.pool) {
+ if (jcr->dir_impl->res.pool) {
// See if there was actually a pool override.
- if (jcr->impl->res.pool != jcr->impl->res.job->pool) {
- Mmsg(cmd, " pool=\"%s\"", jcr->impl->res.pool->resource_name_);
+ if (jcr->dir_impl->res.pool != jcr->dir_impl->res.job->pool) {
+ Mmsg(cmd, " pool=\"%s\"", jcr->dir_impl->res.pool->resource_name_);
PmStrcat(ua->cmd, cmd.c_str());
}
// See if there was actually a next pool override.
- if (jcr->impl->res.next_pool
- && jcr->impl->res.next_pool != jcr->impl->res.pool->NextPool) {
- Mmsg(cmd, " nextpool=\"%s\"", jcr->impl->res.next_pool->resource_name_);
+ if (jcr->dir_impl->res.next_pool
+ && jcr->dir_impl->res.next_pool != jcr->dir_impl->res.pool->NextPool) {
+ Mmsg(cmd, " nextpool=\"%s\"",
+ jcr->dir_impl->res.next_pool->resource_name_);
PmStrcat(ua->cmd, cmd.c_str());
}
}
@@ -532,7 +536,7 @@ static bool find_mediaid_then_jobids(JobControlRecord* jcr,
ids->count = 0;
// Basic query for MediaId
- Mmsg(query, query1, jcr->impl->res.rpool->resource_name_);
+ Mmsg(query, query1, jcr->dir_impl->res.rpool->resource_name_);
if (!jcr->db->SqlQuery(query.c_str(), UniqueDbidHandler, (void*)ids)) {
Jmsg(jcr, M_FATAL, 0, _("SQL failed. ERR=%s\n"), jcr->db->strerror());
return false;
@@ -572,9 +576,9 @@ static inline bool FindJobidsOfPoolUncopiedJobs(JobControlRecord* jcr,
}
Dmsg1(dbglevel, "copy selection pattern=%s\n",
- jcr->impl->res.rpool->resource_name_);
+ jcr->dir_impl->res.rpool->resource_name_);
Mmsg(query, sql_jobids_of_pool_uncopied_jobs,
- jcr->impl->res.rpool->resource_name_);
+ jcr->dir_impl->res.rpool->resource_name_);
Dmsg1(dbglevel, "get uncopied jobs query=%s\n", query.c_str());
if (!jcr->db->SqlQuery(query.c_str(), UniqueDbidHandler, (void*)ids)) {
Jmsg(jcr, M_FATAL, 0, _("SQL to get uncopied jobs failed. ERR=%s\n"),
@@ -601,16 +605,16 @@ static bool regex_find_jobids(JobControlRecord* jcr,
PoolMem query(PM_MESSAGE);
item_chain = new dlist<uitem>();
- if (!jcr->impl->res.job->selection_pattern) {
+ if (!jcr->dir_impl->res.job->selection_pattern) {
Jmsg(jcr, M_FATAL, 0, _("No %s %s selection pattern specified.\n"),
jcr->get_OperationName(), type);
goto bail_out;
}
Dmsg1(dbglevel, "regex-sel-pattern=%s\n",
- jcr->impl->res.job->selection_pattern);
+ jcr->dir_impl->res.job->selection_pattern);
// Basic query for names
- Mmsg(query, query1, jcr->impl->res.rpool->resource_name_);
+ Mmsg(query, query1, jcr->dir_impl->res.rpool->resource_name_);
Dmsg1(dbglevel, "get name query1=%s\n", query.c_str());
if (!jcr->db->SqlQuery(query.c_str(), UniqueNameHandler, (void*)item_chain)) {
Jmsg(jcr, M_FATAL, 0, _("SQL to get %s failed. ERR=%s\n"), type,
@@ -620,17 +624,18 @@ static bool regex_find_jobids(JobControlRecord* jcr,
Dmsg1(dbglevel, "query1 returned %d names\n", item_chain->size());
if (item_chain->size() == 0) {
Jmsg(jcr, M_INFO, 0, _("Query of Pool \"%s\" returned no Jobs to %s.\n"),
- jcr->impl->res.rpool->resource_name_, jcr->get_ActionName());
+ jcr->dir_impl->res.rpool->resource_name_, jcr->get_ActionName());
ok = true;
goto bail_out; /* skip regex match */
} else {
// Compile regex expression
- rc = regcomp(&preg, jcr->impl->res.job->selection_pattern, REG_EXTENDED);
+ rc = regcomp(&preg, jcr->dir_impl->res.job->selection_pattern,
+ REG_EXTENDED);
if (rc != 0) {
regerror(rc, &preg, prbuf, sizeof(prbuf));
Jmsg(jcr, M_FATAL, 0,
_("Could not compile regex pattern \"%s\" ERR=%s\n"),
- jcr->impl->res.job->selection_pattern, prbuf);
+ jcr->dir_impl->res.job->selection_pattern, prbuf);
goto bail_out;
}
@@ -674,7 +679,7 @@ static bool regex_find_jobids(JobControlRecord* jcr,
ids->count = 0;
foreach_dlist (item, item_chain) {
Dmsg2(dbglevel, "Got %s: %s\n", type, item->item);
- Mmsg(query, query2, item->item, jcr->impl->res.rpool->resource_name_);
+ Mmsg(query, query2, item->item, jcr->dir_impl->res.rpool->resource_name_);
Dmsg1(dbglevel, "get id from name query2=%s\n", query.c_str());
if (!jcr->db->SqlQuery(query.c_str(), UniqueDbidHandler, (void*)ids)) {
Jmsg(jcr, M_FATAL, 0, _("SQL failed. ERR=%s\n"), jcr->db->strerror());
@@ -729,7 +734,7 @@ static inline bool getJobs_to_migrate(JobControlRecord* jcr)
mid.list = NULL;
jids.list = NULL;
- switch (jcr->impl->res.job->selection_type) {
+ switch (jcr->dir_impl->res.job->selection_type) {
case MT_JOB:
if (!regex_find_jobids(jcr, &ids, sql_job, sql_jobids_from_job, "Job")) {
goto bail_out;
@@ -748,13 +753,13 @@ static inline bool getJobs_to_migrate(JobControlRecord* jcr)
}
break;
case MT_SQLQUERY:
- if (!jcr->impl->res.job->selection_pattern) {
+ if (!jcr->dir_impl->res.job->selection_pattern) {
Jmsg(jcr, M_FATAL, 0, _("No %s SQL selection pattern specified.\n"),
jcr->get_OperationName());
goto bail_out;
}
- Dmsg1(dbglevel, "SQL=%s\n", jcr->impl->res.job->selection_pattern);
- if (!jcr->db->SqlQuery(jcr->impl->res.job->selection_pattern,
+ Dmsg1(dbglevel, "SQL=%s\n", jcr->dir_impl->res.job->selection_pattern);
+ if (!jcr->db->SqlQuery(jcr->dir_impl->res.job->selection_pattern,
UniqueDbidHandler, (void*)&ids)) {
Jmsg(jcr, M_FATAL, 0, _("SQL failed. ERR=%s\n"), jcr->db->strerror());
goto bail_out;
@@ -785,7 +790,7 @@ static inline bool getJobs_to_migrate(JobControlRecord* jcr)
ctx.count = 0;
// Find count of bytes in pool
- Mmsg(query, sql_pool_bytes, jcr->impl->res.rpool->resource_name_);
+ Mmsg(query, sql_pool_bytes, jcr->dir_impl->res.rpool->resource_name_);
if (!jcr->db->SqlQuery(query.c_str(), db_int64_handler, (void*)&ctx)) {
Jmsg(jcr, M_FATAL, 0, _("SQL failed. ERR=%s\n"), jcr->db->strerror());
@@ -801,9 +806,9 @@ static inline bool getJobs_to_migrate(JobControlRecord* jcr)
pool_bytes = ctx.value;
Dmsg2(dbglevel, "highbytes=%lld pool=%lld\n",
- jcr->impl->res.rpool->MigrationHighBytes, pool_bytes);
+ jcr->dir_impl->res.rpool->MigrationHighBytes, pool_bytes);
- if (pool_bytes < (int64_t)jcr->impl->res.rpool->MigrationHighBytes) {
+ if (pool_bytes < (int64_t)jcr->dir_impl->res.rpool->MigrationHighBytes) {
Jmsg(jcr, M_INFO, 0, _("No Volumes found to %s.\n"),
jcr->get_ActionName());
retval = true;
@@ -814,7 +819,7 @@ static inline bool getJobs_to_migrate(JobControlRecord* jcr)
ids.count = 0;
// Find a list of MediaIds that could be migrated
- Mmsg(query, sql_mediaids, jcr->impl->res.rpool->resource_name_);
+ Mmsg(query, sql_mediaids, jcr->dir_impl->res.rpool->resource_name_);
Dmsg1(dbglevel, "query=%s\n", query.c_str());
if (!jcr->db->SqlQuery(query.c_str(), UniqueDbidHandler, (void*)&ids)) {
@@ -864,10 +869,11 @@ static inline bool getJobs_to_migrate(JobControlRecord* jcr)
Dmsg2(dbglevel, "Total %s Job bytes=%s\n", jcr->get_ActionName(),
edit_int64_with_commas(ctx.value, ed1));
Dmsg2(dbglevel, "lowbytes=%s poolafter=%s\n",
- edit_int64_with_commas(jcr->impl->res.rpool->MigrationLowBytes,
- ed1),
+ edit_int64_with_commas(
+ jcr->dir_impl->res.rpool->MigrationLowBytes, ed1),
edit_int64_with_commas(pool_bytes, ed2));
- if (pool_bytes <= (int64_t)jcr->impl->res.rpool->MigrationLowBytes) {
+ if (pool_bytes
+ <= (int64_t)jcr->dir_impl->res.rpool->MigrationLowBytes) {
Dmsg0(dbglevel, "We should be done.\n");
break;
}
@@ -883,11 +889,11 @@ static inline bool getJobs_to_migrate(JobControlRecord* jcr)
time_t ttime;
char dt[MAX_TIME_LENGTH];
- ttime = time(NULL) - (time_t)jcr->impl->res.rpool->MigrationTime;
+ ttime = time(NULL) - (time_t)jcr->dir_impl->res.rpool->MigrationTime;
bstrutime(dt, sizeof(dt), ttime);
ids.count = 0;
- Mmsg(query, sql_pool_time, jcr->impl->res.rpool->resource_name_, dt);
+ Mmsg(query, sql_pool_time, jcr->dir_impl->res.rpool->resource_name_, dt);
Dmsg1(dbglevel, "query=%s\n", query.c_str());
if (!jcr->db->SqlQuery(query.c_str(), UniqueDbidHandler, (void*)&ids)) {
@@ -927,8 +933,8 @@ static inline bool getJobs_to_migrate(JobControlRecord* jcr)
Dmsg2(dbglevel, "Before loop count=%d ids=%s\n", ids.count, ids.list);
// Note: to not over load the system, limit the number of new jobs started.
- if (jcr->impl->res.job->MaxConcurrentCopies) {
- limit = jcr->impl->res.job->MaxConcurrentCopies;
+ if (jcr->dir_impl->res.job->MaxConcurrentCopies) {
+ limit = jcr->dir_impl->res.job->MaxConcurrentCopies;
apply_limit = true;
}
@@ -946,7 +952,7 @@ static inline bool getJobs_to_migrate(JobControlRecord* jcr)
retval = true;
goto bail_out;
}
- jcr->impl->MigrateJobId = JobId;
+ jcr->dir_impl->MigrateJobId = JobId;
if (apply_limit) {
// Don't start any more when limit reaches zero
@@ -958,7 +964,7 @@ static inline bool getJobs_to_migrate(JobControlRecord* jcr)
Dmsg0(dbglevel, "Back from StartNewMigrationJob\n");
}
- jcr->impl->HasSelectedJobs = true;
+ jcr->dir_impl->HasSelectedJobs = true;
retval = true;
bail_out:
@@ -992,9 +998,9 @@ bool DoMigrationInit(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) {
+ jcr->dir_impl->jr.PoolId
+ = GetOrCreatePoolRecord(jcr, jcr->dir_impl->res.pool->resource_name_);
+ if (jcr->dir_impl->jr.PoolId == 0) {
Dmsg1(dbglevel, "JobId=%d no PoolId\n", (int)jcr->JobId);
Jmsg(jcr, M_FATAL, 0, _("Could not get or create a Pool record.\n"));
return false;
@@ -1006,50 +1012,53 @@ bool DoMigrationInit(JobControlRecord* jcr)
* pool will be changed to point to the write pool,
* which comes from pool->NextPool.
*/
- jcr->impl->res.rpool = jcr->impl->res.pool; /* save read pool */
- PmStrcpy(jcr->impl->res.rpool_source, jcr->impl->res.pool_source);
+ jcr->dir_impl->res.rpool = jcr->dir_impl->res.pool; /* save read pool */
+ PmStrcpy(jcr->dir_impl->res.rpool_source, jcr->dir_impl->res.pool_source);
Dmsg2(dbglevel, "Read pool=%s (From %s)\n",
- jcr->impl->res.rpool->resource_name_, jcr->impl->res.rpool_source);
+ jcr->dir_impl->res.rpool->resource_name_,
+ jcr->dir_impl->res.rpool_source);
/*
* See if this is a control job e.g. the one that selects the Jobs to Migrate
* or Copy or one of the worker Jobs that do the actual Migration or Copy. If
- * jcr->impl_->MigrateJobId is set we know that its an actual Migration or
+ * jcr->dir_impl_->MigrateJobId is set we know that its an actual Migration or
* Copy Job.
*/
- if (jcr->impl->MigrateJobId != 0) {
+ if (jcr->dir_impl->MigrateJobId != 0) {
Dmsg1(dbglevel, "At Job start previous jobid=%u\n",
- jcr->impl->MigrateJobId);
+ jcr->dir_impl->MigrateJobId);
- jcr->impl->previous_jr.JobId = jcr->impl->MigrateJobId;
- Dmsg1(dbglevel, "Previous jobid=%d\n", (int)jcr->impl->previous_jr.JobId);
+ jcr->dir_impl->previous_jr.JobId = jcr->dir_impl->MigrateJobId;
+ Dmsg1(dbglevel, "Previous jobid=%d\n",
+ (int)jcr->dir_impl->previous_jr.JobId);
- if (!jcr->db->GetJobRecord(jcr, &jcr->impl->previous_jr)) {
+ if (!jcr->db->GetJobRecord(jcr, &jcr->dir_impl->previous_jr)) {
Jmsg(jcr, M_FATAL, 0,
_("Could not get job record for JobId %s to %s. ERR=%s\n"),
- edit_int64(jcr->impl->previous_jr.JobId, ed1), jcr->get_ActionName(),
- jcr->db->strerror());
+ edit_int64(jcr->dir_impl->previous_jr.JobId, ed1),
+ jcr->get_ActionName(), jcr->db->strerror());
return false;
}
Jmsg(jcr, M_INFO, 0, _("%s using JobId=%s Job=%s\n"),
jcr->get_OperationName(),
- edit_int64(jcr->impl->previous_jr.JobId, ed1),
- jcr->impl->previous_jr.Job);
+ edit_int64(jcr->dir_impl->previous_jr.JobId, ed1),
+ jcr->dir_impl->previous_jr.Job);
Dmsg4(dbglevel, "%s JobId=%d using JobId=%s Job=%s\n",
jcr->get_OperationName(), jcr->JobId,
- edit_int64(jcr->impl->previous_jr.JobId, ed1),
- jcr->impl->previous_jr.Job);
+ edit_int64(jcr->dir_impl->previous_jr.JobId, ed1),
+ jcr->dir_impl->previous_jr.Job);
if (CreateRestoreBootstrapFile(jcr) < 0) {
Jmsg(jcr, M_FATAL, 0, _("Create bootstrap file failed.\n"));
return false;
}
- if (jcr->impl->previous_jr.JobId == 0 || jcr->impl->ExpectedFiles == 0) {
+ if (jcr->dir_impl->previous_jr.JobId == 0
+ || jcr->dir_impl->ExpectedFiles == 0) {
jcr->setJobStatusWithPriorityCheck(JS_Terminated);
Dmsg1(dbglevel, "JobId=%d expected files == 0\n", (int)jcr->JobId);
- if (jcr->impl->previous_jr.JobId == 0) {
+ if (jcr->dir_impl->previous_jr.JobId == 0) {
Jmsg(jcr, M_INFO, 0, _("No previous Job found to %s.\n"),
jcr->get_ActionName());
} else {
@@ -1061,22 +1070,23 @@ bool DoMigrationInit(JobControlRecord* jcr)
}
Dmsg5(dbglevel, "JobId=%d: Current: Name=%s JobId=%d Type=%c Level=%c\n",
- (int)jcr->JobId, jcr->impl->jr.Name, (int)jcr->impl->jr.JobId,
- jcr->impl->jr.JobType, jcr->impl->jr.JobLevel);
+ (int)jcr->JobId, jcr->dir_impl->jr.Name, (int)jcr->dir_impl->jr.JobId,
+ jcr->dir_impl->jr.JobType, jcr->dir_impl->jr.JobLevel);
- job = (JobResource*)my_config->GetResWithName(R_JOB, jcr->impl->jr.Name);
+ job = (JobResource*)my_config->GetResWithName(R_JOB,
+ jcr->dir_impl->jr.Name);
prev_job = (JobResource*)my_config->GetResWithName(
- R_JOB, jcr->impl->previous_jr.Name);
+ R_JOB, jcr->dir_impl->previous_jr.Name);
if (!job) {
Jmsg(jcr, M_FATAL, 0, _("Job resource not found for \"%s\".\n"),
- jcr->impl->jr.Name);
+ jcr->dir_impl->jr.Name);
return false;
}
if (!prev_job) {
Jmsg(jcr, M_FATAL, 0, _("Previous Job resource not found for \"%s\".\n"),
- jcr->impl->previous_jr.Name);
+ jcr->dir_impl->previous_jr.Name);
return false;
}
@@ -1091,29 +1101,33 @@ bool DoMigrationInit(JobControlRecord* jcr)
* If the current Job has no explicit client set use the client setting of
* the previous Job.
*/
- if (!jcr->impl->res.client && prev_job->client) {
- jcr->impl->res.client = prev_job->client;
+ if (!jcr->dir_impl->res.client && prev_job->client) {
+ jcr->dir_impl->res.client = prev_job->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_);
}
/*
* If the current Job has no explicit fileset set use the client setting of
* the previous Job.
*/
- if (!jcr->impl->res.fileset) { jcr->impl->res.fileset = prev_job->fileset; }
+ if (!jcr->dir_impl->res.fileset) {
+ jcr->dir_impl->res.fileset = prev_job->fileset;
+ }
/*
* See if spooling data is not enabled yet. If so turn on spooling if
* requested in job
*/
- if (!jcr->impl->spool_data) { jcr->impl->spool_data = job->spool_data; }
+ if (!jcr->dir_impl->spool_data) {
+ jcr->dir_impl->spool_data = job->spool_data;
+ }
// Create a migration jcr
mig_jcr = NewDirectorJcr(DirdFreeJcr);
- jcr->impl->mig_jcr = mig_jcr;
- memcpy(&mig_jcr->impl->previous_jr, &jcr->impl->previous_jr,
- sizeof(mig_jcr->impl->previous_jr));
+ jcr->dir_impl->mig_jcr = mig_jcr;
+ memcpy(&mig_jcr->dir_impl->previous_jr, &jcr->dir_impl->previous_jr,
+ sizeof(mig_jcr->dir_impl->previous_jr));
/*
* Turn the mig_jcr into a "real" job that takes on the aspects of
@@ -1129,17 +1143,17 @@ bool DoMigrationInit(JobControlRecord* jcr)
SetJcrDefaults(mig_jcr, prev_job);
// Time value on this Job
- mig_jcr->impl->no_maxtime = true;
+ mig_jcr->dir_impl->no_maxtime = true;
// Don't check for duplicates on migration and copy jobs
- mig_jcr->impl->IgnoreDuplicateJobChecking = true;
+ mig_jcr->dir_impl->IgnoreDuplicateJobChecking = true;
/*
* Copy some overwrites back from the Control Job to the migration and copy
* job.
*/
- mig_jcr->impl->spool_data = jcr->impl->spool_data;
- mig_jcr->impl->spool_size = jcr->impl->spool_size;
+ mig_jcr->dir_impl->spool_data = jcr->dir_impl->spool_data;
+ mig_jcr->dir_impl->spool_size = jcr->dir_impl->spool_size;
if (!SetupJob(mig_jcr, true)) {
@@ -1151,21 +1165,21 @@ bool DoMigrationInit(JobControlRecord* jcr)
mig_jcr->cjcr = jcr;
// Now reset the job record from the previous job
- memcpy(&mig_jcr->impl->jr, &jcr->impl->previous_jr,
- sizeof(mig_jcr->impl->jr));
+ memcpy(&mig_jcr->dir_impl->jr, &jcr->dir_impl->previous_jr,
+ sizeof(mig_jcr->dir_impl->jr));
// Update the jr to reflect the new values of PoolId and JobId.
- mig_jcr->impl->jr.PoolId = jcr->impl->jr.PoolId;
- mig_jcr->impl->jr.JobId = mig_jcr->JobId;
+ mig_jcr->dir_impl->jr.PoolId = jcr->dir_impl->jr.PoolId;
+ mig_jcr->dir_impl->jr.JobId = mig_jcr->JobId;
if (SetMigrationNextPool(jcr, &pool)) {
// If pool storage specified, use it as source
CopyRstorage(mig_jcr, pool->storage, _("Pool resource"));
CopyRstorage(jcr, pool->storage, _("Pool resource"));
- mig_jcr->impl->res.pool = jcr->impl->res.pool;
- mig_jcr->impl->res.next_pool = jcr->impl->res.next_pool;
- mig_jcr->impl->jr.PoolId = jcr->impl->jr.PoolId;
+ mig_jcr->dir_impl->res.pool = jcr->dir_impl->res.pool;
+ mig_jcr->dir_impl->res.next_pool = jcr->dir_impl->res.next_pool;
+ mig_jcr->dir_impl->jr.PoolId = jcr->dir_impl->jr.PoolId;
}
/*
@@ -1173,7 +1187,7 @@ bool DoMigrationInit(JobControlRecord* jcr)
* This only happens when the original pool used doesn't have an explicit
* storage.
*/
- if (!jcr->impl->res.read_storage_list) {
+ if (!jcr->dir_impl->res.read_storage_list) {
CopyRstorage(jcr, prev_job->storage, _("previous Job"));
}
@@ -1183,16 +1197,16 @@ bool DoMigrationInit(JobControlRecord* jcr)
* otherwise we open a connection to the reading SD and a second
* one to the writing SD.
*/
- jcr->impl->remote_replicate = !IsSameStorageDaemon(
- jcr->impl->res.read_storage, jcr->impl->res.write_storage);
+ jcr->dir_impl->remote_replicate = !IsSameStorageDaemon(
+ jcr->dir_impl->res.read_storage, jcr->dir_impl->res.write_storage);
// set the JobLevel to what the original job was
- mig_jcr->setJobLevel(mig_jcr->impl->previous_jr.JobLevel);
+ mig_jcr->setJobLevel(mig_jcr->dir_impl->previous_jr.JobLevel);
Dmsg4(dbglevel, "mig_jcr: Name=%s JobId=%d Type=%c Level=%c\n",
- mig_jcr->impl->jr.Name, (int)mig_jcr->impl->jr.JobId,
- mig_jcr->impl->jr.JobType, mig_jcr->impl->jr.JobLevel);
+ mig_jcr->dir_impl->jr.Name, (int)mig_jcr->dir_impl->jr.JobId,
+ mig_jcr->dir_impl->jr.JobType, mig_jcr->dir_impl->jr.JobLevel);
}
return true;
@@ -1230,17 +1244,17 @@ static inline bool DoActualMigration(JobControlRecord* jcr)
{
char ed1[100];
bool retval = false;
- JobControlRecord* mig_jcr = jcr->impl->mig_jcr;
+ JobControlRecord* mig_jcr = jcr->dir_impl->mig_jcr;
ASSERT(mig_jcr);
// Make sure this job was not already migrated
- if (jcr->impl->previous_jr.JobType != JT_BACKUP
- && jcr->impl->previous_jr.JobType != JT_JOB_COPY
- && jcr->impl->previous_jr.JobType != JT_ARCHIVE) {
+ if (jcr->dir_impl->previous_jr.JobType != JT_BACKUP
+ && jcr->dir_impl->previous_jr.JobType != JT_JOB_COPY
+ && jcr->dir_impl->previous_jr.JobType != JT_ARCHIVE) {
Jmsg(jcr, M_INFO, 0,
_("JobId %s already %s probably by another Job. %s stopped.\n"),
- edit_int64(jcr->impl->previous_jr.JobId, ed1),
+ edit_int64(jcr->dir_impl->previous_jr.JobId, ed1),
jcr->get_ActionName(true), jcr->get_OperationName());
jcr->setJobStatusWithPriorityCheck(JS_Terminated);
MigrationCleanup(jcr, jcr->getJobStatus());
@@ -1250,7 +1264,7 @@ static inline bool DoActualMigration(JobControlRecord* jcr)
if (SameStorage(jcr)) {
Jmsg(jcr, M_FATAL, 0,
_("JobId %s cannot %s using the same read and write storage.\n"),
- edit_int64(jcr->impl->previous_jr.JobId, ed1),
+ edit_int64(jcr->dir_impl->previous_jr.JobId, ed1),
jcr->get_OperationName());
jcr->setJobStatusWithPriorityCheck(JS_Terminated);
MigrationCleanup(jcr, jcr->getJobStatus());
@@ -1268,12 +1282,12 @@ static inline bool DoActualMigration(JobControlRecord* jcr)
if (HasPairedStorage(jcr)) { SetPairedStorage(jcr); }
Dmsg2(dbglevel, "Read store=%s, write store=%s\n",
- ((StorageResource*)jcr->impl->res.read_storage_list->first())
+ ((StorageResource*)jcr->dir_impl->res.read_storage_list->first())
->resource_name_,
- ((StorageResource*)jcr->impl->res.write_storage_list->first())
+ ((StorageResource*)jcr->dir_impl->res.write_storage_list->first())
->resource_name_);
- if (jcr->impl->remote_replicate) {
+ if (jcr->dir_impl->remote_replicate) {
alist<StorageResource*>* write_storage_list;
/*
@@ -1283,12 +1297,12 @@ static inline bool DoActualMigration(JobControlRecord* jcr)
* - Writing Storage Daemon bandwidth limiting
* - Reading Storage Daemon bandwidth limiting
*/
- if (jcr->impl->res.job->max_bandwidth > 0) {
- jcr->max_bandwidth = jcr->impl->res.job->max_bandwidth;
- } else if (jcr->impl->res.write_storage->max_bandwidth > 0) {
- jcr->max_bandwidth = jcr->impl->res.write_storage->max_bandwidth;
- } else if (jcr->impl->res.read_storage->max_bandwidth > 0) {
- jcr->max_bandwidth = jcr->impl->res.read_storage->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.write_storage->max_bandwidth > 0) {
+ jcr->max_bandwidth = jcr->dir_impl->res.write_storage->max_bandwidth;
+ } else if (jcr->dir_impl->res.read_storage->max_bandwidth > 0) {
+ jcr->max_bandwidth = jcr->dir_impl->res.read_storage->max_bandwidth;
}
// Open a message channel connection to the Reading Storage daemon.
@@ -1299,13 +1313,14 @@ static inline bool DoActualMigration(JobControlRecord* jcr)
* the jcr is connected to the reading storage daemon and the
* mig_jcr to the writing storage daemon.
*/
- mig_jcr->impl->res.write_storage = jcr->impl->res.write_storage;
- jcr->impl->res.write_storage = NULL;
+ mig_jcr->dir_impl->res.write_storage = jcr->dir_impl->res.write_storage;
+ jcr->dir_impl->res.write_storage = NULL;
// Swap the write_storage_list between the jcr and the mig_jcr.
- write_storage_list = mig_jcr->impl->res.write_storage_list;
- mig_jcr->impl->res.write_storage_list = jcr->impl->res.write_storage_list;
- jcr->impl->res.write_storage_list = write_storage_list;
+ write_storage_list = mig_jcr->dir_impl->res.write_storage_list;
+ mig_jcr->dir_impl->res.write_storage_list
+ = jcr->dir_impl->res.write_storage_list;
+ jcr->dir_impl->res.write_storage_list = write_storage_list;
// Start conversation with Reading Storage daemon
jcr->setJobStatusWithPriorityCheck(JS_WaitSD);
@@ -1323,7 +1338,7 @@ static inline bool DoActualMigration(JobControlRecord* jcr)
}
// Now start a job with the Reading Storage daemon
- if (!StartStorageDaemonJob(jcr, jcr->impl->res.read_storage_list, NULL,
+ if (!StartStorageDaemonJob(jcr, jcr->dir_impl->res.read_storage_list, NULL,
/* send_bsr */ true)) {
goto bail_out;
}
@@ -1333,7 +1348,7 @@ static inline bool DoActualMigration(JobControlRecord* jcr)
// Now start a job with the Writing Storage daemon
if (!StartStorageDaemonJob(mig_jcr, NULL,
- mig_jcr->impl->res.write_storage_list,
+ mig_jcr->dir_impl->res.write_storage_list,
/* send_bsr */ false)) {
goto bail_out;
}
@@ -1354,8 +1369,8 @@ static inline bool DoActualMigration(JobControlRecord* jcr)
}
// Now start a job with the Storage daemon
- if (!StartStorageDaemonJob(jcr, jcr->impl->res.read_storage_list,
- jcr->impl->res.write_storage_list,
+ if (!StartStorageDaemonJob(jcr, jcr->dir_impl->res.read_storage_list,
+ jcr->dir_impl->res.write_storage_list,
/* send_bsr */ true)) {
FreePairedStorage(jcr);
return false;
@@ -1375,12 +1390,12 @@ static inline bool DoActualMigration(JobControlRecord* jcr)
* is after the start of this run.
*/
jcr->start_time = time(NULL);
- jcr->impl->jr.StartTime = jcr->start_time;
- jcr->impl->jr.JobTDate = jcr->start_time;
+ jcr->dir_impl->jr.StartTime = jcr->start_time;
+ jcr->dir_impl->jr.JobTDate = jcr->start_time;
jcr->setJobStatusWithPriorityCheck(JS_Running);
// Update job start record for this migration control job
- 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());
goto bail_out;
}
@@ -1389,28 +1404,28 @@ static inline bool DoActualMigration(JobControlRecord* jcr)
jcr->setJobStarted();
mig_jcr->start_time = time(NULL);
- mig_jcr->impl->jr.StartTime = mig_jcr->start_time;
- mig_jcr->impl->jr.JobTDate = mig_jcr->start_time;
+ mig_jcr->dir_impl->jr.StartTime = mig_jcr->start_time;
+ mig_jcr->dir_impl->jr.JobTDate = mig_jcr->start_time;
mig_jcr->setJobStatusWithPriorityCheck(JS_Running);
// Update job start record for the real migration backup job
- if (!mig_jcr->db->UpdateJobStartRecord(mig_jcr, &mig_jcr->impl->jr)) {
+ if (!mig_jcr->db->UpdateJobStartRecord(mig_jcr, &mig_jcr->dir_impl->jr)) {
Jmsg(jcr, M_FATAL, 0, "%s", mig_jcr->db->strerror());
goto bail_out;
}
Dmsg4(dbglevel, "mig_jcr: Name=%s JobId=%d Type=%c Level=%c\n",
- mig_jcr->impl->jr.Name, (int)mig_jcr->impl->jr.JobId,
- mig_jcr->impl->jr.JobType, mig_jcr->impl->jr.JobLevel);
+ mig_jcr->dir_impl->jr.Name, (int)mig_jcr->dir_impl->jr.JobId,
+ mig_jcr->dir_impl->jr.JobType, mig_jcr->dir_impl->jr.JobLevel);
/*
* If we are connected to two different SDs tell the writing one
* to be ready to receive the data and tell the reading one
* to replicate to the other.
*/
- if (jcr->impl->remote_replicate) {
- StorageResource* write_storage = mig_jcr->impl->res.write_storage;
- StorageResource* read_storage = jcr->impl->res.read_storage;
+ if (jcr->dir_impl->remote_replicate) {
+ StorageResource* write_storage = mig_jcr->dir_impl->res.write_storage;
+ StorageResource* read_storage = jcr->dir_impl->res.read_storage;
PoolMem command(PM_MESSAGE);
uint32_t tls_need = 0;
@@ -1464,27 +1479,28 @@ static inline bool DoActualMigration(JobControlRecord* jcr)
* mig_jcr->JobFiles/ReadBytes/JobBytes/JobErrors when replicating to
* a remote storage daemon.
*/
- if (jcr->impl->remote_replicate) {
+ if (jcr->dir_impl->remote_replicate) {
WaitForStorageDaemonTermination(jcr);
WaitForStorageDaemonTermination(mig_jcr);
- jcr->setJobStatusWithPriorityCheck(jcr->impl->SDJobStatus);
+ jcr->setJobStatusWithPriorityCheck(jcr->dir_impl->SDJobStatus);
if (mig_jcr->batch_started) {
mig_jcr->db_batch->WriteBatchFileRecords(mig_jcr);
}
} else {
WaitForStorageDaemonTermination(jcr);
- jcr->setJobStatusWithPriorityCheck(jcr->impl->SDJobStatus);
+ jcr->setJobStatusWithPriorityCheck(jcr->dir_impl->SDJobStatus);
if (jcr->batch_started) { jcr->db_batch->WriteBatchFileRecords(jcr); }
}
bail_out:
- if (jcr->impl->remote_replicate && mig_jcr) {
+ if (jcr->dir_impl->remote_replicate && mig_jcr) {
alist<StorageResource*>* write_storage_list;
// Swap the write_storage_list between the jcr and the mig_jcr.
- write_storage_list = mig_jcr->impl->res.write_storage_list;
- mig_jcr->impl->res.write_storage_list = jcr->impl->res.write_storage_list;
- jcr->impl->res.write_storage_list = write_storage_list;
+ write_storage_list = mig_jcr->dir_impl->res.write_storage_list;
+ mig_jcr->dir_impl->res.write_storage_list
+ = jcr->dir_impl->res.write_storage_list;
+ jcr->dir_impl->res.write_storage_list = write_storage_list;
/*
* Undo the clear of the write_storage in the jcr and assign the mig_jcr
@@ -1494,8 +1510,8 @@ bail_out:
* the ConnectToStorageDaemon function will do the right thing e.g. connect
* the jcrs in the way we want them to.
*/
- jcr->impl->res.write_storage = mig_jcr->impl->res.write_storage;
- mig_jcr->impl->res.write_storage = NULL;
+ jcr->dir_impl->res.write_storage = mig_jcr->dir_impl->res.write_storage;
+ mig_jcr->dir_impl->res.write_storage = NULL;
}
FreePairedStorage(jcr);
@@ -1529,9 +1545,9 @@ bool DoMigration(JobControlRecord* jcr)
/*
* See if this is a control job e.g. the one that selects the Jobs to Migrate
* or Copy or one of the worker Jobs that do the actual Migration or Copy. If
- * jcr->impl_->MigrateJobId is unset we know that its the control job.
+ * jcr->dir_impl_->MigrateJobId is unset we know that its the control job.
*/
- if (jcr->impl->MigrateJobId == 0) {
+ if (jcr->dir_impl->MigrateJobId == 0) {
return DoMigrationSelection(jcr);
} else {
return DoActualMigration(jcr);
@@ -1545,7 +1561,7 @@ static inline void GenerateMigrateSummary(JobControlRecord* jcr,
{
double kbps;
utime_t RunTime;
- JobControlRecord* mig_jcr = jcr->impl->mig_jcr;
+ JobControlRecord* mig_jcr = jcr->dir_impl->mig_jcr;
char term_code[100], sd_term_msg[100];
char sdt[MAX_TIME_LENGTH], edt[MAX_TIME_LENGTH];
char ec1[30], ec2[30], ec3[30], ec4[30], ec5[30], elapsed[50];
@@ -1553,17 +1569,18 @@ static inline void GenerateMigrateSummary(JobControlRecord* jcr,
Bsnprintf(term_code, sizeof(term_code), TermMsg, jcr->get_OperationName(),
jcr->get_ActionName());
- 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(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;
- JobstatusToAscii(jcr->impl->SDJobStatus, sd_term_msg, sizeof(sd_term_msg));
- if (jcr->impl->previous_jr.JobId != 0) {
+ JobstatusToAscii(jcr->dir_impl->SDJobStatus, sd_term_msg,
+ sizeof(sd_term_msg));
+ if (jcr->dir_impl->previous_jr.JobId != 0) {
// Copy/Migrate worker Job.
if (RunTime <= 0) {
kbps = 0;
} else {
- kbps = (double)jcr->impl->SDJobBytes / (1000 * RunTime);
+ kbps = (double)jcr->dir_impl->SDJobBytes / (1000 * RunTime);
}
Jmsg(jcr, msg_type, 0,
@@ -1601,38 +1618,42 @@ static inline void GenerateMigrateSummary(JobControlRecord* jcr,
" Termination: %s\n\n"),
BAREOS, my_name, kBareosVersionStrings.Full,
kBareosVersionStrings.ShortDate, kBareosVersionStrings.GetOsInfo(),
- edit_uint64(jcr->impl->previous_jr.JobId, ec6),
- jcr->impl->previous_jr.Job,
- mig_jcr ? edit_uint64(mig_jcr->impl->jr.JobId, ec7) : _("*None*"),
- edit_uint64(jcr->impl->jr.JobId, ec8), jcr->impl->jr.Job,
+ edit_uint64(jcr->dir_impl->previous_jr.JobId, ec6),
+ jcr->dir_impl->previous_jr.Job,
+ mig_jcr ? edit_uint64(mig_jcr->dir_impl->jr.JobId, ec7) : _("*None*"),
+ edit_uint64(jcr->dir_impl->jr.JobId, ec8), jcr->dir_impl->jr.Job,
JobLevelToString(jcr->getJobLevel()),
- jcr->impl->res.client ? jcr->impl->res.client->resource_name_
- : _("*None*"),
- jcr->impl->res.fileset ? jcr->impl->res.fileset->resource_name_
- : _("*None*"),
- jcr->impl->res.rpool->resource_name_, jcr->impl->res.rpool_source,
- jcr->impl->res.read_storage
- ? jcr->impl->res.read_storage->resource_name_
+ jcr->dir_impl->res.client ? jcr->dir_impl->res.client->resource_name_
+ : _("*None*"),
+ jcr->dir_impl->res.fileset ? jcr->dir_impl->res.fileset->resource_name_
+ : _("*None*"),
+ jcr->dir_impl->res.rpool->resource_name_,
+ jcr->dir_impl->res.rpool_source,
+ jcr->dir_impl->res.read_storage
+ ? jcr->dir_impl->res.read_storage->resource_name_
+ : _("*None*"),
+ NPRT(jcr->dir_impl->res.rstore_source),
+ jcr->dir_impl->res.pool->resource_name_,
+ jcr->dir_impl->res.pool_source,
+ jcr->dir_impl->res.write_storage
+ ? jcr->dir_impl->res.write_storage->resource_name_
: _("*None*"),
- NPRT(jcr->impl->res.rstore_source),
- jcr->impl->res.pool->resource_name_, jcr->impl->res.pool_source,
- jcr->impl->res.write_storage
- ? jcr->impl->res.write_storage->resource_name_
+ NPRT(jcr->dir_impl->res.wstore_source),
+ jcr->dir_impl->res.next_pool
+ ? jcr->dir_impl->res.next_pool->resource_name_
: _("*None*"),
- NPRT(jcr->impl->res.wstore_source),
- jcr->impl->res.next_pool ? jcr->impl->res.next_pool->resource_name_
- : _("*None*"),
- NPRT(jcr->impl->res.npool_source),
- jcr->impl->res.catalog->resource_name_, jcr->impl->res.catalog_source,
- sdt, edt, edit_utime(RunTime, elapsed, sizeof(elapsed)),
- jcr->JobPriority, edit_uint64_with_commas(jcr->impl->SDJobFiles, ec1),
- edit_uint64_with_commas(jcr->impl->SDJobBytes, ec2),
- edit_uint64_with_suffix(jcr->impl->SDJobBytes, ec3), (float)kbps,
+ NPRT(jcr->dir_impl->res.npool_source),
+ jcr->dir_impl->res.catalog->resource_name_,
+ jcr->dir_impl->res.catalog_source, sdt, edt,
+ edit_utime(RunTime, elapsed, sizeof(elapsed)), jcr->JobPriority,
+ edit_uint64_with_commas(jcr->dir_impl->SDJobFiles, ec1),
+ edit_uint64_with_commas(jcr->dir_impl->SDJobBytes, ec2),
+ edit_uint64_with_suffix(jcr->dir_impl->SDJobBytes, ec3), (float)kbps,
mig_jcr ? mig_jcr->VolumeName : _("*None*"), jcr->VolSessionId,
jcr->VolSessionTime, edit_uint64_with_commas(mr->VolBytes, ec4),
- edit_uint64_with_suffix(mr->VolBytes, ec5), jcr->impl->SDErrors,
+ edit_uint64_with_suffix(mr->VolBytes, ec5), jcr->dir_impl->SDErrors,
sd_term_msg, kBareosVersionStrings.JoblogMessage,
- JobTriggerToString(jcr->impl->job_trigger).c_str(), term_code);
+ JobTriggerToString(jcr->dir_impl->job_trigger).c_str(), term_code);
} else {
// Copy/Migrate selection only Job.
Jmsg(jcr, msg_type, 0,
@@ -1650,11 +1671,12 @@ static inline void GenerateMigrateSummary(JobControlRecord* jcr,
" Termination: %s\n\n"),
BAREOS, my_name, kBareosVersionStrings.Full,
kBareosVersionStrings.ShortDate, kBareosVersionStrings.GetOsInfo(),
- edit_uint64(jcr->impl->jr.JobId, ec8), jcr->impl->jr.Job,
- jcr->impl->res.catalog->resource_name_, jcr->impl->res.catalog_source,
- sdt, edt, edit_utime(RunTime, elapsed, sizeof(elapsed)),
- jcr->JobPriority, kBareosVersionStrings.JoblogMessage,
- JobTriggerToString(jcr->impl->job_trigger).c_str(), term_code);
+ edit_uint64(jcr->dir_impl->jr.JobId, ec8), jcr->dir_impl->jr.Job,
+ jcr->dir_impl->res.catalog->resource_name_,
+ jcr->dir_impl->res.catalog_source, sdt, edt,
+ edit_utime(RunTime, elapsed, sizeof(elapsed)), jcr->JobPriority,
+ kBareosVersionStrings.JoblogMessage,
+ JobTriggerToString(jcr->dir_impl->job_trigger).c_str(), term_code);
}
}
@@ -1665,7 +1687,7 @@ void MigrationCleanup(JobControlRecord* jcr, int TermCode)
const char* TermMsg;
int msg_type = M_INFO;
MediaDbRecord mr;
- JobControlRecord* mig_jcr = jcr->impl->mig_jcr;
+ JobControlRecord* mig_jcr = jcr->dir_impl->mig_jcr;
PoolMem query(PM_MESSAGE);
Dmsg2(100, "Enter migrate_cleanup %d %c\n", TermCode, TermCode);
@@ -1680,8 +1702,8 @@ void MigrationCleanup(JobControlRecord* jcr, int TermCode)
char old_jobid[50], new_jobid[50];
- edit_uint64(jcr->impl->previous_jr.JobId, old_jobid);
- edit_uint64(mig_jcr->impl->jr.JobId, new_jobid);
+ edit_uint64(jcr->dir_impl->previous_jr.JobId, old_jobid);
+ edit_uint64(mig_jcr->dir_impl->jr.JobId, new_jobid);
// use the PriorJobId field to store the migrated jobid in order to keep
// track of it
@@ -1694,20 +1716,20 @@ void MigrationCleanup(JobControlRecord* jcr, int TermCode)
* the jobfiles and jobbytes and the new volsessionid
* and volsessiontime as the writing SD generates this info.
*/
- if (jcr->impl->remote_replicate) {
- mig_jcr->JobFiles = jcr->JobFiles = mig_jcr->impl->SDJobFiles;
- mig_jcr->JobBytes = jcr->JobBytes = mig_jcr->impl->SDJobBytes;
+ if (jcr->dir_impl->remote_replicate) {
+ mig_jcr->JobFiles = jcr->JobFiles = mig_jcr->dir_impl->SDJobFiles;
+ mig_jcr->JobBytes = jcr->JobBytes = mig_jcr->dir_impl->SDJobBytes;
} else {
- mig_jcr->JobFiles = jcr->JobFiles = jcr->impl->SDJobFiles;
- mig_jcr->JobBytes = jcr->JobBytes = jcr->impl->SDJobBytes;
+ mig_jcr->JobFiles = jcr->JobFiles = jcr->dir_impl->SDJobFiles;
+ mig_jcr->JobBytes = jcr->JobBytes = jcr->dir_impl->SDJobBytes;
mig_jcr->VolSessionId = jcr->VolSessionId;
mig_jcr->VolSessionTime = jcr->VolSessionTime;
}
- mig_jcr->impl->jr.RealEndTime = 0;
- mig_jcr->impl->jr.PriorJobId = jcr->impl->previous_jr.JobId;
+ mig_jcr->dir_impl->jr.RealEndTime = 0;
+ mig_jcr->dir_impl->jr.PriorJobId = jcr->dir_impl->previous_jr.JobId;
if (jcr->is_JobStatus(JS_Terminated)
- && (jcr->JobErrors || jcr->impl->SDErrors)) {
+ && (jcr->JobErrors || jcr->dir_impl->SDErrors)) {
TermCode = JS_Warnings;
}
@@ -1717,8 +1739,9 @@ void MigrationCleanup(JobControlRecord* jcr, int TermCode)
Mmsg(query,
"UPDATE Job SET StartTime='%s',EndTime='%s',"
"JobTDate=%s WHERE JobId=%s",
- jcr->impl->previous_jr.cStartTime, jcr->impl->previous_jr.cEndTime,
- edit_uint64(jcr->impl->previous_jr.JobTDate, ec1), new_jobid);
+ jcr->dir_impl->previous_jr.cStartTime,
+ jcr->dir_impl->previous_jr.cEndTime,
+ edit_uint64(jcr->dir_impl->previous_jr.JobTDate, ec1), new_jobid);
jcr->db->SqlQuery(query.c_str());
if (jcr->IsTerminatedOk()) {
@@ -1749,7 +1772,7 @@ void MigrationCleanup(JobControlRecord* jcr, int TermCode)
* storage daemon we need to add data normally send to the director
* via the FHDB interface here.
*/
- switch (jcr->impl->res.client->Protocol) {
+ switch (jcr->dir_impl->res.client->Protocol) {
case APT_NDMPV2:
case APT_NDMPV3:
case APT_NDMPV4:
@@ -1762,7 +1785,7 @@ void MigrationCleanup(JobControlRecord* jcr, int TermCode)
}
ua = new_ua_context(jcr);
- if (jcr->impl->res.job->PurgeMigrateJob) {
+ if (jcr->dir_impl->res.job->PurgeMigrateJob) {
// Purge old Job record
PurgeJobsFromCatalog(ua, old_jobid);
} else {
@@ -1792,7 +1815,7 @@ void MigrationCleanup(JobControlRecord* jcr, int TermCode)
* storage daemon we need to add data normally send to the director
* via the FHDB interface here.
*/
- switch (jcr->impl->res.client->Protocol) {
+ switch (jcr->dir_impl->res.client->Protocol) {
case APT_NDMPV2:
case APT_NDMPV3:
case APT_NDMPV4:
@@ -1813,7 +1836,7 @@ void MigrationCleanup(JobControlRecord* jcr, int 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());
@@ -1822,7 +1845,7 @@ void MigrationCleanup(JobControlRecord* jcr, int TermCode)
UpdateBootstrapFile(mig_jcr);
- if (!mig_jcr->db->GetJobVolumeNames(mig_jcr, mig_jcr->impl->jr.JobId,
+ if (!mig_jcr->db->GetJobVolumeNames(mig_jcr, mig_jcr->dir_impl->jr.JobId,
mig_jcr->VolumeName)) {
/*
* Note, if the job has failed, most likely it did not write any
@@ -1830,7 +1853,7 @@ void MigrationCleanup(JobControlRecord* jcr, int TermCode)
* 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", mig_jcr->db->strerror());
}
mig_jcr->VolumeName[0] = 0; /* none */
@@ -1881,16 +1904,16 @@ void MigrationCleanup(JobControlRecord* jcr, int TermCode)
// Close connection to Reading SD.
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);
}
}
// Close connection to Writing SD (if SD-SD replication)
if (mig_jcr->store_bsock) {
mig_jcr->store_bsock->signal(BNET_TERMINATE);
- if (mig_jcr->impl->SD_msg_chan_started) {
- pthread_cancel(mig_jcr->impl->SD_msg_chan);
+ if (mig_jcr->dir_impl->SD_msg_chan_started) {
+ pthread_cancel(mig_jcr->dir_impl->SD_msg_chan);
}
}
break;
@@ -1898,7 +1921,7 @@ void MigrationCleanup(JobControlRecord* jcr, int TermCode)
TermMsg = _("Inappropriate %s term code");
break;
}
- } else if (jcr->impl->HasSelectedJobs) {
+ } else if (jcr->dir_impl->HasSelectedJobs) {
Mmsg(query, "DELETE FROM job WHERE JobId=%d", jcr->JobId);
jcr->db->SqlQuery(query.c_str());
diff --git a/core/src/dird/msgchan.cc b/core/src/dird/msgchan.cc
index eea3cbd3f..e062f3ccf 100644
--- a/core/src/dird/msgchan.cc
+++ b/core/src/dird/msgchan.cc
@@ -37,7 +37,7 @@
#include "dird.h"
#include "dird/getmsg.h"
#include "dird/job.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/msgchan.h"
#include "dird/quota.h"
#include "dird/sd_cmds.h"
@@ -110,9 +110,9 @@ static inline bool SendBootstrapFileToSd(JobControlRecord* jcr,
while (fgets(buf, sizeof(buf), bs)) { sd->fsend("%s", buf); }
sd->signal(BNET_EOD);
fclose(bs);
- if (jcr->impl->unlink_bsr) {
+ if (jcr->dir_impl->unlink_bsr) {
SecureErase(jcr, jcr->RestoreBootstrap);
- jcr->impl->unlink_bsr = false;
+ jcr->dir_impl->unlink_bsr = false;
}
return true;
}
@@ -148,32 +148,32 @@ bool StartStorageDaemonJob(JobControlRecord* jcr,
}
// Now send JobId and permissions, and get back the authorization key.
- PmStrcpy(job_name, jcr->impl->res.job->resource_name_);
+ PmStrcpy(job_name, jcr->dir_impl->res.job->resource_name_);
BashSpaces(job_name);
- if (jcr->impl->res.client) {
- PmStrcpy(client_name, jcr->impl->res.client->resource_name_);
+ if (jcr->dir_impl->res.client) {
+ PmStrcpy(client_name, jcr->dir_impl->res.client->resource_name_);
} else {
PmStrcpy(client_name, "**None**");
}
BashSpaces(client_name);
- if (jcr->impl->res.fileset) {
- PmStrcpy(fileset_name, jcr->impl->res.fileset->resource_name_);
+ if (jcr->dir_impl->res.fileset) {
+ PmStrcpy(fileset_name, jcr->dir_impl->res.fileset->resource_name_);
} else {
PmStrcpy(fileset_name, "**None**");
}
BashSpaces(fileset_name);
- PmStrcpy(backup_format, jcr->impl->backup_format);
+ PmStrcpy(backup_format, jcr->dir_impl->backup_format);
BashSpaces(backup_format);
- if (jcr->impl->res.fileset && jcr->impl->res.fileset->MD5[0] == 0) {
- bstrncpy(jcr->impl->res.fileset->MD5, "**Dummy**",
- sizeof(jcr->impl->res.fileset->MD5));
- fileset_md5 = jcr->impl->res.fileset->MD5;
- } else if (jcr->impl->res.fileset) {
- fileset_md5 = jcr->impl->res.fileset->MD5;
+ if (jcr->dir_impl->res.fileset && jcr->dir_impl->res.fileset->MD5[0] == 0) {
+ bstrncpy(jcr->dir_impl->res.fileset->MD5, "**Dummy**",
+ sizeof(jcr->dir_impl->res.fileset->MD5));
+ fileset_md5 = jcr->dir_impl->res.fileset->MD5;
+ } else if (jcr->dir_impl->res.fileset) {
+ fileset_md5 = jcr->dir_impl->res.fileset->MD5;
} else {
fileset_md5 = "**Dummy**";
}
@@ -184,7 +184,7 @@ bool StartStorageDaemonJob(JobControlRecord* jcr,
* If we do not cancel it the SD will not accept a new connection
* for the same jobid.
*/
- if (jcr->impl->reschedule_count) {
+ if (jcr->dir_impl->reschedule_count) {
sd->fsend("cancel Job=%s\n", jcr->Job);
while (sd->recv() >= 0) { continue; }
}
@@ -195,10 +195,11 @@ bool StartStorageDaemonJob(JobControlRecord* jcr,
sd->fsend(jobcmd, edit_int64(jcr->JobId, ed1), jcr->Job, job_name.c_str(),
client_name.c_str(), jcr->getJobType(), jcr->getJobLevel(),
- fileset_name.c_str(), !jcr->impl->res.pool->catalog_files,
- jcr->impl->res.job->SpoolAttributes, fileset_md5,
- jcr->impl->spool_data, jcr->impl->res.job->PreferMountedVolumes,
- edit_int64(jcr->impl->spool_size, ed2), jcr->rerunning,
+ fileset_name.c_str(), !jcr->dir_impl->res.pool->catalog_files,
+ jcr->dir_impl->res.job->SpoolAttributes, fileset_md5,
+ jcr->dir_impl->spool_data,
+ jcr->dir_impl->res.job->PreferMountedVolumes,
+ edit_int64(jcr->dir_impl->spool_size, ed2), jcr->rerunning,
jcr->VolSessionId, jcr->VolSessionTime, remainingquota,
jcr->getJobProtocol(), backup_format.c_str());
@@ -251,11 +252,11 @@ bool StartStorageDaemonJob(JobControlRecord* jcr,
/* For the moment, only migrate, copy and vbackup have rpool */
if (jcr->is_JobType(JT_MIGRATE) || jcr->is_JobType(JT_COPY)
|| (jcr->is_JobType(JT_BACKUP) && jcr->is_JobLevel(L_VIRTUAL_FULL))) {
- PmStrcpy(pool_type, jcr->impl->res.rpool->pool_type);
- PmStrcpy(pool_name, jcr->impl->res.rpool->resource_name_);
+ PmStrcpy(pool_type, jcr->dir_impl->res.rpool->pool_type);
+ PmStrcpy(pool_name, jcr->dir_impl->res.rpool->resource_name_);
} else {
- PmStrcpy(pool_type, jcr->impl->res.pool->pool_type);
- PmStrcpy(pool_name, jcr->impl->res.pool->resource_name_);
+ PmStrcpy(pool_type, jcr->dir_impl->res.pool->pool_type);
+ PmStrcpy(pool_name, jcr->dir_impl->res.pool->resource_name_);
}
BashSpaces(pool_type);
BashSpaces(pool_name);
@@ -294,8 +295,8 @@ bool StartStorageDaemonJob(JobControlRecord* jcr,
/* Do write side of storage daemon */
if (ok && write_storage) {
- PmStrcpy(pool_type, jcr->impl->res.pool->pool_type);
- PmStrcpy(pool_name, jcr->impl->res.pool->resource_name_);
+ PmStrcpy(pool_type, jcr->dir_impl->res.pool->pool_type);
+ PmStrcpy(pool_name, jcr->dir_impl->res.pool->resource_name_);
BashSpaces(pool_type);
BashSpaces(pool_name);
foreach_alist (storage, write_storage) {
@@ -358,8 +359,8 @@ bool StartStorageDaemonMessageThread(JobControlRecord* jcr)
pthread_t thid;
jcr->IncUseCount(); /* mark in use by msg thread */
- jcr->impl->sd_msg_thread_done = false;
- jcr->impl->SD_msg_chan_started = false;
+ jcr->dir_impl->sd_msg_thread_done = false;
+ jcr->dir_impl->SD_msg_chan_started = false;
Dmsg0(100, "Start SD msg_thread.\n");
if ((status = pthread_create(&thid, NULL, msg_thread, (void*)jcr)) != 0) {
BErrNo be;
@@ -367,9 +368,9 @@ bool StartStorageDaemonMessageThread(JobControlRecord* jcr)
be.bstrerror(status));
}
/* Wait for thread to start */
- while (!jcr->impl->SD_msg_chan_started) {
+ while (!jcr->dir_impl->SD_msg_chan_started) {
Bmicrosleep(0, 50);
- if (JobCanceled(jcr) || jcr->impl->sd_msg_thread_done) { return false; }
+ if (JobCanceled(jcr) || jcr->dir_impl->sd_msg_thread_done) { return false; }
}
Dmsg1(100, "SD msg_thread started. use=%d\n", jcr->UseCount());
return true;
@@ -381,13 +382,13 @@ extern "C" void MsgThreadCleanup(void* arg)
jcr->db->EndTransaction(jcr); /* Terminate any open transaction */
jcr->lock();
- jcr->impl->sd_msg_thread_done = true;
- jcr->impl->SD_msg_chan_started = false;
+ jcr->dir_impl->sd_msg_thread_done = true;
+ jcr->dir_impl->SD_msg_chan_started = false;
jcr->unlock();
pthread_cond_broadcast(
- &jcr->impl->nextrun_ready); /* wakeup any waiting threads */
+ &jcr->dir_impl->nextrun_ready); /* wakeup any waiting threads */
pthread_cond_broadcast(
- &jcr->impl->term_wait); /* wakeup any waiting threads */
+ &jcr->dir_impl->term_wait); /* wakeup any waiting threads */
Dmsg2(100, "=== End msg_thread. JobId=%d usecnt=%d\n", jcr->JobId,
jcr->UseCount());
jcr->db->ThreadCleanup(); /* remove thread specific data */
@@ -411,8 +412,8 @@ extern "C" void* msg_thread(void* arg)
pthread_detach(pthread_self());
SetJcrInThreadSpecificData(jcr);
- jcr->impl->SD_msg_chan = pthread_self();
- jcr->impl->SD_msg_chan_started = true;
+ jcr->dir_impl->SD_msg_chan = pthread_self();
+ jcr->dir_impl->SD_msg_chan_started = true;
pthread_cleanup_push(MsgThreadCleanup, arg);
sd = jcr->store_bsock;
@@ -429,7 +430,7 @@ extern "C" void* msg_thread(void* arg)
if (jcr->sd_auth_key) { free(jcr->sd_auth_key); }
jcr->sd_auth_key = strdup(auth_key);
pthread_cond_broadcast(
- &jcr->impl->nextrun_ready); /* wakeup any waiting threads */
+ &jcr->dir_impl->nextrun_ready); /* wakeup any waiting threads */
continue;
}
@@ -443,10 +444,10 @@ extern "C" void* msg_thread(void* arg)
if (sscanf(sd->msg, Job_end, Job, &JobStatus, &JobFiles, &JobBytes,
&JobErrors)
== 5) {
- jcr->impl->SDJobStatus = JobStatus; /* termination status */
- jcr->impl->SDJobFiles = JobFiles;
- jcr->impl->SDJobBytes = JobBytes;
- jcr->impl->SDErrors = JobErrors;
+ jcr->dir_impl->SDJobStatus = JobStatus; /* termination status */
+ jcr->dir_impl->SDJobFiles = JobFiles;
+ jcr->dir_impl->SDJobBytes = JobBytes;
+ jcr->dir_impl->SDErrors = JobErrors;
break;
}
Dmsg1(400, "end loop use=%d\n", jcr->UseCount());
@@ -460,7 +461,7 @@ extern "C" void* msg_thread(void* arg)
*/
Qmsg(jcr, M_FATAL, 0, _("Director's comm line to SD dropped.\n"));
}
- if (IsBnetError(sd)) { jcr->impl->SDJobStatus = JS_ErrorTerminated; }
+ if (IsBnetError(sd)) { jcr->dir_impl->SDJobStatus = JS_ErrorTerminated; }
pthread_cleanup_pop(1); /* remove and execute the handler */
return NULL;
}
@@ -469,7 +470,7 @@ void WaitForStorageDaemonTermination(JobControlRecord* jcr)
{
int cancel_count = 0;
/* Now wait for Storage daemon to Terminate our message thread */
- while (!jcr->impl->sd_msg_thread_done) {
+ while (!jcr->dir_impl->sd_msg_thread_done) {
struct timeval tv;
struct timezone tz;
struct timespec timeout;
@@ -479,10 +480,10 @@ void WaitForStorageDaemonTermination(JobControlRecord* jcr)
timeout.tv_sec = tv.tv_sec + 5; /* wait 5 seconds */
Dmsg0(400, "I'm waiting for message thread termination.\n");
lock_mutex(mutex);
- pthread_cond_timedwait(&jcr->impl->term_wait, &mutex, &timeout);
+ pthread_cond_timedwait(&jcr->dir_impl->term_wait, &mutex, &timeout);
unlock_mutex(mutex);
if (jcr->IsCanceled()) {
- if (jcr->impl->SD_msg_chan_started) {
+ if (jcr->dir_impl->SD_msg_chan_started) {
jcr->store_bsock->SetTimedOut();
jcr->store_bsock->SetTerminated();
SdMsgThreadSendSignal(jcr, TIMEOUT_SIGNAL);
diff --git a/core/src/dird/ndmp_dma_backup_NDMP_BAREOS.cc b/core/src/dird/ndmp_dma_backup_NDMP_BAREOS.cc
index 4ea73026d..300a235ef 100644
--- a/core/src/dird/ndmp_dma_backup_NDMP_BAREOS.cc
+++ b/core/src/dird/ndmp_dma_backup_NDMP_BAREOS.cc
@@ -28,7 +28,7 @@
#include "include/bareos.h"
#include "dird.h"
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/msgchan.h"
#include "dird/quota.h"
@@ -97,7 +97,7 @@ static inline bool extract_post_backup_stats(JobControlRecord* jcr,
ndm_ee = sess->control_acb->job.result_env_tab.head;
while (ndm_ee) {
if (!jcr->db->CreateNdmpEnvironmentString(
- jcr, &jcr->impl->jr, ndm_ee->pval.name, ndm_ee->pval.value)) {
+ jcr, &jcr->dir_impl->jr, ndm_ee->pval.name, ndm_ee->pval.value)) {
break;
}
ndm_ee = ndm_ee->next;
@@ -108,7 +108,7 @@ static inline bool extract_post_backup_stats(JobControlRecord* jcr,
* level.
*/
if (nbf_options && nbf_options->uses_level) {
- jcr->db->UpdateNdmpLevelMapping(jcr, &jcr->impl->jr, filesystem,
+ jcr->db->UpdateNdmpLevelMapping(jcr, &jcr->dir_impl->jr, filesystem,
sess->control_acb->job.bu_level);
}
@@ -122,21 +122,21 @@ bool DoNdmpBackupInit(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; }
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());
return false;
}
// If pool storage specified, use it instead of job storage
- CopyWstorage(jcr, jcr->impl->res.pool->storage, _("Pool resource"));
+ CopyWstorage(jcr, jcr->dir_impl->res.pool->storage, _("Pool resource"));
- if (!jcr->impl->res.write_storage_list) {
+ if (!jcr->dir_impl->res.write_storage_list) {
Jmsg(jcr, M_FATAL, 0,
_("No Storage specification found in Job or Pool.\n"));
return false;
@@ -178,16 +178,16 @@ bool DoNdmpBackup(JobControlRecord* jcr)
int NdmpLoglevel;
NdmpLoglevel
- = std::max(jcr->impl->res.client->ndmp_loglevel, me->ndmp_loglevel);
+ = std::max(jcr->dir_impl->res.client->ndmp_loglevel, me->ndmp_loglevel);
// Print Job Start message
Jmsg(jcr, M_INFO, 0, _("Start NDMP Backup JobId %s, Job=%s\n"),
edit_uint64(jcr->JobId, ed1), jcr->Job);
jcr->setJobStatusWithPriorityCheck(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)) {
+ 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;
}
@@ -212,7 +212,7 @@ bool DoNdmpBackup(JobControlRecord* jcr)
* data mover which moves the data from the NDMP DATA AGENT to the NDMP
* TAPE AGENT.
*/
- if (jcr->impl->res.write_storage->paired_storage) {
+ if (jcr->dir_impl->res.write_storage->paired_storage) {
SetPairedStorage(jcr);
jcr->setJobStatusWithPriorityCheck(JS_WaitSD);
@@ -221,7 +221,8 @@ bool DoNdmpBackup(JobControlRecord* jcr)
}
// Now start a job with the Storage daemon
- if (!StartStorageDaemonJob(jcr, NULL, jcr->impl->res.write_storage_list)) {
+ if (!StartStorageDaemonJob(jcr, NULL,
+ jcr->dir_impl->res.write_storage_list)) {
return false;
}
@@ -248,8 +249,8 @@ bool DoNdmpBackup(JobControlRecord* jcr)
* and reuse the job definition for each separate sub-backup we perform as
* part of the whole job. We only free the env_table between every sub-backup.
*/
- if (!NdmpBuildClientJob(jcr, jcr->impl->res.client,
- jcr->impl->res.paired_read_write_storage,
+ if (!NdmpBuildClientJob(jcr, jcr->dir_impl->res.client,
+ jcr->dir_impl->res.paired_read_write_storage,
NDM_JOB_OP_BACKUP, &ndmp_job)) {
goto bail_out;
}
@@ -262,7 +263,7 @@ bool DoNdmpBackup(JobControlRecord* jcr)
* included fileset.
*/
cnt = 0;
- fileset = jcr->impl->res.fileset;
+ fileset = jcr->dir_impl->res.fileset;
for (i = 0; i < fileset->include_items.size(); i++) {
@@ -285,7 +286,7 @@ bool DoNdmpBackup(JobControlRecord* jcr)
if (jcr->store_bsock && cnt > 0) {
jcr->store_bsock->fsend("nextrun");
lock_mutex(mutex);
- pthread_cond_wait(&jcr->impl->nextrun_ready, &mutex);
+ pthread_cond_wait(&jcr->dir_impl->nextrun_ready, &mutex);
unlock_mutex(mutex);
}
@@ -306,8 +307,8 @@ bool DoNdmpBackup(JobControlRecord* jcr)
nis->filesystem = item;
nis->FileIndex = cnt + 1;
nis->jcr = jcr;
- nis->save_filehist = jcr->impl->res.job->SaveFileHist;
- nis->filehist_size = jcr->impl->res.job->FileHistSize;
+ nis->save_filehist = jcr->dir_impl->res.job->SaveFileHist;
+ nis->filehist_size = jcr->dir_impl->res.job->FileHistSize;
ndmp_sess.param->log.ctx = nis;
ndmp_sess.param->log_tag = strdup("DIR-NDMP");
@@ -338,9 +339,9 @@ bool DoNdmpBackup(JobControlRecord* jcr)
* the individual file records to it. So we allocate it here once so its
* available during the whole NDMP session.
*/
- if (Bstrcasecmp(jcr->impl->backup_format, "dump")) {
+ if (Bstrcasecmp(jcr->dir_impl->backup_format, "dump")) {
Mmsg(virtual_filename, "/@NDMP%s%%%d", nis->filesystem,
- jcr->impl->DumpLevel);
+ jcr->dir_impl->DumpLevel);
} else {
Mmsg(virtual_filename, "/@NDMP%s", nis->filesystem);
}
@@ -366,7 +367,7 @@ bool DoNdmpBackup(JobControlRecord* jcr)
if (ndmca_control_agent(&ndmp_sess) != 0) { goto cleanup; }
// See if there were any errors during the backup.
- jcr->impl->jr.FileIndex = cnt + 1;
+ jcr->dir_impl->jr.FileIndex = cnt + 1;
if (!extract_post_backup_stats(jcr, item, &ndmp_sess)) { goto cleanup; }
UnregisterCallbackHooks(&ndmp_sess.control_acb->job.index_log);
diff --git a/core/src/dird/ndmp_dma_backup_NDMP_NATIVE.cc b/core/src/dird/ndmp_dma_backup_NDMP_NATIVE.cc
index 98aa86f71..9ae40d5e8 100644
--- a/core/src/dird/ndmp_dma_backup_NDMP_NATIVE.cc
+++ b/core/src/dird/ndmp_dma_backup_NDMP_NATIVE.cc
@@ -28,7 +28,7 @@
#include "include/bareos.h"
#include "dird.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/dird_globals.h"
#include "dird/job.h"
#include "dird/next_vol.h"
@@ -89,10 +89,10 @@ int NdmpLoadNext(struct ndm_session* sess)
bool prune = false;
struct ndmmedia* media;
int index = 1;
- StorageResource* store = jcr->impl->res.write_storage;
+ StorageResource* store = jcr->dir_impl->res.write_storage;
// get the poolid for pool name
- mr.PoolId = jcr->impl->jr.PoolId;
+ mr.PoolId = jcr->dir_impl->jr.PoolId;
if (FindNextVolumeForAppend(jcr, &mr, index, unwanted_volumes, create,
@@ -169,7 +169,7 @@ bool DoNdmpBackupNdmpNative(JobControlRecord* jcr)
char* item;
ndmp_log_level
- = std::max(jcr->impl->res.client->ndmp_loglevel, me->ndmp_loglevel);
+ = std::max(jcr->dir_impl->res.client->ndmp_loglevel, me->ndmp_loglevel);
struct ndmca_media_callbacks media_callbacks;
@@ -187,21 +187,22 @@ bool DoNdmpBackupNdmpNative(JobControlRecord* jcr)
edit_uint64(jcr->JobId, ed1), jcr->Job);
jcr->setJobStatusWithPriorityCheck(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)) {
+ 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;
}
status = 0;
- StorageResource* store = jcr->impl->res.write_storage;
+ StorageResource* store = jcr->dir_impl->res.write_storage;
PoolMem virtual_filename(PM_FNAME);
IncludeExcludeItem* ie;
- if (!NdmpBuildClientAndStorageJob(jcr, jcr->impl->res.write_storage,
- jcr->impl->res.client, true, /* init_tape */
+ if (!NdmpBuildClientAndStorageJob(jcr, jcr->dir_impl->res.write_storage,
+ jcr->dir_impl->res.client,
+ true, /* init_tape */
true, /* init_robot */
NDM_JOB_OP_BACKUP, &ndmp_job)) {
goto bail_out;
@@ -221,7 +222,7 @@ bool DoNdmpBackupNdmpNative(JobControlRecord* jcr)
* Only one include set of the fileset is allowed in NATIVE mode as
* in NDMP also per job only one filesystem can be backed up
*/
- fileset = jcr->impl->res.fileset;
+ fileset = jcr->dir_impl->res.fileset;
if (fileset->include_items.size() > 1) {
Jmsg(jcr, M_ERROR, 0,
@@ -260,8 +261,8 @@ bool DoNdmpBackupNdmpNative(JobControlRecord* jcr)
nis->filesystem = item;
nis->FileIndex = 1;
nis->jcr = jcr;
- nis->save_filehist = jcr->impl->res.job->SaveFileHist;
- nis->filehist_size = jcr->impl->res.job->FileHistSize;
+ nis->save_filehist = jcr->dir_impl->res.job->SaveFileHist;
+ nis->filehist_size = jcr->dir_impl->res.job->FileHistSize;
ndmp_sess.param->log.ctx = nis;
ndmp_sess.param->log_tag = strdup("DIR-NDMP");
@@ -294,9 +295,9 @@ bool DoNdmpBackupNdmpNative(JobControlRecord* jcr)
* individual file records to it. So we allocate it here once so its available
* during the whole NDMP session.
*/
- if (Bstrcasecmp(jcr->impl->backup_format, "dump")) {
+ if (Bstrcasecmp(jcr->dir_impl->backup_format, "dump")) {
Mmsg(virtual_filename, "/@NDMP%s%%%d", nis->filesystem,
- jcr->impl->DumpLevel);
+ jcr->dir_impl->DumpLevel);
} else {
Mmsg(virtual_filename, "/@NDMP%s", nis->filesystem);
}
@@ -329,7 +330,7 @@ bool DoNdmpBackupNdmpNative(JobControlRecord* jcr)
}
// See if there were any errors during the backup.
- jcr->impl->jr.FileIndex = 1;
+ jcr->dir_impl->jr.FileIndex = 1;
if (!extract_post_backup_stats_ndmp_native(jcr, item, &ndmp_sess)) {
goto cleanup;
}
@@ -421,21 +422,21 @@ bool DoNdmpBackupInitNdmpNative(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; }
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());
return false;
}
// If pool storage specified, use it instead of job storage
- CopyWstorage(jcr, jcr->impl->res.pool->storage, _("Pool resource"));
+ CopyWstorage(jcr, jcr->dir_impl->res.pool->storage, _("Pool resource"));
- if (!jcr->impl->res.write_storage_list) {
+ if (!jcr->dir_impl->res.write_storage_list) {
Jmsg(jcr, M_FATAL, 0,
_("No Storage specification found in Job or Pool.\n"));
return false;
@@ -473,7 +474,8 @@ static inline bool extract_post_backup_stats_ndmp_native(
// translate Physical to Logical Slot before storing into database
media->slot_addr = GetBareosSlotNumberByElementAddress(
- &jcr->impl->res.write_storage->runtime_storage_status->storage_mapping,
+ &jcr->dir_impl->res.write_storage->runtime_storage_status
+ ->storage_mapping,
slot_type_t::kSlotTypeStorage, media->slot_addr);
# if 0
Jmsg(jcr, M_INFO, 0, _("Physical Slot is %d\n"), media->slot_addr);
@@ -515,7 +517,7 @@ static inline bool extract_post_backup_stats_ndmp_native(
ndm_ee = sess->control_acb->job.result_env_tab.head;
while (ndm_ee) {
if (!jcr->db->CreateNdmpEnvironmentString(
- jcr, &jcr->impl->jr, ndm_ee->pval.name, ndm_ee->pval.value)) {
+ jcr, &jcr->dir_impl->jr, ndm_ee->pval.name, ndm_ee->pval.value)) {
break;
}
ndm_ee = ndm_ee->next;
@@ -526,7 +528,7 @@ static inline bool extract_post_backup_stats_ndmp_native(
* level.
*/
if (nbf_options && nbf_options->uses_level) {
- jcr->db->UpdateNdmpLevelMapping(jcr, &jcr->impl->jr, filesystem,
+ jcr->db->UpdateNdmpLevelMapping(jcr, &jcr->dir_impl->jr, filesystem,
sess->control_acb->job.bu_level);
}
diff --git a/core/src/dird/ndmp_dma_backup_common.cc b/core/src/dird/ndmp_dma_backup_common.cc
index 3d43e1f94..b32b80010 100644
--- a/core/src/dird/ndmp_dma_backup_common.cc
+++ b/core/src/dird/ndmp_dma_backup_common.cc
@@ -28,7 +28,7 @@
#include "include/bareos.h"
#include "dird.h"
#include "dird/backup.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/ndmp_dma_backup_common.h"
#include "lib/edit.h"
@@ -85,8 +85,8 @@ bool FillBackupEnvironment(JobControlRecord* jcr,
char text_level[50];
// Set the dump level for the backup.
- jcr->impl->DumpLevel = NativeToNdmpLevel(jcr, filesystem);
- job->bu_level = jcr->impl->DumpLevel;
+ jcr->dir_impl->DumpLevel = NativeToNdmpLevel(jcr, filesystem);
+ job->bu_level = jcr->dir_impl->DumpLevel;
if (job->bu_level == -1) { return false; }
pv.name = ndmp_env_keywords[NDMP_ENV_KW_LEVEL];
@@ -167,7 +167,7 @@ bool FillBackupEnvironment(JobControlRecord* jcr,
if (jcr->store_bsock) {
if (nbf_options && nbf_options->uses_level) {
Mmsg(tape_device, "%s@%s%%%d", jcr->sd_auth_key, filesystem,
- jcr->impl->DumpLevel);
+ jcr->dir_impl->DumpLevel);
} else {
Mmsg(tape_device, "%s@%s", jcr->sd_auth_key, filesystem);
}
@@ -183,7 +183,7 @@ int NativeToNdmpLevel(JobControlRecord* jcr, char* filesystem)
{
int level = -1;
- if (!jcr->db->CreateNdmpLevelMapping(jcr, &jcr->impl->jr, filesystem)) {
+ if (!jcr->db->CreateNdmpLevelMapping(jcr, &jcr->dir_impl->jr, filesystem)) {
return -1;
}
@@ -195,7 +195,7 @@ int NativeToNdmpLevel(JobControlRecord* jcr, char* filesystem)
level = 1;
break;
case L_INCREMENTAL:
- level = jcr->db->GetNdmpLevelMapping(jcr, &jcr->impl->jr, filesystem);
+ level = jcr->db->GetNdmpLevelMapping(jcr, &jcr->dir_impl->jr, filesystem);
break;
default:
Jmsg(jcr, M_FATAL, 0, _("Illegal Job Level %c for NDMP Job\n"),
@@ -220,7 +220,7 @@ void RegisterCallbackHooks(struct ndmlog* ixlog)
# ifdef HAVE_LMDB
NIS* nis = (NIS*)ixlog->ctx;
- if (nis->jcr->impl->res.client->ndmp_use_lmdb) {
+ if (nis->jcr->dir_impl->res.client->ndmp_use_lmdb) {
NdmpFhdbLmdbRegister(ixlog);
} else {
NdmpFhdbMemRegister(ixlog);
@@ -235,7 +235,7 @@ void UnregisterCallbackHooks(struct ndmlog* ixlog)
# ifdef HAVE_LMDB
NIS* nis = (NIS*)ixlog->ctx;
- if (nis->jcr->impl->res.client->ndmp_use_lmdb) {
+ if (nis->jcr->dir_impl->res.client->ndmp_use_lmdb) {
NdmpFhdbLmdbUnregister(ixlog);
} else {
NdmpFhdbMemUnregister(ixlog);
@@ -250,7 +250,7 @@ void ProcessFhdb(struct ndmlog* ixlog)
# ifdef HAVE_LMDB
NIS* nis = (NIS*)ixlog->ctx;
- if (nis->jcr->impl->res.client->ndmp_use_lmdb) {
+ if (nis->jcr->dir_impl->res.client->ndmp_use_lmdb) {
NdmpFhdbLmdbProcessDb(ixlog);
} else {
NdmpFhdbMemProcessDb(ixlog);
@@ -271,20 +271,20 @@ void NdmpBackupCleanup(JobControlRecord* jcr, int TermCode)
Dmsg2(100, "Enter NdmpBackupCleanup %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"),
jcr->db->strerror());
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"),
@@ -306,8 +306,8 @@ void NdmpBackupCleanup(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;
@@ -315,8 +315,8 @@ void NdmpBackupCleanup(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;
diff --git a/core/src/dird/ndmp_dma_generic.cc b/core/src/dird/ndmp_dma_generic.cc
index 03cde6c20..2a17d4faa 100644
--- a/core/src/dird/ndmp_dma_generic.cc
+++ b/core/src/dird/ndmp_dma_generic.cc
@@ -27,7 +27,7 @@
#include "include/bareos.h"
#include "dird.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/dird_globals.h"
#include "include/auth_protocol_types.h"
#include "include/auth_types.h"
@@ -87,15 +87,15 @@ ndmp_backup_format_option* ndmp_lookup_backup_format_options(
// Validation functions.
bool NdmpValidateClient(JobControlRecord* jcr)
{
- switch (jcr->impl->res.client->Protocol) {
+ switch (jcr->dir_impl->res.client->Protocol) {
case APT_NDMPV2:
case APT_NDMPV3:
case APT_NDMPV4:
- if (jcr->impl->res.client->password_.encoding != p_encoding_clear) {
+ if (jcr->dir_impl->res.client->password_.encoding != p_encoding_clear) {
Jmsg(jcr, M_FATAL, 0,
_("Client %s, has incompatible password encoding for running NDMP "
"backup.\n"),
- jcr->impl->res.client->resource_name_);
+ jcr->dir_impl->res.client->resource_name_);
return false;
}
break;
@@ -103,8 +103,9 @@ bool NdmpValidateClient(JobControlRecord* jcr)
Jmsg(jcr, M_FATAL, 0,
_("Client %s, with backup protocol %s not compatible for running "
"NDMP 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;
}
@@ -141,12 +142,12 @@ bool NdmpValidateStorage(JobControlRecord* jcr)
{
StorageResource* store = nullptr;
- if (jcr->impl->res.write_storage_list) {
- foreach_alist (store, jcr->impl->res.write_storage_list) {
+ if (jcr->dir_impl->res.write_storage_list) {
+ foreach_alist (store, jcr->dir_impl->res.write_storage_list) {
if (!NdmpValidateStorage(jcr, store)) { return false; }
}
} else {
- foreach_alist (store, jcr->impl->res.read_storage_list) {
+ foreach_alist (store, jcr->dir_impl->res.read_storage_list) {
if (!NdmpValidateStorage(jcr, store)) { return false; }
}
}
@@ -308,7 +309,7 @@ bool NdmpBuildClientJob(JobControlRecord* jcr,
memset(job, 0, sizeof(struct ndm_job_param));
job->operation = operation;
- job->bu_type = jcr->impl->backup_format;
+ job->bu_type = jcr->dir_impl->backup_format;
/*
* For NDMP the backupformat is a prerequite abort the backup job when
@@ -335,30 +336,32 @@ bool NdmpBuildClientJob(JobControlRecord* jcr,
goto bail_out;
}
- if (Bstrcasecmp(jcr->impl->backup_format, "smtape")) {
+ if (Bstrcasecmp(jcr->dir_impl->backup_format, "smtape")) {
// SMTAPE only wants certain blocksizes.
- if (jcr->impl->res.client->ndmp_blocksize < SMTAPE_MIN_BLOCKSIZE
- || jcr->impl->res.client->ndmp_blocksize > SMTAPE_MAX_BLOCKSIZE) {
+ if (jcr->dir_impl->res.client->ndmp_blocksize < SMTAPE_MIN_BLOCKSIZE
+ || jcr->dir_impl->res.client->ndmp_blocksize > SMTAPE_MAX_BLOCKSIZE) {
Jmsg(jcr, M_FATAL, 0,
_("For SMTAPE NDMP jobs the NDMP blocksize needs to be between %d "
"and %d, but is set to %d\n"),
SMTAPE_MIN_BLOCKSIZE, SMTAPE_MAX_BLOCKSIZE,
- jcr->impl->res.client->ndmp_blocksize);
+ jcr->dir_impl->res.client->ndmp_blocksize);
goto bail_out;
}
- if ((jcr->impl->res.client->ndmp_blocksize % SMTAPE_BLOCKSIZE_INCREMENTS)
+ if ((jcr->dir_impl->res.client->ndmp_blocksize
+ % SMTAPE_BLOCKSIZE_INCREMENTS)
!= 0) {
Jmsg(jcr, M_FATAL, 0,
_("For SMTAPE NDMP jobs the NDMP blocksize needs to be in "
"increments of %d bytes, but is set to %d\n"),
- SMTAPE_BLOCKSIZE_INCREMENTS, jcr->impl->res.client->ndmp_blocksize);
+ SMTAPE_BLOCKSIZE_INCREMENTS,
+ jcr->dir_impl->res.client->ndmp_blocksize);
goto bail_out;
}
- job->record_size = jcr->impl->res.client->ndmp_blocksize;
+ job->record_size = jcr->dir_impl->res.client->ndmp_blocksize;
} else {
- job->record_size = jcr->impl->res.client->ndmp_blocksize;
+ job->record_size = jcr->dir_impl->res.client->ndmp_blocksize;
}
return true;
@@ -378,7 +381,7 @@ bool NdmpBuildStorageJob(JobControlRecord* jcr,
memset(job, 0, sizeof(struct ndm_job_param));
job->operation = operation;
- job->bu_type = jcr->impl->backup_format;
+ job->bu_type = jcr->dir_impl->backup_format;
if (!fill_ndmp_agent_config(jcr, &job->data_agent, store->Protocol,
store->AuthType, store->address, store->SDport,
diff --git a/core/src/dird/ndmp_dma_restore_NDMP_BAREOS.cc b/core/src/dird/ndmp_dma_restore_NDMP_BAREOS.cc
index 6d1f2c44b..bb6ff375c 100644
--- a/core/src/dird/ndmp_dma_restore_NDMP_BAREOS.cc
+++ b/core/src/dird/ndmp_dma_restore_NDMP_BAREOS.cc
@@ -29,7 +29,7 @@
#include "dird.h"
#include "dird/dird_globals.h"
#include "dird/getmsg.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/msgchan.h"
#include "dird/sd_cmds.h"
#include "dird/storage.h"
@@ -69,7 +69,7 @@ static inline char* lookup_fileindex(JobControlRecord* jcr, int32_t FileIndex)
TREE_NODE *node, *parent;
PoolMem restore_pathname, tmp;
- node = FirstTreeNode(jcr->impl->restore_tree_root);
+ node = FirstTreeNode(jcr->dir_impl->restore_tree_root);
while (node) {
// See if this is the wanted FileIndex.
if (node->FileIndex == FileIndex) {
@@ -104,7 +104,7 @@ static inline int set_files_to_restore(JobControlRecord* jcr,
TREE_NODE *node, *parent;
PoolMem restore_pathname, tmp;
- node = FirstTreeNode(jcr->impl->restore_tree_root);
+ node = FirstTreeNode(jcr->dir_impl->restore_tree_root);
while (node) {
// See if this is the wanted FileIndex and the user asked to extract it.
if (node->FileIndex == FileIndex && node->extract) {
@@ -223,7 +223,7 @@ static inline bool fill_restore_environment(JobControlRecord* jcr,
}
// Lookup any meta tags that need to be added.
- fileset = jcr->impl->res.fileset;
+ fileset = jcr->dir_impl->res.fileset;
for (IncludeExcludeItem* ie : fileset->include_items) {
// Loop over each file = entry of the fileset.
for (int j = 0; j < ie->name_list.size(); j++) {
@@ -246,7 +246,7 @@ static inline bool fill_restore_environment(JobControlRecord* jcr,
if (jcr->where) {
restore_prefix = jcr->where;
} else {
- restore_prefix = jcr->impl->res.job->RestoreWhere;
+ restore_prefix = jcr->dir_impl->res.job->RestoreWhere;
}
if (!restore_prefix) { return false; }
@@ -315,7 +315,7 @@ bool DoNdmpRestoreInit(JobControlRecord* jcr)
{
FreeWstorage(jcr); /* we don't write */
- if (!jcr->impl->restore_tree_root) {
+ if (!jcr->dir_impl->restore_tree_root) {
Jmsg(jcr, M_FATAL, 0, _("Cannot NDMP restore without a file selection.\n"));
return false;
}
@@ -332,23 +332,24 @@ static inline int NdmpWaitForJobTermination(JobControlRecord* jcr)
* so that we let the SD despool.
*/
Dmsg4(100, "cancel=%d FDJS=%d JS=%d SDJS=%d\n", jcr->IsCanceled(),
- jcr->impl->FDJobStatus.load(), jcr->getJobStatus(),
- jcr->impl->SDJobStatus.load());
- if (jcr->IsCanceled() || (!jcr->impl->res.job->RescheduleIncompleteJobs)) {
- Dmsg3(100, "FDJS=%d JS=%d SDJS=%d\n", jcr->impl->FDJobStatus.load(),
- jcr->getJobStatus(), jcr->impl->SDJobStatus.load());
+ jcr->dir_impl->FDJobStatus.load(), jcr->getJobStatus(),
+ jcr->dir_impl->SDJobStatus.load());
+ if (jcr->IsCanceled()
+ || (!jcr->dir_impl->res.job->RescheduleIncompleteJobs)) {
+ Dmsg3(100, "FDJS=%d JS=%d SDJS=%d\n", jcr->dir_impl->FDJobStatus.load(),
+ jcr->getJobStatus(), jcr->dir_impl->SDJobStatus.load());
CancelStorageDaemonJob(jcr);
}
// Note, the SD stores in jcr->JobFiles/ReadBytes/JobBytes/JobErrors
WaitForStorageDaemonTermination(jcr);
- jcr->impl->FDJobStatus = JS_Terminated;
+ jcr->dir_impl->FDJobStatus = JS_Terminated;
if (jcr->getJobStatus() != JS_Terminated) { return jcr->getJobStatus(); }
- if (jcr->impl->FDJobStatus != JS_Terminated) {
- return jcr->impl->FDJobStatus;
+ if (jcr->dir_impl->FDJobStatus != JS_Terminated) {
+ return jcr->dir_impl->FDJobStatus;
}
- return jcr->impl->SDJobStatus;
+ return jcr->dir_impl->SDJobStatus;
}
/**
@@ -376,26 +377,26 @@ static inline bool DoNdmpRestoreBootstrap(JobControlRecord* jcr)
bool retval = false;
int NdmpLoglevel;
- if (jcr->impl->res.client->ndmp_loglevel > me->ndmp_loglevel) {
- NdmpLoglevel = jcr->impl->res.client->ndmp_loglevel;
+ if (jcr->dir_impl->res.client->ndmp_loglevel > me->ndmp_loglevel) {
+ NdmpLoglevel = jcr->dir_impl->res.client->ndmp_loglevel;
} else {
NdmpLoglevel = me->ndmp_loglevel;
}
// We first parse the BootStrapRecord ourself so we know what to restore.
- jcr->impl->bsr = libbareos::parse_bsr(jcr, jcr->RestoreBootstrap);
- if (!jcr->impl->bsr) {
+ jcr->dir_impl->bsr = libbareos::parse_bsr(jcr, jcr->RestoreBootstrap);
+ if (!jcr->dir_impl->bsr) {
Jmsg(jcr, M_FATAL, 0, _("Error parsing bootstrap file.\n"));
goto bail_out;
}
// Setup all paired read storage.
SetPairedStorage(jcr);
- if (!jcr->impl->res.paired_read_write_storage) {
+ if (!jcr->dir_impl->res.paired_read_write_storage) {
Jmsg(jcr, M_FATAL, 0,
_("Read storage %s doesn't point to storage definition with paired "
"storage option.\n"),
- jcr->impl->res.read_storage->resource_name_);
+ jcr->dir_impl->res.read_storage->resource_name_);
goto bail_out;
}
@@ -406,7 +407,7 @@ static inline bool DoNdmpRestoreBootstrap(JobControlRecord* jcr)
memset(nis, 0, sizeof(NIS));
// Read the bootstrap file
- bsr = jcr->impl->bsr;
+ bsr = jcr->dir_impl->bsr;
while (!feof(info.bs)) {
if (!SelectNextRstore(jcr, info)) { goto cleanup; }
@@ -416,8 +417,8 @@ static inline bool DoNdmpRestoreBootstrap(JobControlRecord* jcr)
* we perform as part of the whole job. We only free the env_table between
* every sub-restore.
*/
- if (!NdmpBuildClientJob(jcr, jcr->impl->res.client,
- jcr->impl->res.paired_read_write_storage,
+ if (!NdmpBuildClientJob(jcr, jcr->dir_impl->res.client,
+ jcr->dir_impl->res.paired_read_write_storage,
NDM_JOB_OP_EXTRACT, &ndmp_job)) {
goto cleanup;
}
@@ -438,7 +439,8 @@ static inline bool DoNdmpRestoreBootstrap(JobControlRecord* jcr)
sd = jcr->store_bsock;
// Now start a job with the Storage daemon
- if (!StartStorageDaemonJob(jcr, jcr->impl->res.read_storage_list, NULL)) {
+ if (!StartStorageDaemonJob(jcr, jcr->dir_impl->res.read_storage_list,
+ NULL)) {
goto cleanup;
}
@@ -471,13 +473,13 @@ static inline bool DoNdmpRestoreBootstrap(JobControlRecord* jcr)
bool first_run = true;
bool next_sessid = true;
bool next_fi = true;
- int first_fi = jcr->impl->bsr->FileIndex->findex;
- int last_fi = jcr->impl->bsr->FileIndex->findex2;
- VolumeSessionInfo current_session{jcr->impl->bsr->sessid->sessid,
- jcr->impl->bsr->sesstime->sesstime};
+ int first_fi = jcr->dir_impl->bsr->FileIndex->findex;
+ int last_fi = jcr->dir_impl->bsr->FileIndex->findex2;
+ VolumeSessionInfo current_session{jcr->dir_impl->bsr->sessid->sessid,
+ jcr->dir_impl->bsr->sesstime->sesstime};
cnt = 0;
- for (bsr = jcr->impl->bsr; bsr; bsr = bsr->next) {
+ for (bsr = jcr->dir_impl->bsr; bsr; bsr = bsr->next) {
if (current_session.id != bsr->sessid->sessid) {
current_session = {bsr->sessid->sessid, bsr->sesstime->sesstime};
first_run = true;
@@ -527,7 +529,7 @@ static inline bool DoNdmpRestoreBootstrap(JobControlRecord* jcr)
if (jcr->store_bsock && cnt > 0) {
jcr->store_bsock->fsend("nextrun");
lock_mutex(mutex);
- pthread_cond_wait(&jcr->impl->nextrun_ready, &mutex);
+ pthread_cond_wait(&jcr->dir_impl->nextrun_ready, &mutex);
unlock_mutex(mutex);
}
@@ -554,7 +556,7 @@ static inline bool DoNdmpRestoreBootstrap(JobControlRecord* jcr)
session_initialized = true;
// Copy the actual job to perform.
- jcr->impl->jr.FileIndex = current_fi;
+ jcr->dir_impl->jr.FileIndex = current_fi;
memcpy(&ndmp_sess.control_acb->job, &ndmp_job,
sizeof(struct ndm_job_param));
@@ -663,8 +665,8 @@ cleanup:
CloseBootstrapFile(info);
bail_out:
- FreeTree(jcr->impl->restore_tree_root);
- jcr->impl->restore_tree_root = NULL;
+ FreeTree(jcr->dir_impl->restore_tree_root);
+ jcr->dir_impl->restore_tree_root = NULL;
return retval;
}
@@ -674,14 +676,14 @@ bool DoNdmpRestore(JobControlRecord* jcr)
{
int status;
- jcr->impl->jr.JobLevel = L_FULL; /* Full restore */
- if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->impl->jr)) {
+ jcr->dir_impl->jr.JobLevel = L_FULL; /* Full restore */
+ if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->dir_impl->jr)) {
Jmsg(jcr, M_FATAL, 0, "%s", jcr->db->strerror());
goto bail_out;
}
Dmsg0(20, "Updated job start record\n");
- Dmsg1(20, "RestoreJobId=%d\n", jcr->impl->res.job->RestoreJobId);
+ Dmsg1(20, "RestoreJobId=%d\n", jcr->dir_impl->res.job->RestoreJobId);
// Validate the Job to have a NDMP client.
if (!NdmpValidateClient(jcr)) { return false; }
diff --git a/core/src/dird/ndmp_dma_restore_NDMP_NATIVE.cc b/core/src/dird/ndmp_dma_restore_NDMP_NATIVE.cc
index 023e12233..e945a31a9 100644
--- a/core/src/dird/ndmp_dma_restore_NDMP_NATIVE.cc
+++ b/core/src/dird/ndmp_dma_restore_NDMP_NATIVE.cc
@@ -41,7 +41,7 @@
# include "ndmp/ndmagents.h"
# include "dird/ndmp_dma_storage.h"
# include "ndmp_dma_priv.h"
-# include "dird/jcr_private.h"
+# include "dird/director_jcr_impl.h"
# include "dird/ndmp_dma_restore_common.h"
# include "dird/ndmp_dma_generic.h"
@@ -104,7 +104,7 @@ static inline bool fill_restore_environment_ndmp_native(
if (jcr->where) {
restore_prefix = jcr->where;
} else {
- restore_prefix = jcr->impl->res.job->RestoreWhere;
+ restore_prefix = jcr->dir_impl->res.job->RestoreWhere;
}
if (!restore_prefix) { return false; }
@@ -164,7 +164,7 @@ int SetFilesToRestoreNdmpNative(JobControlRecord* jcr,
TREE_NODE *node, *parent;
PoolMem restore_pathname, tmp;
- node = FirstTreeNode(jcr->impl->restore_tree_root);
+ node = FirstTreeNode(jcr->dir_impl->restore_tree_root);
while (node) {
/*
* node->extract_dir means that only the directory should be selected for
@@ -235,7 +235,7 @@ static bool DoNdmpNativeRestore(JobControlRecord* jcr)
slot_number_t ndmp_slot;
StorageResource* store = NULL;
- store = jcr->impl->res.read_storage;
+ store = jcr->dir_impl->res.read_storage;
memset(&ndmp_sess, 0, sizeof(ndmp_sess));
@@ -243,9 +243,9 @@ static bool DoNdmpNativeRestore(JobControlRecord* jcr)
memset(nis, 0, sizeof(NIS));
NdmpLoglevel
- = std::max(jcr->impl->res.client->ndmp_loglevel, me->ndmp_loglevel);
+ = std::max(jcr->dir_impl->res.client->ndmp_loglevel, me->ndmp_loglevel);
- if (!NdmpBuildClientAndStorageJob(jcr, store, jcr->impl->res.client,
+ if (!NdmpBuildClientAndStorageJob(jcr, store, jcr->dir_impl->res.client,
true, /* init_tape */
true, /* init_robot */
NDM_JOB_OP_EXTRACT, &ndmp_job)) {
@@ -400,8 +400,8 @@ cleanup_ndmp:
cleanup:
free(nis);
- FreeTree(jcr->impl->restore_tree_root);
- jcr->impl->restore_tree_root = NULL;
+ FreeTree(jcr->dir_impl->restore_tree_root);
+ jcr->dir_impl->restore_tree_root = NULL;
return retval;
}
@@ -410,14 +410,14 @@ bool DoNdmpRestoreNdmpNative(JobControlRecord* jcr)
{
int status;
- jcr->impl->jr.JobLevel = L_FULL; /* Full restore */
- if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->impl->jr)) {
+ jcr->dir_impl->jr.JobLevel = L_FULL; /* Full restore */
+ if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->dir_impl->jr)) {
Jmsg(jcr, M_FATAL, 0, "%s", jcr->db->strerror());
goto bail_out;
}
Dmsg0(20, "Updated job start record\n");
- Dmsg1(20, "RestoreJobId=%d\n", jcr->impl->res.job->RestoreJobId);
+ Dmsg1(20, "RestoreJobId=%d\n", jcr->dir_impl->res.job->RestoreJobId);
// Validate the Job to have a NDMP client.
if (!NdmpValidateClient(jcr)) { return false; }
diff --git a/core/src/dird/ndmp_dma_restore_common.cc b/core/src/dird/ndmp_dma_restore_common.cc
index 9b9f22302..793b5ecf8 100644
--- a/core/src/dird/ndmp_dma_restore_common.cc
+++ b/core/src/dird/ndmp_dma_restore_common.cc
@@ -30,7 +30,7 @@
#include "include/bareos.h"
#include "dird.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/restore.h"
@@ -179,16 +179,16 @@ void NdmpRestoreCleanup(JobControlRecord* jcr, int TermCode)
Dmsg0(20, "In NdmpRestoreCleanup\n");
UpdateJobEnd(jcr, TermCode);
- if (jcr->impl->unlink_bsr && jcr->RestoreBootstrap) {
+ if (jcr->dir_impl->unlink_bsr && jcr->RestoreBootstrap) {
SecureErase(jcr, jcr->RestoreBootstrap);
- jcr->impl->unlink_bsr = false;
+ jcr->dir_impl->unlink_bsr = false;
}
if (JobCanceled(jcr)) { CancelStorageDaemonJob(jcr); }
switch (TermCode) {
case JS_Terminated:
- if (jcr->impl->ExpectedFiles > jcr->impl->jr.JobFiles) {
+ if (jcr->dir_impl->ExpectedFiles > jcr->dir_impl->jr.JobFiles) {
TermMsg = _("Restore OK -- warning file count mismatch");
} else {
TermMsg = _("Restore OK");
@@ -203,8 +203,8 @@ void NdmpRestoreCleanup(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;
@@ -212,8 +212,8 @@ void NdmpRestoreCleanup(JobControlRecord* jcr, int TermCode)
TermMsg = _("Restore 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;
diff --git a/core/src/dird/ndmp_dma_storage.cc b/core/src/dird/ndmp_dma_storage.cc
index 744537478..9a381535d 100644
--- a/core/src/dird/ndmp_dma_storage.cc
+++ b/core/src/dird/ndmp_dma_storage.cc
@@ -28,7 +28,7 @@
#include "include/bareos.h"
#include "dird.h"
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/sd_cmds.h"
#include "dird/storage.h"
#include "dird/ndmp_slot2elemaddr.h"
@@ -68,10 +68,10 @@ int get_tape_info_cb(struct ndm_session* sess,
}
if (jcr->is_JobType(JT_BACKUP)) {
- store = jcr->impl->res.write_storage;
+ store = jcr->dir_impl->res.write_storage;
} else if (jcr->is_JobType(JT_RESTORE)) {
- store = jcr->impl->res.read_storage;
+ store = jcr->dir_impl->res.read_storage;
} else {
return -1;
@@ -180,7 +180,7 @@ void DoNdmpNativeStorageStatus(UaContext* ua, StorageResource* store, char*)
{
struct ndm_job_param ndmp_job;
- ua->jcr->impl->res.write_storage = store;
+ ua->jcr->dir_impl->res.write_storage = store;
if (!NdmpBuildStorageJob(ua->jcr, store, true, /* Query Tape Agent */
true, /* Query Robot Agent */
@@ -1072,7 +1072,7 @@ bool ndmp_native_setup_robot_and_tape_for_native_backup_job(
ndmp_job.have_robot = 1;
// unload tape if tape is in drive
ndmp_job.auto_remedy = 1;
- ndmp_job.record_size = jcr->impl->res.client->ndmp_blocksize;
+ ndmp_job.record_size = jcr->dir_impl->res.client->ndmp_blocksize;
Jmsg(jcr, M_INFO, 0, _("Using Data host %s\n"), ndmp_job.data_agent.host);
Jmsg(jcr, M_INFO, 0, _("Using Tape host:device:address %s:%s:@%d\n"),
diff --git a/core/src/dird/newvol.cc b/core/src/dird/newvol.cc
index 496256569..7d2136dd8 100644
--- a/core/src/dird/newvol.cc
+++ b/core/src/dird/newvol.cc
@@ -3,7 +3,7 @@
Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
Copyright (C) 2011-2016 Planets Communications B.V.
- Copyright (C) 2013-2019 Bareos GmbH & Co. KG
+ Copyright (C) 2013-2022 Bareos GmbH & Co. KG
This program is Free Software; you can redistribute it and/or
modify it under the terms of version three of the GNU Affero General Public
@@ -36,7 +36,7 @@
#include "include/bareos.h"
#include "dird.h"
#include "dird/expand.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/next_vol.h"
#include "cats/sql.h"
#include "dird/ua_db.h"
@@ -71,7 +71,7 @@ bool newVolume(JobControlRecord* jcr, MediaDbRecord* mr, StorageResource* store)
*mr = MediaDbRecord{};
SetPoolDbrDefaultsInMediaDbr(mr, &pr);
jcr->VolumeName[0] = 0;
- bstrncpy(mr->MediaType, jcr->impl->res.write_storage->media_type,
+ bstrncpy(mr->MediaType, jcr->dir_impl->res.write_storage->media_type,
sizeof(mr->MediaType));
GeneratePluginEvent(jcr, bDirEventNewVolume); /* return void... */
if (jcr->VolumeName[0] && IsVolumeNameLegal(NULL, jcr->VolumeName)) {
@@ -163,7 +163,7 @@ static bool PerformFullNameSubstitution(JobControlRecord* jcr,
bool ok = false;
POOLMEM* label = GetPoolMemory(PM_FNAME);
- jcr->impl->NumVols = pr->NumVols;
+ jcr->dir_impl->NumVols = pr->NumVols;
if (VariableExpansion(jcr, pr->LabelFormat, label)) {
bstrncpy(mr->VolumeName, label, sizeof(mr->VolumeName));
ok = true;
diff --git a/core/src/dird/next_vol.cc b/core/src/dird/next_vol.cc
index 830acfce3..3a56ed17e 100644
--- a/core/src/dird/next_vol.cc
+++ b/core/src/dird/next_vol.cc
@@ -32,7 +32,7 @@
#include "dird.h"
#include "dird/autoprune.h"
#include "dird/autorecycle.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/next_vol.h"
#include "dird/newvol.h"
#include "dird/ua_db.h"
@@ -74,7 +74,7 @@ int FindNextVolumeForAppend(JobControlRecord* jcr,
int retry = 0;
bool ok;
bool InChanger;
- StorageResource* store = jcr->impl->res.write_storage;
+ StorageResource* store = jcr->dir_impl->res.write_storage;
bstrncpy(mr->MediaType, store->media_type, sizeof(mr->MediaType));
Dmsg3(debuglevel,
@@ -151,12 +151,12 @@ int FindNextVolumeForAppend(JobControlRecord* jcr,
// Look at more drastic ways to find an Appendable Volume
if (!ok
- && (jcr->impl->res.pool->purge_oldest_volume
- || jcr->impl->res.pool->recycle_oldest_volume)) {
+ && (jcr->dir_impl->res.pool->purge_oldest_volume
+ || jcr->dir_impl->res.pool->recycle_oldest_volume)) {
Dmsg2(debuglevel,
"No next volume found. PurgeOldest=%d\n RecyleOldest=%d",
- jcr->impl->res.pool->purge_oldest_volume,
- jcr->impl->res.pool->recycle_oldest_volume);
+ jcr->dir_impl->res.pool->purge_oldest_volume,
+ jcr->dir_impl->res.pool->recycle_oldest_volume);
// Find oldest volume to recycle
SetStorageidInMr(store, mr);
@@ -168,11 +168,11 @@ int FindNextVolumeForAppend(JobControlRecord* jcr,
Dmsg0(debuglevel, "Try purge Volume.\n");
// 7. Try to purging oldest volume only if not UA calling us.
ua = new_ua_context(jcr);
- if (jcr->impl->res.pool->purge_oldest_volume && create) {
+ if (jcr->dir_impl->res.pool->purge_oldest_volume && create) {
Jmsg(jcr, M_INFO, 0, _("Purging oldest volume \"%s\"\n"),
mr->VolumeName);
ok = PurgeJobsFromVolume(ua, mr);
- } else if (jcr->impl->res.pool->recycle_oldest_volume) {
+ } else if (jcr->dir_impl->res.pool->recycle_oldest_volume) {
// 8. Try recycling the oldest volume
Jmsg(jcr, M_INFO, 0, _("Pruning oldest volume \"%s\"\n"),
mr->VolumeName);
@@ -336,7 +336,7 @@ void CheckIfVolumeValidOrRecyclable(JobControlRecord* jcr,
* try to catch close calls ...
*/
if ((mr->LastWritten + mr->VolRetention - 60) < (utime_t)time(NULL)
- && jcr->impl->res.pool->recycle_current_volume
+ && jcr->dir_impl->res.pool->recycle_current_volume
&& (bstrcmp(mr->VolStatus, "Full") || bstrcmp(mr->VolStatus, "Used"))) {
// Attempt prune of current volume to see if we can recycle it for use.
UaContext* ua;
@@ -419,7 +419,8 @@ bool GetScratchVolume(JobControlRecord* jcr,
* add a Volume.
*/
PoolDbRecord pr;
- bstrncpy(pr.Name, jcr->impl->res.pool->resource_name_, sizeof(pr.Name));
+ bstrncpy(pr.Name, jcr->dir_impl->res.pool->resource_name_,
+ sizeof(pr.Name));
if (!jcr->db->GetPoolRecord(jcr, &pr)) {
Jmsg(jcr, M_WARNING, 0, _("Unable to get Pool record: ERR=%s\n"),
@@ -431,7 +432,7 @@ bool GetScratchVolume(JobControlRecord* jcr,
if (pr.MaxVols > 0 && pr.NumVols >= pr.MaxVols) {
Jmsg(jcr, M_WARNING, 0,
_("Unable add Scratch Volume, Pool \"%s\" full MaxVols=%d\n"),
- jcr->impl->res.pool->resource_name_, pr.MaxVols);
+ jcr->dir_impl->res.pool->resource_name_, pr.MaxVols);
goto bail_out;
}
diff --git a/core/src/dird/quota.cc b/core/src/dird/quota.cc
index 38462ac50..c10629b53 100644
--- a/core/src/dird/quota.cc
+++ b/core/src/dird/quota.cc
@@ -3,7 +3,7 @@
Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
Copyright (C) 2011-2016 Planets Communications B.V.
- Copyright (C) 2013-2019 Bareos GmbH & Co. KG
+ Copyright (C) 2013-2022 Bareos GmbH & Co. KG
This program is Free Software; you can redistribute it and/or
modify it under the terms of version two of the GNU General Public
@@ -28,7 +28,7 @@
#include "include/bareos.h"
#include "dird.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
namespace directordaemon {
@@ -44,39 +44,42 @@ uint64_t FetchRemainingQuotas(JobControlRecord* jcr)
uint64_t now = (uint64_t)time(NULL);
// Quotas not being used ?
- if (!jcr->impl->HasQuota) { return 0; }
+ if (!jcr->dir_impl->HasQuota) { return 0; }
Dmsg2(debuglevel, "JobSumTotalBytes for JobId %d is %llu\n", jcr->JobId,
- jcr->impl->jr.JobSumTotalBytes);
+ jcr->dir_impl->jr.JobSumTotalBytes);
Dmsg1(debuglevel, "Fetching remaining quotas for JobId %d\n", jcr->JobId);
// If strict quotas on and grace exceeded, enforce the softquota
- if (jcr->impl->res.client->StrictQuotas && jcr->impl->res.client->SoftQuota
- && jcr->impl->res.client->GraceTime > 0
- && (now - (uint64_t)jcr->impl->res.client->GraceTime)
- > (uint64_t)jcr->impl->res.client->SoftQuotaGracePeriod
- && jcr->impl->res.client->SoftQuotaGracePeriod > 0) {
- remaining
- = jcr->impl->res.client->SoftQuota - jcr->impl->jr.JobSumTotalBytes;
- } else if (!jcr->impl->res.client->StrictQuotas
- && jcr->impl->res.client->SoftQuota
- && jcr->impl->res.client->GraceTime > 0
- && jcr->impl->res.client->SoftQuotaGracePeriod > 0
- && (now - (uint64_t)jcr->impl->res.client->GraceTime)
- > (uint64_t)jcr->impl->res.client->SoftQuotaGracePeriod) {
+ if (jcr->dir_impl->res.client->StrictQuotas
+ && jcr->dir_impl->res.client->SoftQuota
+ && jcr->dir_impl->res.client->GraceTime > 0
+ && (now - (uint64_t)jcr->dir_impl->res.client->GraceTime)
+ > (uint64_t)jcr->dir_impl->res.client->SoftQuotaGracePeriod
+ && jcr->dir_impl->res.client->SoftQuotaGracePeriod > 0) {
+ remaining = jcr->dir_impl->res.client->SoftQuota
+ - jcr->dir_impl->jr.JobSumTotalBytes;
+ } else if (!jcr->dir_impl->res.client->StrictQuotas
+ && jcr->dir_impl->res.client->SoftQuota
+ && jcr->dir_impl->res.client->GraceTime > 0
+ && jcr->dir_impl->res.client->SoftQuotaGracePeriod > 0
+ && (now - (uint64_t)jcr->dir_impl->res.client->GraceTime)
+ > (uint64_t)
+ jcr->dir_impl->res.client->SoftQuotaGracePeriod) {
// If strict quotas turned off and grace exceeded use the last known limit
- if (jcr->impl->res.client->QuotaLimit > jcr->impl->res.client->SoftQuota) {
- remaining
- = jcr->impl->res.client->QuotaLimit - jcr->impl->jr.JobSumTotalBytes;
+ if (jcr->dir_impl->res.client->QuotaLimit
+ > jcr->dir_impl->res.client->SoftQuota) {
+ remaining = jcr->dir_impl->res.client->QuotaLimit
+ - jcr->dir_impl->jr.JobSumTotalBytes;
} else {
- remaining
- = jcr->impl->res.client->SoftQuota - jcr->impl->jr.JobSumTotalBytes;
+ remaining = jcr->dir_impl->res.client->SoftQuota
+ - jcr->dir_impl->jr.JobSumTotalBytes;
}
- } else if (jcr->impl->jr.JobSumTotalBytes
- < jcr->impl->res.client->HardQuota) {
+ } else if (jcr->dir_impl->jr.JobSumTotalBytes
+ < jcr->dir_impl->res.client->HardQuota) {
// If within the hardquota.
- remaining
- = jcr->impl->res.client->HardQuota - jcr->impl->jr.JobSumTotalBytes;
+ remaining = jcr->dir_impl->res.client->HardQuota
+ - jcr->dir_impl->jr.JobSumTotalBytes;
} else {
/*
* If just over quota return 0. This shouldnt happen because quotas
@@ -87,8 +90,8 @@ uint64_t FetchRemainingQuotas(JobControlRecord* jcr)
Dmsg4(debuglevel,
"Quota for %s is %llu. Remainder is %llu, QuotaLimit: %llu\n",
- jcr->impl->jr.Name, jcr->impl->jr.JobSumTotalBytes, remaining,
- jcr->impl->res.client->QuotaLimit);
+ jcr->dir_impl->jr.Name, jcr->dir_impl->jr.JobSumTotalBytes, remaining,
+ jcr->dir_impl->res.client->QuotaLimit);
return remaining;
}
@@ -107,35 +110,38 @@ bool CheckHardquotas(JobControlRecord* jcr)
bool retval = false;
// Do not check if hardquota is not set
- if (jcr->impl->res.client->HardQuota == 0) { goto bail_out; }
+ if (jcr->dir_impl->res.client->HardQuota == 0) { goto bail_out; }
Dmsg1(debuglevel, "Checking hard quotas for JobId %d\n", jcr->JobId);
- if (!jcr->impl->HasQuota) {
- if (jcr->impl->res.client->QuotaIncludeFailedJobs) {
- if (!jcr->db->get_quota_jobbytes(jcr, &jcr->impl->jr,
- jcr->impl->res.client->JobRetention)) {
+ if (!jcr->dir_impl->HasQuota) {
+ if (jcr->dir_impl->res.client->QuotaIncludeFailedJobs) {
+ if (!jcr->db->get_quota_jobbytes(
+ jcr, &jcr->dir_impl->jr,
+ jcr->dir_impl->res.client->JobRetention)) {
Jmsg(jcr, M_WARNING, 0, _("Error getting Quota value: ERR=%s\n"),
jcr->db->strerror());
goto bail_out;
}
} else {
if (!jcr->db->get_quota_jobbytes_nofailed(
- jcr, &jcr->impl->jr, jcr->impl->res.client->JobRetention)) {
+ jcr, &jcr->dir_impl->jr,
+ jcr->dir_impl->res.client->JobRetention)) {
Jmsg(jcr, M_WARNING, 0, _("Error getting Quota value: ERR=%s\n"),
jcr->db->strerror());
goto bail_out;
}
}
- jcr->impl->HasQuota = true;
+ jcr->dir_impl->HasQuota = true;
}
- if (jcr->impl->jr.JobSumTotalBytes > jcr->impl->res.client->HardQuota) {
+ if (jcr->dir_impl->jr.JobSumTotalBytes
+ > jcr->dir_impl->res.client->HardQuota) {
retval = true;
goto bail_out;
}
- Dmsg2(debuglevel, "Quota for JobID: %d is %llu\n", jcr->impl->jr.JobId,
- jcr->impl->jr.JobSumTotalBytes);
+ Dmsg2(debuglevel, "Quota for JobID: %d is %llu\n", jcr->dir_impl->jr.JobId,
+ jcr->dir_impl->jr.JobSumTotalBytes);
bail_out:
return retval;
@@ -163,13 +169,14 @@ bool CheckSoftquotas(JobControlRecord* jcr)
uint64_t now = (uint64_t)time(NULL);
// Do not check if the softquota is not set
- if (jcr->impl->res.client->SoftQuota == 0) { goto bail_out; }
+ if (jcr->dir_impl->res.client->SoftQuota == 0) { goto bail_out; }
Dmsg1(debuglevel, "Checking soft quotas for JobId %d\n", jcr->JobId);
- if (!jcr->impl->HasQuota) {
- if (jcr->impl->res.client->QuotaIncludeFailedJobs) {
- if (!jcr->db->get_quota_jobbytes(jcr, &jcr->impl->jr,
- jcr->impl->res.client->JobRetention)) {
+ if (!jcr->dir_impl->HasQuota) {
+ if (jcr->dir_impl->res.client->QuotaIncludeFailedJobs) {
+ if (!jcr->db->get_quota_jobbytes(
+ jcr, &jcr->dir_impl->jr,
+ jcr->dir_impl->res.client->JobRetention)) {
Jmsg(jcr, M_WARNING, 0, _("Error getting Quota value: ERR=%s\n"),
jcr->db->strerror());
goto bail_out;
@@ -177,70 +184,75 @@ bool CheckSoftquotas(JobControlRecord* jcr)
Dmsg0(debuglevel, "Quota Includes Failed Jobs\n");
} else {
if (!jcr->db->get_quota_jobbytes_nofailed(
- jcr, &jcr->impl->jr, jcr->impl->res.client->JobRetention)) {
+ jcr, &jcr->dir_impl->jr,
+ jcr->dir_impl->res.client->JobRetention)) {
Jmsg(jcr, M_WARNING, 0, _("Error getting Quota value: ERR=%s\n"),
jcr->db->strerror());
goto bail_out;
}
Jmsg(jcr, M_INFO, 0, _("Quota does NOT include Failed Jobs\n"));
}
- jcr->impl->HasQuota = true;
+ jcr->dir_impl->HasQuota = true;
}
- Dmsg2(debuglevel, "Quota for %s is %llu\n", jcr->impl->jr.Name,
- jcr->impl->jr.JobSumTotalBytes);
- Dmsg2(debuglevel, "QuotaLimit for %s is %llu\n", jcr->impl->jr.Name,
- jcr->impl->res.client->QuotaLimit);
- Dmsg2(debuglevel, "HardQuota for %s is %llu\n", jcr->impl->jr.Name,
- jcr->impl->res.client->HardQuota);
- Dmsg2(debuglevel, "SoftQuota for %s is %llu\n", jcr->impl->jr.Name,
- jcr->impl->res.client->SoftQuota);
- Dmsg2(debuglevel, "SoftQuota Grace Period for %s is %d\n", jcr->impl->jr.Name,
- jcr->impl->res.client->SoftQuotaGracePeriod);
- Dmsg2(debuglevel, "SoftQuota Grace Time for %s is %d\n", jcr->impl->jr.Name,
- jcr->impl->res.client->GraceTime);
+ Dmsg2(debuglevel, "Quota for %s is %llu\n", jcr->dir_impl->jr.Name,
+ jcr->dir_impl->jr.JobSumTotalBytes);
+ Dmsg2(debuglevel, "QuotaLimit for %s is %llu\n", jcr->dir_impl->jr.Name,
+ jcr->dir_impl->res.client->QuotaLimit);
+ Dmsg2(debuglevel, "HardQuota for %s is %llu\n", jcr->dir_impl->jr.Name,
+ jcr->dir_impl->res.client->HardQuota);
+ Dmsg2(debuglevel, "SoftQuota for %s is %llu\n", jcr->dir_impl->jr.Name,
+ jcr->dir_impl->res.client->SoftQuota);
+ Dmsg2(debuglevel, "SoftQuota Grace Period for %s is %d\n",
+ jcr->dir_impl->jr.Name,
+ jcr->dir_impl->res.client->SoftQuotaGracePeriod);
+ Dmsg2(debuglevel, "SoftQuota Grace Time for %s is %d\n",
+ jcr->dir_impl->jr.Name, jcr->dir_impl->res.client->GraceTime);
- if ((jcr->impl->jr.JobSumTotalBytes + jcr->impl->SDJobBytes)
- > jcr->impl->res.client->SoftQuota) {
+ if ((jcr->dir_impl->jr.JobSumTotalBytes + jcr->dir_impl->SDJobBytes)
+ > jcr->dir_impl->res.client->SoftQuota) {
/*
* Only warn once about softquotas in the job
* Check if gracetime has been set
*/
- if (jcr->impl->res.client->GraceTime == 0
- && jcr->impl->res.client->SoftQuotaGracePeriod) {
+ if (jcr->dir_impl->res.client->GraceTime == 0
+ && jcr->dir_impl->res.client->SoftQuotaGracePeriod) {
Dmsg1(debuglevel, "UpdateQuotaGracetime: %d\n", now);
- if (!jcr->db->UpdateQuotaGracetime(jcr, &jcr->impl->jr)) {
+ if (!jcr->db->UpdateQuotaGracetime(jcr, &jcr->dir_impl->jr)) {
Jmsg(jcr, M_WARNING, 0, _("Error setting Quota gracetime: ERR=%s\n"),
jcr->db->strerror());
} else {
Jmsg(jcr, M_ERROR, 0,
_("Softquota Exceeded, Grace Period starts now.\n"));
}
- jcr->impl->res.client->GraceTime = now;
+ jcr->dir_impl->res.client->GraceTime = now;
goto bail_out;
- } else if (jcr->impl->res.client->SoftQuotaGracePeriod
- && (now - (uint64_t)jcr->impl->res.client->GraceTime)
- < (uint64_t)jcr->impl->res.client->SoftQuotaGracePeriod) {
+ } else if (jcr->dir_impl->res.client->SoftQuotaGracePeriod
+ && (now - (uint64_t)jcr->dir_impl->res.client->GraceTime)
+ < (uint64_t)
+ jcr->dir_impl->res.client->SoftQuotaGracePeriod) {
Jmsg(jcr, M_ERROR, 0,
_("Softquota Exceeded, will be enforced after Grace Period "
"expires.\n"));
- } else if (jcr->impl->res.client->SoftQuotaGracePeriod
- && (now - (uint64_t)jcr->impl->res.client->GraceTime)
- > (uint64_t)jcr->impl->res.client->SoftQuotaGracePeriod) {
+ } else if (jcr->dir_impl->res.client->SoftQuotaGracePeriod
+ && (now - (uint64_t)jcr->dir_impl->res.client->GraceTime)
+ > (uint64_t)
+ jcr->dir_impl->res.client->SoftQuotaGracePeriod) {
/*
* If gracetime has expired update else check more if not set softlimit
* yet then set and bail out.
*/
- if (jcr->impl->res.client->QuotaLimit < 1) {
- if (!jcr->db->UpdateQuotaSoftlimit(jcr, &jcr->impl->jr)) {
+ if (jcr->dir_impl->res.client->QuotaLimit < 1) {
+ if (!jcr->db->UpdateQuotaSoftlimit(jcr, &jcr->dir_impl->jr)) {
Jmsg(jcr, M_WARNING, 0, _("Error setting Quota Softlimit: ERR=%s\n"),
jcr->db->strerror());
}
Jmsg(jcr, M_WARNING, 0,
_("Softquota Exceeded and Grace Period expired.\n"));
Jmsg(jcr, M_INFO, 0, _("Setting Burst Quota to %d Bytes.\n"),
- jcr->impl->jr.JobSumTotalBytes);
- jcr->impl->res.client->QuotaLimit = jcr->impl->jr.JobSumTotalBytes;
+ jcr->dir_impl->jr.JobSumTotalBytes);
+ jcr->dir_impl->res.client->QuotaLimit
+ = jcr->dir_impl->jr.JobSumTotalBytes;
retval = true;
goto bail_out;
} else {
@@ -248,8 +260,8 @@ bool CheckSoftquotas(JobControlRecord* jcr)
* If gracetime has expired update else check more if not set softlimit
* yet then set and bail out.
*/
- if (jcr->impl->res.client->QuotaLimit < 1) {
- if (!jcr->db->UpdateQuotaSoftlimit(jcr, &jcr->impl->jr)) {
+ if (jcr->dir_impl->res.client->QuotaLimit < 1) {
+ if (!jcr->db->UpdateQuotaSoftlimit(jcr, &jcr->dir_impl->jr)) {
Jmsg(jcr, M_WARNING, 0,
_("Error setting Quota Softlimit: ERR=%s\n"),
jcr->db->strerror());
@@ -257,23 +269,24 @@ bool CheckSoftquotas(JobControlRecord* jcr)
Jmsg(jcr, M_WARNING, 0,
_("Soft Quota exceeded and Grace Period expired.\n"));
Jmsg(jcr, M_INFO, 0, _("Setting Burst Quota to %d Bytes.\n"),
- jcr->impl->jr.JobSumTotalBytes);
- jcr->impl->res.client->QuotaLimit = jcr->impl->jr.JobSumTotalBytes;
+ jcr->dir_impl->jr.JobSumTotalBytes);
+ jcr->dir_impl->res.client->QuotaLimit
+ = jcr->dir_impl->jr.JobSumTotalBytes;
retval = true;
goto bail_out;
} else {
// If we use strict quotas enforce the pure soft quota limit.
- if (jcr->impl->res.client->StrictQuotas) {
- if (jcr->impl->jr.JobSumTotalBytes
- > jcr->impl->res.client->SoftQuota) {
+ if (jcr->dir_impl->res.client->StrictQuotas) {
+ if (jcr->dir_impl->jr.JobSumTotalBytes
+ > jcr->dir_impl->res.client->SoftQuota) {
Dmsg0(debuglevel,
"Soft Quota exceeded, enforcing Strict Quota Limit.\n");
retval = true;
goto bail_out;
}
} else {
- if (jcr->impl->jr.JobSumTotalBytes
- >= jcr->impl->res.client->QuotaLimit) {
+ if (jcr->dir_impl->jr.JobSumTotalBytes
+ >= jcr->dir_impl->res.client->QuotaLimit) {
// If strict quotas turned off use the last known limit
Jmsg(jcr, M_WARNING, 0,
_("Soft Quota exceeded, enforcing Burst Quota Limit.\n"));
@@ -284,15 +297,15 @@ bool CheckSoftquotas(JobControlRecord* jcr)
}
}
}
- } else if (jcr->impl->res.client->GraceTime != 0) {
+ } else if (jcr->dir_impl->res.client->GraceTime != 0) {
// Reset softquota
ClientDbRecord cr;
- cr.ClientId = jcr->impl->jr.ClientId;
+ cr.ClientId = jcr->dir_impl->jr.ClientId;
if (!jcr->db->ResetQuotaRecord(jcr, &cr)) {
Jmsg(jcr, M_WARNING, 0, _("Error setting Quota gracetime: ERR=%s\n"),
jcr->db->strerror());
} else {
- jcr->impl->res.client->GraceTime = 0;
+ jcr->dir_impl->res.client->GraceTime = 0;
Jmsg(jcr, M_INFO, 0, _("Soft Quota reset, Grace Period ends now.\n"));
}
}
diff --git a/core/src/dird/recycle.cc b/core/src/dird/recycle.cc
index 9317d0b87..3c63dd5ba 100644
--- a/core/src/dird/recycle.cc
+++ b/core/src/dird/recycle.cc
@@ -3,7 +3,7 @@
Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
Copyright (C) 2016-2016 Planets Communications B.V.
- Copyright (C) 2016-2019 Bareos GmbH & Co. KG
+ Copyright (C) 2016-2022 Bareos GmbH & Co. KG
This program is Free Software; you can redistribute it and/or
modify it under the terms of version three of the GNU Affero General Public
@@ -29,7 +29,7 @@
#include "include/bareos.h"
#include "dird.h"
#include "dird/autorecycle.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/next_vol.h"
namespace directordaemon {
@@ -45,8 +45,8 @@ bool FindRecycledVolume(JobControlRecord* jcr,
bstrncpy(mr->VolStatus, "Recycle", sizeof(mr->VolStatus));
SetStorageidInMr(store, mr);
if (jcr->db->FindNextVolume(jcr, 1, InChanger, mr, unwanted_volumes)) {
- jcr->impl->MediaId = mr->MediaId;
- Dmsg1(20, "Find_next_vol MediaId=%u\n", jcr->impl->MediaId);
+ jcr->dir_impl->MediaId = mr->MediaId;
+ Dmsg1(20, "Find_next_vol MediaId=%u\n", jcr->dir_impl->MediaId);
PmStrcpy(jcr->VolumeName, mr->VolumeName);
SetStorageidInMr(store, mr);
diff --git a/core/src/dird/restore.cc b/core/src/dird/restore.cc
index bca1b0a45..1091a335f 100644
--- a/core/src/dird/restore.cc
+++ b/core/src/dird/restore.cc
@@ -44,7 +44,7 @@
#include "dird/backup.h"
#include "dird/fd_cmds.h"
#include "dird/getmsg.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/msgchan.h"
#include "dird/restore.h"
@@ -80,10 +80,10 @@ static void BuildRestoreCommand(JobControlRecord* jcr, PoolMem& ret)
char empty = '\0';
// Build the restore command
- if (jcr->impl->replace != 0) {
- replace = jcr->impl->replace;
- } else if (jcr->impl->res.job->replace != 0) {
- replace = jcr->impl->res.job->replace;
+ if (jcr->dir_impl->replace != 0) {
+ replace = jcr->dir_impl->replace;
+ } else if (jcr->dir_impl->res.job->replace != 0) {
+ replace = jcr->dir_impl->res.job->replace;
} else {
replace = REPLACE_ALWAYS; /* always replace */
}
@@ -91,21 +91,22 @@ static void BuildRestoreCommand(JobControlRecord* jcr, PoolMem& ret)
if (jcr->RegexWhere) {
where = jcr->RegexWhere; /* override */
cmd = restorecmdR;
- } else if (jcr->impl->res.job->RegexWhere) {
- where = jcr->impl->res.job->RegexWhere; /* no override take from job */
+ } else if (jcr->dir_impl->res.job->RegexWhere) {
+ where = jcr->dir_impl->res.job->RegexWhere; /* no override take from job */
cmd = restorecmdR;
} else if (jcr->where) {
where = jcr->where; /* override */
cmd = restorecmd;
- } else if (jcr->impl->res.job->RestoreWhere) {
- where = jcr->impl->res.job->RestoreWhere; /* no override take from job */
+ } else if (jcr->dir_impl->res.job->RestoreWhere) {
+ where
+ = jcr->dir_impl->res.job->RestoreWhere; /* no override take from job */
cmd = restorecmd;
} else { /* nothing was specified */
where = &empty; /* use default */
cmd = restorecmd;
}
- jcr->prefix_links = jcr->impl->res.job->PrefixLinks;
+ jcr->prefix_links = jcr->dir_impl->res.job->PrefixLinks;
BashSpaces(where);
Mmsg(ret, cmd, replace, jcr->prefix_links, where);
@@ -133,7 +134,7 @@ static inline bool DoNativeRestoreBootstrap(JobControlRecord* jcr)
PoolMem RestoreCmd(PM_MESSAGE);
char* connection_target_address;
- client = jcr->impl->res.client;
+ client = jcr->dir_impl->res.client;
// This command is used for each part
BuildRestoreCommand(jcr, RestoreCmd);
@@ -144,7 +145,7 @@ static inline bool DoNativeRestoreBootstrap(JobControlRecord* jcr)
jcr->passive_client = client->passive;
while (!feof(info.bs)) {
if (!SelectNextRstore(jcr, info)) { goto bail_out; }
- store = jcr->impl->res.read_storage;
+ store = jcr->dir_impl->res.read_storage;
/**
* Open a message channel connection with the Storage
@@ -162,14 +163,16 @@ static inline bool DoNativeRestoreBootstrap(JobControlRecord* jcr)
sd = jcr->store_bsock;
// Now start a job with the Storage daemon
- if (!StartStorageDaemonJob(jcr, jcr->impl->res.read_storage_list, NULL)) {
+ if (!StartStorageDaemonJob(jcr, jcr->dir_impl->res.read_storage_list,
+ NULL)) {
goto bail_out;
}
if (first_time) {
// Start conversation with File daemon
jcr->setJobStatusWithPriorityCheck(JS_WaitFD);
- jcr->impl->keep_sd_auth_key = true; /* don't clear the sd_auth_key now */
+ jcr->dir_impl->keep_sd_auth_key
+ = true; /* don't clear the sd_auth_key now */
if (!ConnectToFileDaemon(jcr, 10, me->FDConnectTimeout, true)) {
goto bail_out;
@@ -182,11 +185,11 @@ static inline bool DoNativeRestoreBootstrap(JobControlRecord* jcr)
}
// Check if the file daemon supports passive client mode.
- 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 bail_out;
}
}
@@ -224,7 +227,7 @@ static inline bool DoNativeRestoreBootstrap(JobControlRecord* jcr)
// 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 {
@@ -260,7 +263,7 @@ static inline bool DoNativeRestoreBootstrap(JobControlRecord* jcr)
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 {
@@ -297,7 +300,7 @@ static inline bool DoNativeRestoreBootstrap(JobControlRecord* jcr)
if (!SendRunscriptsCommands(jcr)) { goto bail_out; }
// Only FD version 52 and later understand the sending of plugin options.
- if (jcr->impl->FDVersion >= FD_VERSION_52) {
+ if (jcr->dir_impl->FDVersion >= FD_VERSION_52) {
if (!SendPluginOptions(jcr)) {
Dmsg0(000, "FAIL: Send plugin options\n");
goto bail_out;
@@ -307,11 +310,11 @@ static inline bool DoNativeRestoreBootstrap(JobControlRecord* jcr)
* Plugin options specified and not a FD that understands the new
* protocol keyword.
*/
- if (jcr->impl->plugin_options) {
+ if (jcr->dir_impl->plugin_options) {
Jmsg(jcr, M_FATAL, 0,
_("Client \"%s\" doesn't support plugin option passing. "
"Please upgrade your client or disable compat mode.\n"),
- jcr->impl->res.client->resource_name_);
+ jcr->dir_impl->res.client->resource_name_);
goto bail_out;
}
}
@@ -328,8 +331,8 @@ static inline bool DoNativeRestoreBootstrap(JobControlRecord* jcr)
goto bail_out;
}
- if (jcr->impl->FDVersion < FD_VERSION_2) { /* Old FD */
- break; /* we do only one loop */
+ if (jcr->dir_impl->FDVersion < FD_VERSION_2) { /* Old FD */
+ break; /* we do only one loop */
} else {
if (!response(jcr, fd, OKstoreend, "Store end", DISPLAY_ERROR)) {
goto bail_out;
@@ -338,7 +341,9 @@ static inline bool DoNativeRestoreBootstrap(JobControlRecord* jcr)
}
} /* the whole boostrap has been send */
- if (fd && jcr->impl->FDVersion >= FD_VERSION_2) { fd->fsend("endrestore"); }
+ if (fd && jcr->dir_impl->FDVersion >= FD_VERSION_2) {
+ fd->fsend("endrestore");
+ }
CloseBootstrapFile(info);
return true;
@@ -378,14 +383,14 @@ bool DoNativeRestore(JobControlRecord* jcr)
{
int status;
- jcr->impl->jr.JobLevel = L_FULL; /* Full restore */
- if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->impl->jr)) {
+ jcr->dir_impl->jr.JobLevel = L_FULL; /* Full restore */
+ if (!jcr->db->UpdateJobStartRecord(jcr, &jcr->dir_impl->jr)) {
Jmsg(jcr, M_FATAL, 0, "%s", jcr->db->strerror());
goto bail_out;
}
Dmsg0(20, "Updated job start record\n");
- Dmsg1(20, "RestoreJobId=%d\n", jcr->impl->res.job->RestoreJobId);
+ Dmsg1(20, "RestoreJobId=%d\n", jcr->dir_impl->res.job->RestoreJobId);
if (!jcr->RestoreBootstrap) {
Jmsg(jcr, M_FATAL, 0,
@@ -421,16 +426,16 @@ void NativeRestoreCleanup(JobControlRecord* jcr, int TermCode)
Dmsg0(20, "In NativeRestoreCleanup\n");
UpdateJobEnd(jcr, TermCode);
- if (jcr->impl->unlink_bsr && jcr->RestoreBootstrap) {
+ if (jcr->dir_impl->unlink_bsr && jcr->RestoreBootstrap) {
SecureErase(jcr, jcr->RestoreBootstrap);
- jcr->impl->unlink_bsr = false;
+ jcr->dir_impl->unlink_bsr = false;
}
if (JobCanceled(jcr)) { CancelStorageDaemonJob(jcr); }
switch (TermCode) {
case JS_Terminated:
- if (jcr->impl->ExpectedFiles > jcr->impl->jr.JobFiles) {
+ if (jcr->dir_impl->ExpectedFiles > jcr->dir_impl->jr.JobFiles) {
TermMsg = _("Restore OK -- warning file count mismatch");
} else {
TermMsg = _("Restore OK");
@@ -445,8 +450,8 @@ void NativeRestoreCleanup(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;
@@ -454,8 +459,8 @@ void NativeRestoreCleanup(JobControlRecord* jcr, int TermCode)
TermMsg = _("Restore 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;
@@ -487,18 +492,20 @@ void GenerateRestoreSummary(JobControlRecord* jcr,
double kbps;
PoolMem temp, secure_erase_status;
- 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(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;
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 (kbps < 0.05) { kbps = 0; }
- 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:
@@ -522,28 +529,28 @@ void GenerateRestoreSummary(JobControlRecord* jcr,
" Termination: %s\n\n"),
BAREOS, my_name, kBareosVersionStrings.Full,
kBareosVersionStrings.ShortDate, kBareosVersionStrings.GetOsInfo(),
- jcr->impl->jr.JobId, jcr->impl->jr.Job,
- jcr->impl->res.client->resource_name_, sdt, edt,
+ jcr->dir_impl->jr.JobId, jcr->dir_impl->jr.Job,
+ jcr->dir_impl->res.client->resource_name_, sdt, edt,
edit_utime(RunTime, elapsed, sizeof(elapsed)),
- edit_uint64_with_commas((uint64_t)jcr->impl->ExpectedFiles, ec1),
- edit_uint64_with_commas((uint64_t)jcr->impl->jr.JobFiles, ec2),
- edit_uint64_with_commas(jcr->impl->jr.JobBytes, ec3), (float)kbps,
- sd_term_msg, kBareosVersionStrings.JoblogMessage,
- JobTriggerToString(jcr->impl->job_trigger).c_str(), TermMsg);
+ edit_uint64_with_commas((uint64_t)jcr->dir_impl->ExpectedFiles, ec1),
+ edit_uint64_with_commas((uint64_t)jcr->dir_impl->jr.JobFiles, ec2),
+ edit_uint64_with_commas(jcr->dir_impl->jr.JobBytes, ec3),
+ (float)kbps, sd_term_msg, kBareosVersionStrings.JoblogMessage,
+ JobTriggerToString(jcr->dir_impl->job_trigger).c_str(), TermMsg);
break;
default:
if (me->secure_erase_cmdline) {
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*")) {
+ if (!bstrcmp(jcr->dir_impl->FDSecureEraseCmd, "*None*")) {
Mmsg(temp, " FD Secure Erase Cmd: %s\n",
- jcr->impl->FDSecureEraseCmd);
+ jcr->dir_impl->FDSecureEraseCmd);
PmStrcat(secure_erase_status, temp.c_str());
}
- if (!bstrcmp(jcr->impl->SDSecureEraseCmd, "*None*")) {
+ if (!bstrcmp(jcr->dir_impl->SDSecureEraseCmd, "*None*")) {
Mmsg(temp, " SD Secure Erase Cmd: %s\n",
- jcr->impl->SDSecureEraseCmd);
+ jcr->dir_impl->SDSecureEraseCmd);
PmStrcat(secure_erase_status, temp.c_str());
}
@@ -569,15 +576,15 @@ void GenerateRestoreSummary(JobControlRecord* jcr,
" Termination: %s\n\n"),
BAREOS, my_name, kBareosVersionStrings.Full,
kBareosVersionStrings.ShortDate, kBareosVersionStrings.GetOsInfo(),
- jcr->impl->jr.JobId, jcr->impl->jr.Job,
- jcr->impl->res.client->resource_name_, sdt, edt,
+ jcr->dir_impl->jr.JobId, jcr->dir_impl->jr.Job,
+ jcr->dir_impl->res.client->resource_name_, sdt, edt,
edit_utime(RunTime, elapsed, sizeof(elapsed)),
- edit_uint64_with_commas((uint64_t)jcr->impl->ExpectedFiles, ec1),
- edit_uint64_with_commas((uint64_t)jcr->impl->jr.JobFiles, ec2),
- edit_uint64_with_commas(jcr->impl->jr.JobBytes, ec3), (float)kbps,
- jcr->JobErrors, fd_term_msg, sd_term_msg,
+ edit_uint64_with_commas((uint64_t)jcr->dir_impl->ExpectedFiles, ec1),
+ edit_uint64_with_commas((uint64_t)jcr->dir_impl->jr.JobFiles, ec2),
+ edit_uint64_with_commas(jcr->dir_impl->jr.JobBytes, ec3),
+ (float)kbps, jcr->JobErrors, fd_term_msg, sd_term_msg,
secure_erase_status.c_str(), kBareosVersionStrings.JoblogMessage,
- JobTriggerToString(jcr->impl->job_trigger).c_str(), TermMsg);
+ JobTriggerToString(jcr->dir_impl->job_trigger).c_str(), TermMsg);
break;
}
}
diff --git a/core/src/dird/run_on_incoming_connect_interval.cc b/core/src/dird/run_on_incoming_connect_interval.cc
index 15b5673c9..0175b5ee9 100644
--- a/core/src/dird/run_on_incoming_connect_interval.cc
+++ b/core/src/dird/run_on_incoming_connect_interval.cc
@@ -27,7 +27,7 @@
#include "dird/get_database_connection.h"
#include "dird/job.h"
#include "dird/job_trigger.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/run_on_incoming_connect_interval.h"
#include "dird/scheduler.h"
#include "dird/jcr_util.h"
diff --git a/core/src/dird/scheduler.cc b/core/src/dird/scheduler.cc
index 52808c48e..e85cdbf9b 100644
--- a/core/src/dird/scheduler.cc
+++ b/core/src/dird/scheduler.cc
@@ -36,7 +36,7 @@
#include "dird/scheduler.h"
#include "dird/scheduler_private.h"
#include "dird/scheduler_time_adapter.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/storage.h"
#include "lib/parse_conf.h"
diff --git a/core/src/dird/scheduler_private.cc b/core/src/dird/scheduler_private.cc
index 514513217..c05792343 100644
--- a/core/src/dird/scheduler_private.cc
+++ b/core/src/dird/scheduler_private.cc
@@ -25,7 +25,7 @@
#include "dird/dird.h"
#include "dird/dird_conf.h"
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/run_hour_validator.h"
#include "dird/scheduler.h"
@@ -70,34 +70,34 @@ static void SetJcrFromRunResource(JobControlRecord* jcr, RunResource* run)
}
if (run->pool != nullptr) {
- jcr->impl->res.pool = run->pool; /* override pool */
- jcr->impl->res.run_pool_override = true;
+ jcr->dir_impl->res.pool = run->pool; /* override pool */
+ jcr->dir_impl->res.run_pool_override = true;
}
if (run->full_pool != nullptr) {
- jcr->impl->res.full_pool = run->full_pool; /* override full pool */
- jcr->impl->res.run_full_pool_override = true;
+ jcr->dir_impl->res.full_pool = run->full_pool; /* override full pool */
+ jcr->dir_impl->res.run_full_pool_override = true;
}
if (run->vfull_pool != nullptr) {
- jcr->impl->res.vfull_pool
+ jcr->dir_impl->res.vfull_pool
= run->vfull_pool; /* override virtual full pool */
- jcr->impl->res.run_vfull_pool_override = true;
+ jcr->dir_impl->res.run_vfull_pool_override = true;
}
if (run->inc_pool != nullptr) {
- jcr->impl->res.inc_pool = run->inc_pool; /* override inc pool */
- jcr->impl->res.run_inc_pool_override = true;
+ jcr->dir_impl->res.inc_pool = run->inc_pool; /* override inc pool */
+ jcr->dir_impl->res.run_inc_pool_override = true;
}
if (run->diff_pool != nullptr) {
- jcr->impl->res.diff_pool = run->diff_pool; /* override diff pool */
- jcr->impl->res.run_diff_pool_override = true;
+ jcr->dir_impl->res.diff_pool = run->diff_pool; /* override diff pool */
+ jcr->dir_impl->res.run_diff_pool_override = true;
}
if (run->next_pool != nullptr) {
- jcr->impl->res.next_pool = run->next_pool; /* override next pool */
- jcr->impl->res.run_next_pool_override = true;
+ jcr->dir_impl->res.next_pool = run->next_pool; /* override next pool */
+ jcr->dir_impl->res.run_next_pool_override = true;
}
if (run->storage != nullptr) {
@@ -108,19 +108,19 @@ static void SetJcrFromRunResource(JobControlRecord* jcr, RunResource* run)
}
if (run->msgs != nullptr) {
- jcr->impl->res.messages = run->msgs; /* override messages */
+ jcr->dir_impl->res.messages = run->msgs; /* override messages */
}
if (run->Priority != 0) { jcr->JobPriority = run->Priority; }
- if (run->spool_data_set) { jcr->impl->spool_data = run->spool_data; }
+ if (run->spool_data_set) { jcr->dir_impl->spool_data = run->spool_data; }
if (run->accurate_set) {
jcr->accurate = run->accurate; /* overwrite accurate mode */
}
if (run->MaxRunSchedTime_set) {
- jcr->impl->MaxRunSchedTime = run->MaxRunSchedTime;
+ jcr->dir_impl->MaxRunSchedTime = run->MaxRunSchedTime;
}
}
@@ -153,7 +153,7 @@ void SchedulerPrivate::WaitForJobsToRun()
if (jcr != nullptr) {
Dmsg1(local_debuglevel, "Scheduler: Running job %s.\n",
run_job.job->resource_name_);
- jcr->impl->job_trigger = next_job.job_trigger;
+ jcr->dir_impl->job_trigger = next_job.job_trigger;
ExecuteJobCallback_(jcr);
}
diff --git a/core/src/dird/sd_cmds.cc b/core/src/dird/sd_cmds.cc
index 57a763dd9..2455d8866 100644
--- a/core/src/dird/sd_cmds.cc
+++ b/core/src/dird/sd_cmds.cc
@@ -34,7 +34,7 @@
#include "dird/dird_globals.h"
#include "dird/authenticate.h"
#include "dird/getmsg.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/msgchan.h"
#include "dird/storage.h"
@@ -94,10 +94,10 @@ bool ConnectToStorageDaemon(JobControlRecord* jcr,
if (jcr->store_bsock) { return true; /* already connected */ }
StorageResource* store;
- if (jcr->impl->res.write_storage) {
- store = jcr->impl->res.write_storage;
+ if (jcr->dir_impl->res.write_storage) {
+ store = jcr->dir_impl->res.write_storage;
} else {
- store = jcr->impl->res.read_storage;
+ store = jcr->dir_impl->res.read_storage;
}
if (!store) {
@@ -154,7 +154,7 @@ bool ConnectToStorageDaemon(JobControlRecord* jcr,
BareosSocket* open_sd_bsock(UaContext* ua)
{
- StorageResource* store = ua->jcr->impl->res.write_storage;
+ StorageResource* store = ua->jcr->dir_impl->res.write_storage;
if (!store) {
Dmsg0(200, "open_sd_bsock: No storage resource pointer set\n");
@@ -183,12 +183,12 @@ char* get_volume_name_from_SD(UaContext* ua,
drive_number_t drive)
{
BareosSocket* sd;
- StorageResource* store = ua->jcr->impl->res.write_storage;
+ StorageResource* store = ua->jcr->dir_impl->res.write_storage;
char dev_name[MAX_NAME_LENGTH];
char* VolName = nullptr;
int rtn_slot;
- ua->jcr->impl->res.write_storage = store;
+ ua->jcr->dir_impl->res.write_storage = store;
if (!(sd = open_sd_bsock(ua))) {
ua->ErrorMsg(_("Could not open SD socket.\n"));
return nullptr;
@@ -264,7 +264,7 @@ dlist<vol_list_t>* native_get_vol_list(UaContext* ua,
dlist<vol_list_t>* vol_list;
BareosSocket* sd = nullptr;
- ua->jcr->impl->res.write_storage = store;
+ ua->jcr->dir_impl->res.write_storage = store;
if (!(sd = open_sd_bsock(ua))) { return nullptr; }
bstrncpy(dev_name, store->dev_name(), sizeof(dev_name));
@@ -531,7 +531,7 @@ slot_number_t NativeGetNumSlots(UaContext* ua, StorageResource* store)
BareosSocket* sd;
slot_number_t slots = 0;
- ua->jcr->impl->res.write_storage = store;
+ ua->jcr->dir_impl->res.write_storage = store;
if (!(sd = open_sd_bsock(ua))) { return 0; }
bstrncpy(dev_name, store->dev_name(), sizeof(dev_name));
@@ -559,7 +559,7 @@ drive_number_t NativeGetNumDrives(UaContext* ua, StorageResource* store)
BareosSocket* sd;
drive_number_t drives = 0;
- ua->jcr->impl->res.write_storage = store;
+ ua->jcr->dir_impl->res.write_storage = store;
if (!(sd = open_sd_bsock(ua))) { return 0; }
bstrncpy(dev_name, store->dev_name(), sizeof(dev_name));
@@ -591,7 +591,7 @@ bool CancelStorageDaemonJob(UaContext* ua, StorageResource* store, char* JobId)
control_jcr = new_control_jcr("*JobCancel*", JT_SYSTEM);
- control_jcr->impl->res.write_storage = store;
+ control_jcr->dir_impl->res.write_storage = store;
/* the next call will set control_jcr->store_bsock */
if (!ConnectToStorageDaemon(control_jcr, 10, me->SDConnectTimeout, true)) {
@@ -619,20 +619,20 @@ bool CancelStorageDaemonJob(UaContext* ua,
JobControlRecord* jcr,
bool interactive)
{
- if (!ua->jcr->impl->res.write_storage_list) {
- if (jcr->impl->res.read_storage_list) {
- CopyWstorage(ua->jcr, jcr->impl->res.read_storage_list,
+ if (!ua->jcr->dir_impl->res.write_storage_list) {
+ if (jcr->dir_impl->res.read_storage_list) {
+ CopyWstorage(ua->jcr, jcr->dir_impl->res.read_storage_list,
_("Job resource"));
} else {
- CopyWstorage(ua->jcr, jcr->impl->res.write_storage_list,
+ CopyWstorage(ua->jcr, jcr->dir_impl->res.write_storage_list,
_("Job resource"));
}
} else {
UnifiedStorageResource store;
- if (jcr->impl->res.read_storage_list) {
- store.store = jcr->impl->res.read_storage;
+ if (jcr->dir_impl->res.read_storage_list) {
+ store.store = jcr->dir_impl->res.read_storage;
} else {
- store.store = jcr->impl->res.write_storage;
+ store.store = jcr->dir_impl->res.write_storage;
}
if (!store.store) {
Dmsg0(200, "CancelStorageDaemonJob: No storage resource pointer set\n");
@@ -661,7 +661,7 @@ bool CancelStorageDaemonJob(UaContext* ua,
TerminateAndCloseJcrStoreSocket(ua->jcr);
- if (!interactive) { jcr->impl->sd_canceled = true; }
+ if (!interactive) { jcr->dir_impl->sd_canceled = true; }
SdMsgThreadSendSignal(jcr, TIMEOUT_SIGNAL);
@@ -672,7 +672,7 @@ bool CancelStorageDaemonJob(UaContext* ua,
void CancelStorageDaemonJob(JobControlRecord* jcr)
{
- if (jcr->impl->sd_canceled) { return; /* cancel only once */ }
+ if (jcr->dir_impl->sd_canceled) { return; /* cancel only once */ }
UaContext* ua = new_ua_context(jcr);
JobControlRecord* control_jcr = new_control_jcr("*JobCancel*", JT_SYSTEM);
@@ -754,7 +754,7 @@ bool NativeTransferVolume(UaContext* ua,
bool retval = true;
char dev_name[MAX_NAME_LENGTH];
- ua->jcr->impl->res.write_storage = store;
+ ua->jcr->dir_impl->res.write_storage = store;
if (!(sd = open_sd_bsock(ua))) { return false; }
bstrncpy(dev_name, store->dev_name(), sizeof(dev_name));
@@ -793,7 +793,7 @@ bool NativeAutochangerVolumeOperation(UaContext* ua,
bool retval = true;
char dev_name[MAX_NAME_LENGTH];
- ua->jcr->impl->res.write_storage = store;
+ ua->jcr->dir_impl->res.write_storage = store;
if (!(sd = open_sd_bsock(ua))) { return false; }
bstrncpy(dev_name, store->dev_name(), sizeof(dev_name));
@@ -830,21 +830,23 @@ bool SendSecureEraseReqToSd(JobControlRecord* jcr)
int32_t n;
BareosSocket* sd = jcr->store_bsock;
- if (!jcr->impl->SDSecureEraseCmd) {
- jcr->impl->SDSecureEraseCmd = GetPoolMemory(PM_NAME);
+ if (!jcr->dir_impl->SDSecureEraseCmd) {
+ jcr->dir_impl->SDSecureEraseCmd = GetPoolMemory(PM_NAME);
}
sd->fsend(getSecureEraseCmd);
while ((n = BgetDirmsg(sd)) >= 0) {
- jcr->impl->SDSecureEraseCmd
- = CheckPoolMemorySize(jcr->impl->SDSecureEraseCmd, sd->message_length);
- if (sscanf(sd->msg, OKSecureEraseCmd, jcr->impl->SDSecureEraseCmd) == 1) {
- Dmsg1(421, "Got SD Secure Erase Cmd: %s\n", jcr->impl->SDSecureEraseCmd);
+ jcr->dir_impl->SDSecureEraseCmd = CheckPoolMemorySize(
+ jcr->dir_impl->SDSecureEraseCmd, sd->message_length);
+ if (sscanf(sd->msg, OKSecureEraseCmd, jcr->dir_impl->SDSecureEraseCmd)
+ == 1) {
+ Dmsg1(421, "Got SD Secure Erase Cmd: %s\n",
+ jcr->dir_impl->SDSecureEraseCmd);
break;
} else {
Jmsg(jcr, M_WARNING, 0, _("Unexpected SD Secure Erase Cmd: %s\n"),
sd->msg);
- PmStrcpy(jcr->impl->SDSecureEraseCmd, "*None*");
+ PmStrcpy(jcr->dir_impl->SDSecureEraseCmd, "*None*");
return false;
}
}
@@ -874,7 +876,7 @@ bool DoStorageResolve(UaContext* ua, StorageResource* store)
PmStrcpy(lstore.store_source, _("unknown source"));
SetWstorage(ua->jcr, &lstore);
- ua->jcr->impl->res.write_storage = store;
+ ua->jcr->dir_impl->res.write_storage = store;
if (!(sd = open_sd_bsock(ua))) { return false; }
for (int i = 1; i < ua->argc; i++) {
@@ -896,10 +898,10 @@ bool SendStoragePluginOptions(JobControlRecord* jcr)
const char* plugin_options;
BareosSocket* sd = jcr->store_bsock;
- if (jcr->impl->res.job && jcr->impl->res.job->SdPluginOptions
- && jcr->impl->res.job->SdPluginOptions->size()) {
+ if (jcr->dir_impl->res.job && jcr->dir_impl->res.job->SdPluginOptions
+ && jcr->dir_impl->res.job->SdPluginOptions->size()) {
foreach_alist_index (i, plugin_options,
- jcr->impl->res.job->SdPluginOptions) {
+ jcr->dir_impl->res.job->SdPluginOptions) {
PmStrcpy(cur_plugin_options, plugin_options);
BashSpaces(cur_plugin_options.c_str());
diff --git a/core/src/dird/stats.cc b/core/src/dird/stats.cc
index eb8bc4b67..6ac3e5715 100644
--- a/core/src/dird/stats.cc
+++ b/core/src/dird/stats.cc
@@ -29,7 +29,7 @@
#include "dird.h"
#include "dird/dird_globals.h"
#include "dird/get_database_connection.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "cats/sql_pooling.h"
#include "dird/sd_cmds.h"
#include "dird/ua_server.h"
@@ -129,12 +129,12 @@ extern "C" void* statistics_thread(void*)
jcr = new_control_jcr("*StatisticsCollector*", JT_SYSTEM);
- jcr->impl->res.catalog
+ jcr->dir_impl->res.catalog
= (CatalogResource*)my_config->GetNextRes(R_CATALOG, NULL);
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;
}
@@ -191,7 +191,7 @@ extern "C" void* statistics_thread(void*)
continue;
}
- jcr->impl->res.read_storage = store;
+ jcr->dir_impl->res.read_storage = store;
if (!ConnectToStorageDaemon(jcr, 2, 1, false)) {
UnlockRes(my_config);
continue;
diff --git a/core/src/dird/storage.cc b/core/src/dird/storage.cc
index 47b464957..058473135 100644
--- a/core/src/dird/storage.cc
+++ b/core/src/dird/storage.cc
@@ -31,7 +31,7 @@
#include "include/bareos.h"
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/sd_cmds.h"
#include "include/auth_protocol_types.h"
#include "lib/parse_conf.h"
@@ -100,21 +100,21 @@ void CopyRstorage(JobControlRecord* jcr,
{
if (storage) {
StorageResource* store = nullptr;
- if (jcr->impl->res.read_storage_list) {
- delete jcr->impl->res.read_storage_list;
+ if (jcr->dir_impl->res.read_storage_list) {
+ delete jcr->dir_impl->res.read_storage_list;
}
- jcr->impl->res.read_storage_list
+ jcr->dir_impl->res.read_storage_list
= new alist<StorageResource*>(10, not_owned_by_alist);
foreach_alist (store, storage) {
- jcr->impl->res.read_storage_list->append(store);
+ jcr->dir_impl->res.read_storage_list->append(store);
}
- if (!jcr->impl->res.rstore_source) {
- jcr->impl->res.rstore_source = GetPoolMemory(PM_MESSAGE);
+ if (!jcr->dir_impl->res.rstore_source) {
+ jcr->dir_impl->res.rstore_source = GetPoolMemory(PM_MESSAGE);
}
- PmStrcpy(jcr->impl->res.rstore_source, where);
- if (jcr->impl->res.read_storage_list) {
- jcr->impl->res.read_storage
- = (StorageResource*)jcr->impl->res.read_storage_list->first();
+ PmStrcpy(jcr->dir_impl->res.rstore_source, where);
+ if (jcr->dir_impl->res.read_storage_list) {
+ jcr->dir_impl->res.read_storage
+ = (StorageResource*)jcr->dir_impl->res.read_storage_list->first();
}
}
}
@@ -128,30 +128,30 @@ void SetRstorage(JobControlRecord* jcr, UnifiedStorageResource* store)
StorageResource* storage = nullptr;
if (!store->store) { return; }
- if (jcr->impl->res.read_storage_list) { FreeRstorage(jcr); }
- if (!jcr->impl->res.read_storage_list) {
- jcr->impl->res.read_storage_list
+ if (jcr->dir_impl->res.read_storage_list) { FreeRstorage(jcr); }
+ if (!jcr->dir_impl->res.read_storage_list) {
+ jcr->dir_impl->res.read_storage_list
= new alist<StorageResource*>(10, not_owned_by_alist);
}
- jcr->impl->res.read_storage = store->store;
- if (!jcr->impl->res.rstore_source) {
- jcr->impl->res.rstore_source = GetPoolMemory(PM_MESSAGE);
+ jcr->dir_impl->res.read_storage = store->store;
+ if (!jcr->dir_impl->res.rstore_source) {
+ jcr->dir_impl->res.rstore_source = GetPoolMemory(PM_MESSAGE);
}
- PmStrcpy(jcr->impl->res.rstore_source, store->store_source);
- foreach_alist (storage, jcr->impl->res.read_storage_list) {
+ PmStrcpy(jcr->dir_impl->res.rstore_source, store->store_source);
+ foreach_alist (storage, jcr->dir_impl->res.read_storage_list) {
if (store->store == storage) { return; }
}
/* Store not in list, so add it */
- jcr->impl->res.read_storage_list->prepend(store->store);
+ jcr->dir_impl->res.read_storage_list->prepend(store->store);
}
void FreeRstorage(JobControlRecord* jcr)
{
- if (jcr->impl->res.read_storage_list) {
- delete jcr->impl->res.read_storage_list;
- jcr->impl->res.read_storage_list = NULL;
+ if (jcr->dir_impl->res.read_storage_list) {
+ delete jcr->dir_impl->res.read_storage_list;
+ jcr->dir_impl->res.read_storage_list = NULL;
}
- jcr->impl->res.read_storage = NULL;
+ jcr->dir_impl->res.read_storage = NULL;
}
// Copy the storage definitions from an alist to the JobControlRecord
@@ -161,25 +161,25 @@ void CopyWstorage(JobControlRecord* jcr,
{
if (storage) {
StorageResource* st = nullptr;
- if (jcr->impl->res.write_storage_list) {
- delete jcr->impl->res.write_storage_list;
+ if (jcr->dir_impl->res.write_storage_list) {
+ delete jcr->dir_impl->res.write_storage_list;
}
- jcr->impl->res.write_storage_list
+ jcr->dir_impl->res.write_storage_list
= new alist<StorageResource*>(10, not_owned_by_alist);
foreach_alist (st, storage) {
Dmsg1(100, "write_storage_list=%s\n", st->resource_name_);
- jcr->impl->res.write_storage_list->append(st);
+ jcr->dir_impl->res.write_storage_list->append(st);
}
- if (!jcr->impl->res.wstore_source) {
- jcr->impl->res.wstore_source = GetPoolMemory(PM_MESSAGE);
+ if (!jcr->dir_impl->res.wstore_source) {
+ jcr->dir_impl->res.wstore_source = GetPoolMemory(PM_MESSAGE);
}
- PmStrcpy(jcr->impl->res.wstore_source, where);
- if (jcr->impl->res.write_storage_list) {
- jcr->impl->res.write_storage
- = (StorageResource*)jcr->impl->res.write_storage_list->first();
+ PmStrcpy(jcr->dir_impl->res.wstore_source, where);
+ if (jcr->dir_impl->res.write_storage_list) {
+ jcr->dir_impl->res.write_storage
+ = (StorageResource*)jcr->dir_impl->res.write_storage_list->first();
Dmsg2(100, "write_storage=%s where=%s\n",
- jcr->impl->res.write_storage->resource_name_,
- jcr->impl->res.wstore_source);
+ jcr->dir_impl->res.write_storage->resource_name_,
+ jcr->dir_impl->res.wstore_source);
}
}
}
@@ -193,34 +193,34 @@ void SetWstorage(JobControlRecord* jcr, UnifiedStorageResource* store)
StorageResource* storage = nullptr;
if (!store->store) { return; }
- if (jcr->impl->res.write_storage_list) { FreeWstorage(jcr); }
- if (!jcr->impl->res.write_storage_list) {
- jcr->impl->res.write_storage_list
+ if (jcr->dir_impl->res.write_storage_list) { FreeWstorage(jcr); }
+ if (!jcr->dir_impl->res.write_storage_list) {
+ jcr->dir_impl->res.write_storage_list
= new alist<StorageResource*>(10, not_owned_by_alist);
}
- jcr->impl->res.write_storage = store->store;
- if (!jcr->impl->res.wstore_source) {
- jcr->impl->res.wstore_source = GetPoolMemory(PM_MESSAGE);
+ jcr->dir_impl->res.write_storage = store->store;
+ if (!jcr->dir_impl->res.wstore_source) {
+ jcr->dir_impl->res.wstore_source = GetPoolMemory(PM_MESSAGE);
}
- PmStrcpy(jcr->impl->res.wstore_source, store->store_source);
+ PmStrcpy(jcr->dir_impl->res.wstore_source, store->store_source);
Dmsg2(50, "write_storage=%s where=%s\n",
- jcr->impl->res.write_storage->resource_name_,
- jcr->impl->res.wstore_source);
- foreach_alist (storage, jcr->impl->res.write_storage_list) {
+ jcr->dir_impl->res.write_storage->resource_name_,
+ jcr->dir_impl->res.wstore_source);
+ foreach_alist (storage, jcr->dir_impl->res.write_storage_list) {
if (store->store == storage) { return; }
}
// Store not in list, so add it
- jcr->impl->res.write_storage_list->prepend(store->store);
+ jcr->dir_impl->res.write_storage_list->prepend(store->store);
}
void FreeWstorage(JobControlRecord* jcr)
{
- if (jcr->impl->res.write_storage_list) {
- delete jcr->impl->res.write_storage_list;
- jcr->impl->res.write_storage_list = NULL;
+ if (jcr->dir_impl->res.write_storage_list) {
+ delete jcr->dir_impl->res.write_storage_list;
+ jcr->dir_impl->res.write_storage_list = NULL;
}
- jcr->impl->res.write_storage = NULL;
+ jcr->dir_impl->res.write_storage = NULL;
}
/**
@@ -236,35 +236,37 @@ void SetPairedStorage(JobControlRecord* jcr)
switch (jcr->getJobType()) {
case JT_BACKUP:
// For a backup we look at the write storage.
- if (jcr->impl->res.write_storage_list) {
+ if (jcr->dir_impl->res.write_storage_list) {
/*
- * Setup the jcr->impl_->res.write_storage_list to point to all
+ * Setup the jcr->dir_impl_->res.write_storage_list to point to all
* paired_storage entries of all the storage currently in the
* jcrres.->write_storage_list. Save the original list under
- * jcr->impl_->res.paired_read_write_storage_list.
+ * jcr->dir_impl_->res.paired_read_write_storage_list.
*/
- jcr->impl->res.paired_read_write_storage_list
- = jcr->impl->res.write_storage_list;
- jcr->impl->res.write_storage_list
+ jcr->dir_impl->res.paired_read_write_storage_list
+ = jcr->dir_impl->res.write_storage_list;
+ jcr->dir_impl->res.write_storage_list
= new alist<StorageResource*>(10, not_owned_by_alist);
- foreach_alist (store, jcr->impl->res.paired_read_write_storage_list) {
+ foreach_alist (store,
+ jcr->dir_impl->res.paired_read_write_storage_list) {
if (store->paired_storage) {
Dmsg1(100, "write_storage_list=%s\n",
store->paired_storage->resource_name_);
- jcr->impl->res.write_storage_list->append(store->paired_storage);
+ jcr->dir_impl->res.write_storage_list->append(
+ store->paired_storage);
}
}
/*
- * Swap the actual jcr->impl_->res.write_storage to point to the paired
- * storage entry. We save the actual storage entry in
+ * Swap the actual jcr->dir_impl_->res.write_storage to point to the
+ * paired storage entry. We save the actual storage entry in
* paired_read_write_storage which is for restore in the
* FreePairedStorage() function.
*/
- store = jcr->impl->res.write_storage;
+ store = jcr->dir_impl->res.write_storage;
if (store->paired_storage) {
- jcr->impl->res.write_storage = store->paired_storage;
- jcr->impl->res.paired_read_write_storage = store;
+ jcr->dir_impl->res.write_storage = store->paired_storage;
+ jcr->dir_impl->res.paired_read_write_storage = store;
}
} else {
Jmsg(jcr, M_FATAL, 0,
@@ -273,16 +275,16 @@ void SetPairedStorage(JobControlRecord* jcr)
break;
case JT_RESTORE:
// For a restores we look at the read storage.
- if (jcr->impl->res.read_storage_list) {
+ if (jcr->dir_impl->res.read_storage_list) {
/*
- * Setup the jcr->impl_->res.paired_read_write_storage_list to point to
- * all paired_storage entries of all the storage currently in the
- * jcr->impl_->res.read_storage_list.
+ * Setup the jcr->dir_impl_->res.paired_read_write_storage_list to point
+ * to all paired_storage entries of all the storage currently in the
+ * jcr->dir_impl_->res.read_storage_list.
*/
- jcr->impl->res.paired_read_write_storage_list
+ jcr->dir_impl->res.paired_read_write_storage_list
= new alist<StorageResource*>(10, not_owned_by_alist);
foreach_alist (paired_read_write_storage,
- jcr->impl->res.read_storage_list) {
+ jcr->dir_impl->res.read_storage_list) {
store = (StorageResource*)my_config->GetNextRes(R_STORAGE, NULL);
while (store) {
if (store->paired_storage == paired_read_write_storage) { break; }
@@ -296,15 +298,15 @@ void SetPairedStorage(JobControlRecord* jcr)
* paired_read_write_storage as its paired storage.
*/
if (store) {
- jcr->impl->res.paired_read_write_storage_list->append(store);
+ jcr->dir_impl->res.paired_read_write_storage_list->append(store);
/*
* If the current processed paired_read_write_storage is also the
- * current entry in jcr->impl_->res.read_storage update the
+ * current entry in jcr->dir_impl_->res.read_storage update the
* jcr->paired_read_write_storage to point to this storage entry.
*/
- if (paired_read_write_storage == jcr->impl->res.read_storage) {
- jcr->impl->res.paired_read_write_storage = store;
+ if (paired_read_write_storage == jcr->dir_impl->res.read_storage) {
+ jcr->dir_impl->res.paired_read_write_storage = store;
}
}
}
@@ -316,35 +318,36 @@ void SetPairedStorage(JobControlRecord* jcr)
case JT_MIGRATE:
case JT_COPY:
// For a migrate or copy we look at the read storage.
- if (jcr->impl->res.read_storage_list) {
+ if (jcr->dir_impl->res.read_storage_list) {
/*
- * Setup the jcr->impl_->res.read_storage_list to point to all
+ * Setup the jcr->dir_impl_->res.read_storage_list to point to all
* paired_storage entries of all the storage currently in the
- * jcr->impl_->res.read_storage_list. Save the original list under
- * jcr->impl_->res.paired_read_write_storage_list.
+ * jcr->dir_impl_->res.read_storage_list. Save the original list under
+ * jcr->dir_impl_->res.paired_read_write_storage_list.
*/
- jcr->impl->res.paired_read_write_storage_list
- = jcr->impl->res.read_storage_list;
- jcr->impl->res.read_storage_list
+ jcr->dir_impl->res.paired_read_write_storage_list
+ = jcr->dir_impl->res.read_storage_list;
+ jcr->dir_impl->res.read_storage_list
= new alist<StorageResource*>(10, not_owned_by_alist);
- foreach_alist (store, jcr->impl->res.paired_read_write_storage_list) {
+ foreach_alist (store,
+ jcr->dir_impl->res.paired_read_write_storage_list) {
if (store->paired_storage) {
Dmsg1(100, "read_storage_list=%s\n",
store->paired_storage->resource_name_);
- jcr->impl->res.read_storage_list->append(store->paired_storage);
+ jcr->dir_impl->res.read_storage_list->append(store->paired_storage);
}
}
/*
- * Swap the actual jcr->impl_->res.read_storage to point to the paired
- * storage entry. We save the actual storage entry in
+ * Swap the actual jcr->dir_impl_->res.read_storage to point to the
+ * paired storage entry. We save the actual storage entry in
* paired_read_write_storage which is for restore in the
* FreePairedStorage() function.
*/
- store = jcr->impl->res.read_storage;
+ store = jcr->dir_impl->res.read_storage;
if (store->paired_storage) {
- jcr->impl->res.read_storage = store->paired_storage;
- jcr->impl->res.paired_read_write_storage = store;
+ jcr->dir_impl->res.read_storage = store->paired_storage;
+ jcr->dir_impl->res.paired_read_write_storage = store;
}
} else {
Jmsg(jcr, M_FATAL, 0,
@@ -366,51 +369,51 @@ void SetPairedStorage(JobControlRecord* jcr)
*/
void FreePairedStorage(JobControlRecord* jcr)
{
- if (jcr->impl->res.paired_read_write_storage_list) {
+ if (jcr->dir_impl->res.paired_read_write_storage_list) {
switch (jcr->getJobType()) {
case JT_BACKUP:
// For a backup we look at the write storage.
- if (jcr->impl->res.write_storage_list) {
+ if (jcr->dir_impl->res.write_storage_list) {
/*
- * The jcr->impl_->res.write_storage_list contain a set of paired
+ * The jcr->dir_impl_->res.write_storage_list contain a set of paired
* storages. We just delete it content and swap back to the real
* master storage.
*/
- delete jcr->impl->res.write_storage_list;
- jcr->impl->res.write_storage_list
- = jcr->impl->res.paired_read_write_storage_list;
- jcr->impl->res.paired_read_write_storage_list = NULL;
- jcr->impl->res.write_storage
- = jcr->impl->res.paired_read_write_storage;
- jcr->impl->res.paired_read_write_storage = NULL;
+ delete jcr->dir_impl->res.write_storage_list;
+ jcr->dir_impl->res.write_storage_list
+ = jcr->dir_impl->res.paired_read_write_storage_list;
+ jcr->dir_impl->res.paired_read_write_storage_list = NULL;
+ jcr->dir_impl->res.write_storage
+ = jcr->dir_impl->res.paired_read_write_storage;
+ jcr->dir_impl->res.paired_read_write_storage = NULL;
}
break;
case JT_RESTORE:
/*
- * The jcr->impl_->res.read_storage_list contain a set of paired
+ * The jcr->dir_impl_->res.read_storage_list contain a set of paired
* storages. For the read we created a list of alternative storage which
* we can just drop now.
*/
- delete jcr->impl->res.paired_read_write_storage_list;
- jcr->impl->res.paired_read_write_storage_list = NULL;
- jcr->impl->res.paired_read_write_storage = NULL;
+ delete jcr->dir_impl->res.paired_read_write_storage_list;
+ jcr->dir_impl->res.paired_read_write_storage_list = NULL;
+ jcr->dir_impl->res.paired_read_write_storage = NULL;
break;
case JT_MIGRATE:
case JT_COPY:
// For a migrate or copy we look at the read storage.
- if (jcr->impl->res.read_storage_list) {
+ if (jcr->dir_impl->res.read_storage_list) {
/*
- * The jcr->impl_->res.read_storage_list contains a set of paired
+ * The jcr->dir_impl_->res.read_storage_list contains a set of paired
* storages. We just delete it content and swap back to the real
* master storage.
*/
- delete jcr->impl->res.read_storage_list;
- jcr->impl->res.read_storage_list
- = jcr->impl->res.paired_read_write_storage_list;
- jcr->impl->res.paired_read_write_storage_list = NULL;
- jcr->impl->res.read_storage
- = jcr->impl->res.paired_read_write_storage;
- jcr->impl->res.paired_read_write_storage = NULL;
+ delete jcr->dir_impl->res.read_storage_list;
+ jcr->dir_impl->res.read_storage_list
+ = jcr->dir_impl->res.paired_read_write_storage_list;
+ jcr->dir_impl->res.paired_read_write_storage_list = NULL;
+ jcr->dir_impl->res.read_storage
+ = jcr->dir_impl->res.paired_read_write_storage;
+ jcr->dir_impl->res.paired_read_write_storage = NULL;
}
break;
default:
@@ -430,8 +433,8 @@ bool HasPairedStorage(JobControlRecord* jcr)
switch (jcr->getJobType()) {
case JT_BACKUP:
// For a backup we look at the write storage.
- if (jcr->impl->res.write_storage_list) {
- foreach_alist (store, jcr->impl->res.write_storage_list) {
+ if (jcr->dir_impl->res.write_storage_list) {
+ foreach_alist (store, jcr->dir_impl->res.write_storage_list) {
if (!store->paired_storage) { return false; }
}
} else {
@@ -444,8 +447,8 @@ bool HasPairedStorage(JobControlRecord* jcr)
case JT_RESTORE:
case JT_MIGRATE:
case JT_COPY:
- if (jcr->impl->res.read_storage_list) {
- foreach_alist (store, jcr->impl->res.read_storage_list) {
+ if (jcr->dir_impl->res.read_storage_list) {
+ foreach_alist (store, jcr->dir_impl->res.read_storage_list) {
if (!store->paired_storage) { return false; }
}
} else {
@@ -472,7 +475,7 @@ bool SelectNextRstore(JobControlRecord* jcr, bootstrap_info& info)
{
UnifiedStorageResource ustore;
- if (bstrcmp(jcr->impl->res.read_storage->resource_name_, info.storage)) {
+ if (bstrcmp(jcr->dir_impl->res.read_storage->resource_name_, info.storage)) {
return true; /* Same SD nothing to change */
}
diff --git a/core/src/dird/testfind.cc b/core/src/dird/testfind.cc
index 516a6c97b..b723b303f 100644
--- a/core/src/dird/testfind.cc
+++ b/core/src/dird/testfind.cc
@@ -35,7 +35,7 @@
#include "dird/jcr_util.h"
#include "dird/dird_globals.h"
#include "dird/dird_conf.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "lib/recent_job_results_list.h"
#include "findlib/attribs.h"
#include "filed/fileset.h"
@@ -53,9 +53,9 @@ void TestfindFreeJcr(JobControlRecord* jcr)
{
Dmsg0(200, "Start testfind FreeJcr\n");
- if (jcr->impl) {
- delete jcr->impl;
- jcr->impl = nullptr;
+ if (jcr->dir_impl) {
+ delete jcr->dir_impl;
+ jcr->dir_impl = nullptr;
}
Dmsg0(200, "End testfind FreeJcr\n");
@@ -162,10 +162,10 @@ int main(int argc, char* const* argv)
}
jcr = NewDirectorJcr(TestfindFreeJcr);
- jcr->impl->res.fileset
+ jcr->dir_impl->res.fileset
= (FilesetResource*)my_config->GetResWithName(R_FILESET, fileset_name);
- if (jcr->impl->res.fileset == NULL) {
+ if (jcr->dir_impl->res.fileset == NULL) {
fprintf(stderr, "%s: Fileset not found\n", fileset_name);
FilesetResource* var;
@@ -433,7 +433,7 @@ static void CountFiles(FindFilesPacket* ar)
static bool CopyFileset(FindFilesPacket* ff, JobControlRecord* jcr)
{
- FilesetResource* jcr_fileset = jcr->impl->res.fileset;
+ FilesetResource* jcr_fileset = jcr->dir_impl->res.fileset;
int num;
bool include = true;
diff --git a/core/src/dird/ua_cmds.cc b/core/src/dird/ua_cmds.cc
index 05bd82eea..70a6577e0 100644
--- a/core/src/dird/ua_cmds.cc
+++ b/core/src/dird/ua_cmds.cc
@@ -34,7 +34,7 @@
#include "dird/ua_cmdstruct.h"
#include "dird/expand.h"
#include "dird/fd_cmds.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/next_vol.h"
#include "dird/sd_cmds.h"
@@ -590,9 +590,9 @@ bool Do_a_command(UaContext* ua)
Dmsg1(900, "Command: %s\n", ua->argk[0]);
if (ua->argc == 0) { return false; }
- while (ua->jcr->impl->res.write_storage_list
- && ua->jcr->impl->res.write_storage_list->size()) {
- ua->jcr->impl->res.write_storage_list->remove(0);
+ while (ua->jcr->dir_impl->res.write_storage_list
+ && ua->jcr->dir_impl->res.write_storage_list->size()) {
+ ua->jcr->dir_impl->res.write_storage_list->remove(0);
}
len = strlen(ua->argk[0]);
@@ -894,7 +894,7 @@ static inline bool SetbwlimitFiled(UaContext* ua,
char* Job)
{
// Connect to File daemon
- ua->jcr->impl->res.client = client;
+ ua->jcr->dir_impl->res.client = client;
ua->jcr->max_bandwidth = limit;
// Try to connect for 15 seconds
@@ -917,7 +917,7 @@ static inline bool SetbwlimitFiled(UaContext* ua,
ua->jcr->file_bsock->close();
delete ua->jcr->file_bsock;
ua->jcr->file_bsock = NULL;
- ua->jcr->impl->res.client = NULL;
+ ua->jcr->dir_impl->res.client = NULL;
ua->jcr->max_bandwidth = 0;
return true;
@@ -942,7 +942,7 @@ static inline bool setbwlimit_stored(UaContext* ua,
}
// Connect to Storage daemon
- ua->jcr->impl->res.write_storage = store;
+ ua->jcr->dir_impl->res.write_storage = store;
ua->jcr->max_bandwidth = limit;
// Try to connect for 15 seconds
@@ -965,7 +965,7 @@ static inline bool setbwlimit_stored(UaContext* ua,
ua->jcr->store_bsock->close();
delete ua->jcr->store_bsock;
ua->jcr->store_bsock = NULL;
- ua->jcr->impl->res.write_storage = NULL;
+ ua->jcr->dir_impl->res.write_storage = NULL;
ua->jcr->max_bandwidth = 0;
return true;
@@ -1005,10 +1005,10 @@ static bool SetbwlimitCmd(UaContext* ua, const char*)
switch (jcr->getJobType()) {
case JT_COPY:
case JT_MIGRATE:
- store = jcr->impl->res.read_storage;
+ store = jcr->dir_impl->res.read_storage;
break;
default:
- client = jcr->impl->res.client;
+ client = jcr->dir_impl->res.client;
break;
}
FreeJcr(jcr);
@@ -1230,7 +1230,7 @@ static void DoClientSetdebug(UaContext* ua,
}
// Connect to File daemon
- ua->jcr->impl->res.client = client;
+ ua->jcr->dir_impl->res.client = client;
// Try to connect for 15 seconds
ua->SendMsg(_("Connecting to Client %s at %s:%d\n"), client->resource_name_,
@@ -1243,7 +1243,7 @@ static void DoClientSetdebug(UaContext* ua,
Dmsg0(120, "Connected to file daemon\n");
fd = ua->jcr->file_bsock;
- if (ua->jcr->impl->FDVersion >= FD_VERSION_53) {
+ if (ua->jcr->dir_impl->FDVersion >= FD_VERSION_53) {
fd->fsend("setdebug=%d trace=%d hangup=%d timestamp=%d\n", level,
trace_flag, hangup_flag, timestamp_flag);
} else {
@@ -1884,8 +1884,8 @@ static bool EstimateCmd(UaContext* ua, const char*)
return false;
}
- jcr->impl->res.client = client;
- jcr->impl->res.fileset = fileset;
+ jcr->dir_impl->res.client = client;
+ jcr->dir_impl->res.fileset = fileset;
CloseDb(ua);
switch (client->Protocol) {
@@ -1904,7 +1904,7 @@ static bool EstimateCmd(UaContext* ua, const char*)
if (!OpenDb(ua)) { return false; }
- jcr->impl->res.job = job;
+ jcr->dir_impl->res.job = job;
jcr->setJobType(JT_BACKUP);
jcr->start_time = time(NULL);
InitJcrJobRecord(jcr);
@@ -1916,8 +1916,9 @@ static bool EstimateCmd(UaContext* ua, const char*)
GetLevelSinceTime(jcr);
ua->SendMsg(_("Connecting to Client %s at %s:%d\n"),
- jcr->impl->res.client->resource_name_,
- jcr->impl->res.client->address, jcr->impl->res.client->FDport);
+ jcr->dir_impl->res.client->resource_name_,
+ jcr->dir_impl->res.client->address,
+ jcr->dir_impl->res.client->FDport);
if (!ConnectToFileDaemon(jcr, 1, 15, false)) {
ua->ErrorMsg(_("Failed to connect to Client.\n"));
return false;
@@ -2221,14 +2222,15 @@ static bool DoTruncate(UaContext* ua,
}
// Choose storage
- ua->jcr->impl->res.write_storage = ua->GetStoreResWithName(storage_dbr.Name);
- if (!ua->jcr->impl->res.write_storage) {
+ ua->jcr->dir_impl->res.write_storage
+ = ua->GetStoreResWithName(storage_dbr.Name);
+ if (!ua->jcr->dir_impl->res.write_storage) {
ua->ErrorMsg("failed to determine storage resource by name %s\n",
storage_dbr.Name);
goto bail_out;
}
- if (SendLabelRequest(ua, ua->jcr->impl->res.write_storage, &mr, &mr,
+ if (SendLabelRequest(ua, ua->jcr->dir_impl->res.write_storage, &mr, &mr,
&pool_dbr,
/* bool media_record_exists */
true,
@@ -2243,7 +2245,7 @@ static bool DoTruncate(UaContext* ua,
}
bail_out:
- ua->jcr->impl->res.write_storage = NULL;
+ ua->jcr->dir_impl->res.write_storage = NULL;
return retval;
}
@@ -2586,7 +2588,7 @@ static void DoMountCmd(UaContext* ua, const char* cmd)
if (!do_alldrives) {
DoAutochangerVolumeOperation(ua, store.store, cmd, drive, slot);
} else {
- nr_drives = GetNumDrives(ua, ua->jcr->impl->res.write_storage);
+ nr_drives = GetNumDrives(ua, ua->jcr->dir_impl->res.write_storage);
for (drive_number_t i = 0; i < nr_drives; i++) {
DoAutochangerVolumeOperation(ua, store.store, cmd, i, slot);
}
diff --git a/core/src/dird/ua_db.cc b/core/src/dird/ua_db.cc
index b07f3f930..5514f4627 100644
--- a/core/src/dird/ua_db.cc
+++ b/core/src/dird/ua_db.cc
@@ -3,7 +3,7 @@
Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
Copyright (C) 2011-2016 Planets Communications B.V.
- Copyright (C) 2013-2021 Bareos GmbH & Co. KG
+ Copyright (C) 2013-2022 Bareos GmbH & Co. KG
This program is Free Software; you can redistribute it and/or
modify it under the terms of version three of the GNU Affero General Public
@@ -28,7 +28,7 @@
#include "include/bareos.h"
#include "dird.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/ua_db.h"
#include "cats/sql_pooling.h"
#include "dird/ua_select.h"
@@ -132,7 +132,7 @@ bool OpenDb(UaContext* ua, bool use_private)
mult_db_conn = ua->catalog->mult_db_connections;
if (use_private) { mult_db_conn = true; }
- ua->jcr->impl->res.catalog = ua->catalog;
+ ua->jcr->dir_impl->res.catalog = ua->catalog;
Dmsg0(100, "UA Open database\n");
ua->db = DbSqlGetPooledConnection(
ua->jcr, ua->catalog->db_driver, ua->catalog->db_name,
diff --git a/core/src/dird/ua_dotcmds.cc b/core/src/dird/ua_dotcmds.cc
index 35bebcde9..ef58132d6 100644
--- a/core/src/dird/ua_dotcmds.cc
+++ b/core/src/dird/ua_dotcmds.cc
@@ -33,7 +33,7 @@
#include "include/bareos.h"
#include "dird.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/dird_globals.h"
#include "dird/sd_cmds.h"
@@ -727,7 +727,7 @@ static void DoClientCmd(UaContext* ua, ClientResource* client const char*)
/* Connect to File daemon */
- ua->jcr->impl->res.client = client;
+ ua->jcr->dir_impl->res.client = client;
/* Try to connect for 15 seconds */
ua->SendMsg(_("Connecting to Client %s at %s:%d\n"), client->resource_name_,
client->address, client->FDport);
diff --git a/core/src/dird/ua_label.cc b/core/src/dird/ua_label.cc
index c0d39ed07..837aee4c2 100644
--- a/core/src/dird/ua_label.cc
+++ b/core/src/dird/ua_label.cc
@@ -37,7 +37,7 @@
#endif
#include "dird/ndmp_dma_storage.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/sd_cmds.h"
#include "dird/storage.h"
#include "dird/ua_db.h"
@@ -65,7 +65,7 @@ static inline bool update_database(UaContext* ua,
if (media_record_exists) {
// Update existing media record.
mr->InChanger = mr->Slot > 0; /* If slot give assume in changer */
- SetStorageidInMr(ua->jcr->impl->res.write_storage, mr);
+ SetStorageidInMr(ua->jcr->dir_impl->res.write_storage, mr);
if (!ua->db->UpdateMediaRecord(ua->jcr, mr)) {
ua->ErrorMsg("%s", ua->db->strerror());
retval = false;
@@ -75,7 +75,7 @@ static inline bool update_database(UaContext* ua,
SetPoolDbrDefaultsInMediaDbr(mr, pr);
mr->InChanger = mr->Slot > 0; /* If slot give assume in changer */
mr->Enabled = 1;
- SetStorageidInMr(ua->jcr->impl->res.write_storage, mr);
+ SetStorageidInMr(ua->jcr->dir_impl->res.write_storage, mr);
if (ua->db->CreateMediaRecord(ua->jcr, mr)) {
ua->InfoMsg(_("Catalog record for Volume \"%s\", Slot %hd successfully "
@@ -111,7 +111,7 @@ static inline bool native_send_label_request(UaContext* ua,
if (!(sd = open_sd_bsock(ua))) { return false; }
- bstrncpy(dev_name, ua->jcr->impl->res.write_storage->dev_name(),
+ bstrncpy(dev_name, ua->jcr->dir_impl->res.write_storage->dev_name(),
sizeof(dev_name));
BashSpaces(dev_name);
BashSpaces(mr->VolumeName);
@@ -271,19 +271,20 @@ static inline bool IsCleaningTape(UaContext* ua,
bool retval;
// Find Pool resource
- ua->jcr->impl->res.pool = ua->GetPoolResWithName(pr->Name, false);
- if (!ua->jcr->impl->res.pool) {
+ ua->jcr->dir_impl->res.pool = ua->GetPoolResWithName(pr->Name, false);
+ if (!ua->jcr->dir_impl->res.pool) {
ua->ErrorMsg(_("Pool \"%s\" resource not found for volume \"%s\"!\n"),
pr->Name, mr->VolumeName);
return false;
}
- retval = bstrncmp(mr->VolumeName, ua->jcr->impl->res.pool->cleaning_prefix,
- strlen(ua->jcr->impl->res.pool->cleaning_prefix));
+ retval
+ = bstrncmp(mr->VolumeName, ua->jcr->dir_impl->res.pool->cleaning_prefix,
+ strlen(ua->jcr->dir_impl->res.pool->cleaning_prefix));
Dmsg4(100, "CLNprefix=%s: Vol=%s: len=%d bstrncmp=%s\n",
- ua->jcr->impl->res.pool->cleaning_prefix, mr->VolumeName,
- strlen(ua->jcr->impl->res.pool->cleaning_prefix),
+ ua->jcr->dir_impl->res.pool->cleaning_prefix, mr->VolumeName,
+ strlen(ua->jcr->dir_impl->res.pool->cleaning_prefix),
retval ? "true" : "false");
return retval;
@@ -299,7 +300,7 @@ static void label_from_barcodes(UaContext* ua,
bool label_encrypt,
bool yes)
{
- StorageResource* store = ua->jcr->impl->res.write_storage;
+ StorageResource* store = ua->jcr->dir_impl->res.write_storage;
PoolDbRecord pr;
MediaDbRecord mr;
vol_list_t* vl;
@@ -309,7 +310,7 @@ static void label_from_barcodes(UaContext* ua,
int max_slots;
- max_slots = GetNumSlots(ua, ua->jcr->impl->res.write_storage);
+ max_slots = GetNumSlots(ua, ua->jcr->dir_impl->res.write_storage);
if (max_slots <= 0) {
ua->WarningMsg(_("No slots in changer to scan.\n"));
return;
diff --git a/core/src/dird/ua_output.cc b/core/src/dird/ua_output.cc
index f9838ee0a..3d9803faf 100644
--- a/core/src/dird/ua_output.cc
+++ b/core/src/dird/ua_output.cc
@@ -32,7 +32,7 @@
#include "dird.h"
#include "dird/dird_globals.h"
#include "dird/get_database_connection.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/ua_cmdstruct.h"
#include "cats/sql_pooling.h"
@@ -1286,17 +1286,17 @@ static bool ListNextvol(UaContext* ua, int ndays)
found = false;
goto get_out;
}
- if (!jcr->impl->jr.PoolId) {
+ if (!jcr->dir_impl->jr.PoolId) {
ua->ErrorMsg(_("Could not find Pool for Job %s\n"), job->resource_name_);
continue;
}
PoolDbRecord pr;
- pr.PoolId = jcr->impl->jr.PoolId;
+ pr.PoolId = jcr->dir_impl->jr.PoolId;
if (!ua->db->GetPoolRecord(jcr, &pr)) {
bstrncpy(pr.Name, "*UnknownPool*", sizeof(pr.Name));
}
MediaDbRecord mr;
- mr.PoolId = jcr->impl->jr.PoolId;
+ mr.PoolId = jcr->dir_impl->jr.PoolId;
GetJobStorage(&store, job, run);
SetStorageidInMr(store.store, &mr);
/* no need to set ScratchPoolId, since we use fnv_no_create_vol */
@@ -1409,7 +1409,7 @@ bool CompleteJcrForJob(JobControlRecord* jcr,
PoolResource* pool)
{
SetJcrDefaults(jcr, job);
- if (pool) { jcr->impl->res.pool = pool; /* override */ }
+ if (pool) { jcr->dir_impl->res.pool = pool; /* override */ }
if (jcr->db) {
Dmsg0(100, "complete_jcr close db\n");
DbSqlClosePooledConnection(jcr, jcr->db);
@@ -1420,14 +1420,14 @@ bool CompleteJcrForJob(JobControlRecord* jcr,
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);
return false;
}
PoolDbRecord pr;
- bstrncpy(pr.Name, jcr->impl->res.pool->resource_name_, sizeof(pr.Name));
+ bstrncpy(pr.Name, jcr->dir_impl->res.pool->resource_name_, sizeof(pr.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. %s\n"), pr.Name,
jcr->db->strerror());
if (jcr->db) {
@@ -1439,7 +1439,7 @@ bool CompleteJcrForJob(JobControlRecord* jcr,
Jmsg(jcr, M_INFO, 0, _("Pool %s created in database.\n"), pr.Name);
}
}
- jcr->impl->jr.PoolId = pr.PoolId;
+ jcr->dir_impl->jr.PoolId = pr.PoolId;
return true;
}
diff --git a/core/src/dird/ua_purge.cc b/core/src/dird/ua_purge.cc
index a6427705a..0bc39445f 100644
--- a/core/src/dird/ua_purge.cc
+++ b/core/src/dird/ua_purge.cc
@@ -32,7 +32,7 @@
#include "include/bareos.h"
#include "dird.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/next_vol.h"
#include "dird/sd_cmds.h"
#include "dird/ua_db.h"
@@ -620,7 +620,7 @@ static bool ActionOnPurgeCmd(UaContext* ua, const char*)
}
// Choose storage
- ua->jcr->impl->res.write_storage = store = get_storage_resource(ua);
+ ua->jcr->dir_impl->res.write_storage = store = get_storage_resource(ua);
if (!store) { goto bail_out; }
switch (store->Protocol) {
@@ -695,7 +695,7 @@ static bool ActionOnPurgeCmd(UaContext* ua, const char*)
bail_out:
CloseDb(ua);
if (sd) { CloseSdBsock(ua); }
- ua->jcr->impl->res.write_storage = NULL;
+ ua->jcr->dir_impl->res.write_storage = NULL;
if (results) { free(results); }
return true;
diff --git a/core/src/dird/ua_restore.cc b/core/src/dird/ua_restore.cc
index e79f5908e..b78a25225 100644
--- a/core/src/dird/ua_restore.cc
+++ b/core/src/dird/ua_restore.cc
@@ -36,7 +36,7 @@
#include "include/bareos.h"
#include "dird.h"
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/ua_db.h"
#include "dird/ua_input.h"
#include "dird/ua_select.h"
@@ -1232,7 +1232,7 @@ static bool BuildDirectoryTree(UaContext* ua, RestoreContext* rx)
* For NDMP restores its used in the DMA to know what to restore.
* The tree is freed by the DMA when its done.
*/
- ua->jcr->impl->restore_tree_root = tree.root;
+ ua->jcr->dir_impl->restore_tree_root = tree.root;
return OK;
}
diff --git a/core/src/dird/ua_run.cc b/core/src/dird/ua_run.cc
index 9bca71c6a..e97b28dd8 100644
--- a/core/src/dird/ua_run.cc
+++ b/core/src/dird/ua_run.cc
@@ -26,7 +26,7 @@
*/
#include "include/bareos.h"
#include "dird.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/migration.h"
#include "dird/storage.h"
@@ -390,9 +390,9 @@ int DoRunCmd(UaContext* ua, const char*)
if (!jcr) {
jcr = NewDirectorJcr(DirdFreeJcr);
SetJcrDefaults(jcr, rc.job);
- jcr->impl->unlink_bsr
- = ua->jcr->impl->unlink_bsr; /* copy unlink flag from caller */
- ua->jcr->impl->unlink_bsr = false;
+ jcr->dir_impl->unlink_bsr
+ = ua->jcr->dir_impl->unlink_bsr; /* copy unlink flag from caller */
+ ua->jcr->dir_impl->unlink_bsr = false;
}
// Transfer JobIds to new restore Job
@@ -402,9 +402,9 @@ int DoRunCmd(UaContext* ua, const char*)
}
// Transfer selected restore tree to new restore Job
- if (ua->jcr->impl->restore_tree_root) {
- jcr->impl->restore_tree_root = ua->jcr->impl->restore_tree_root;
- ua->jcr->impl->restore_tree_root = NULL;
+ if (ua->jcr->dir_impl->restore_tree_root) {
+ jcr->dir_impl->restore_tree_root = ua->jcr->dir_impl->restore_tree_root;
+ ua->jcr->dir_impl->restore_tree_root = NULL;
}
try_again:
@@ -490,28 +490,29 @@ try_again:
* For interactive runs we set IgnoreLevelPoolOverrides as we already
* performed the actual overrrides.
*/
- jcr->impl->IgnoreLevelPoolOverrides = true;
+ jcr->dir_impl->IgnoreLevelPoolOverrides = true;
if (ua->cmd[0] == 0 || bstrncasecmp(ua->cmd, NT_("yes"), strlen(ua->cmd))
|| bstrncasecmp(ua->cmd, _("yes"), strlen(ua->cmd))) {
JobId_t JobId;
- Dmsg1(800, "Calling RunJob job=%x\n", jcr->impl->res.job);
+ Dmsg1(800, "Calling RunJob job=%x\n", jcr->dir_impl->res.job);
start_job:
Dmsg3(100, "JobId=%u using pool %s priority=%d\n", (int)jcr->JobId,
- jcr->impl->res.pool->resource_name_, jcr->JobPriority);
- Dmsg1(900, "Running a job; its spool_data = %d\n", jcr->impl->spool_data);
+ jcr->dir_impl->res.pool->resource_name_, jcr->JobPriority);
+ Dmsg1(900, "Running a job; its spool_data = %d\n",
+ jcr->dir_impl->spool_data);
JobId = RunJob(jcr);
Dmsg4(100, "JobId=%u NewJobId=%d using pool %s priority=%d\n",
- (int)jcr->JobId, JobId, jcr->impl->res.pool->resource_name_,
+ (int)jcr->JobId, JobId, jcr->dir_impl->res.pool->resource_name_,
jcr->JobPriority);
- jcr->impl->job_trigger = JobTrigger::kUser;
+ jcr->dir_impl->job_trigger = JobTrigger::kUser;
// For interactive runs we send a message to the audit log
- if (jcr->impl->IgnoreLevelPoolOverrides) {
+ if (jcr->dir_impl->IgnoreLevelPoolOverrides) {
char buf[50];
ua->LogAuditEventInfoMsg(_("Job queued. JobId=%s"),
edit_int64(jcr->JobId, buf));
@@ -593,7 +594,7 @@ int ModifyJobParameters(UaContext* ua, JobControlRecord* jcr, RunContext& rc)
case JT_BACKUP:
if (!rc.pool_override && !jcr->is_JobLevel(L_VIRTUAL_FULL)) {
ApplyPoolOverrides(jcr, true);
- rc.pool = jcr->impl->res.pool;
+ rc.pool = jcr->dir_impl->res.pool;
rc.level_override = true;
}
break;
@@ -614,7 +615,7 @@ int ModifyJobParameters(UaContext* ua, JobControlRecord* jcr, RunContext& rc)
/* Job */
rc.job = select_job_resource(ua);
if (rc.job) {
- jcr->impl->res.job = rc.job;
+ jcr->dir_impl->res.job = rc.job;
SetJcrDefaults(jcr, rc.job);
goto try_again;
}
@@ -623,7 +624,7 @@ int ModifyJobParameters(UaContext* ua, JobControlRecord* jcr, RunContext& rc)
/* FileSet */
rc.fileset = select_fileset_resource(ua);
if (rc.fileset) {
- jcr->impl->res.fileset = rc.fileset;
+ jcr->dir_impl->res.fileset = rc.fileset;
goto try_again;
}
break;
@@ -631,18 +632,18 @@ int ModifyJobParameters(UaContext* ua, JobControlRecord* jcr, RunContext& rc)
/* Client */
rc.client = select_client_resource(ua);
if (rc.client) {
- jcr->impl->res.client = rc.client;
+ jcr->dir_impl->res.client = rc.client;
goto try_again;
}
break;
case 5:
/* Backup Format */
if (GetCmd(ua, _("Please enter Backup Format: "))) {
- if (jcr->impl->backup_format) {
- free(jcr->impl->backup_format);
- jcr->impl->backup_format = NULL;
+ if (jcr->dir_impl->backup_format) {
+ free(jcr->dir_impl->backup_format);
+ jcr->dir_impl->backup_format = NULL;
}
- jcr->impl->backup_format = strdup(ua->cmd);
+ jcr->dir_impl->backup_format = strdup(ua->cmd);
goto try_again;
}
break;
@@ -680,11 +681,11 @@ int ModifyJobParameters(UaContext* ua, JobControlRecord* jcr, RunContext& rc)
|| jcr->is_JobType(JT_VERIFY)) { /* Pool */
rc.pool = select_pool_resource(ua);
if (rc.pool) {
- jcr->impl->res.pool = rc.pool;
+ jcr->dir_impl->res.pool = rc.pool;
rc.level_override = false;
rc.pool_override = true;
Dmsg1(100, "Set new pool=%s\n",
- jcr->impl->res.pool->resource_name_);
+ jcr->dir_impl->res.pool->resource_name_);
goto try_again;
}
} else {
@@ -720,14 +721,14 @@ int ModifyJobParameters(UaContext* ua, JobControlRecord* jcr, RunContext& rc)
&& jcr->is_JobLevel(L_VIRTUAL_FULL))) { /* NextPool */
rc.next_pool = select_pool_resource(ua);
if (rc.next_pool) {
- jcr->impl->res.next_pool = rc.next_pool;
+ jcr->dir_impl->res.next_pool = rc.next_pool;
Dmsg1(100, "Set new next_pool=%s\n",
- jcr->impl->res.next_pool->resource_name_);
+ jcr->dir_impl->res.next_pool->resource_name_);
goto try_again;
}
} else if (jcr->is_JobType(JT_VERIFY)) { /* Verify Job */
rc.verify_job = select_job_resource(ua);
- if (rc.verify_job) { jcr->impl->res.verify_job = rc.verify_job; }
+ if (rc.verify_job) { jcr->dir_impl->res.verify_job = rc.verify_job; }
goto try_again;
} else if (jcr->is_JobType(JT_RESTORE)) { /* Where */
if (GetCmd(ua, _("Please enter the full path prefix for restore (/ "
@@ -748,11 +749,11 @@ int ModifyJobParameters(UaContext* ua, JobControlRecord* jcr, RunContext& rc)
}
} else { /* Plugin Options */
if (GetCmd(ua, _("Please enter Plugin Options string: "))) {
- if (jcr->impl->plugin_options) {
- free(jcr->impl->plugin_options);
- jcr->impl->plugin_options = NULL;
+ if (jcr->dir_impl->plugin_options) {
+ free(jcr->dir_impl->plugin_options);
+ jcr->dir_impl->plugin_options = NULL;
}
- jcr->impl->plugin_options = strdup(ua->cmd);
+ jcr->dir_impl->plugin_options = strdup(ua->cmd);
goto try_again;
}
}
@@ -764,11 +765,11 @@ int ModifyJobParameters(UaContext* ua, JobControlRecord* jcr, RunContext& rc)
goto try_again;
} else if (jcr->is_JobType(JT_BACKUP)) {
if (GetCmd(ua, _("Please enter Plugin Options string: "))) {
- if (jcr->impl->plugin_options) {
- free(jcr->impl->plugin_options);
- jcr->impl->plugin_options = NULL;
+ if (jcr->dir_impl->plugin_options) {
+ free(jcr->dir_impl->plugin_options);
+ jcr->dir_impl->plugin_options = NULL;
}
- jcr->impl->plugin_options = strdup(ua->cmd);
+ jcr->dir_impl->plugin_options = strdup(ua->cmd);
goto try_again;
}
}
@@ -782,13 +783,13 @@ int ModifyJobParameters(UaContext* ua, JobControlRecord* jcr, RunContext& rc)
opt = DoPrompt(ua, "", _("Select replace option"), NULL, 0);
if (opt >= 0) {
rc.replace = ReplaceOptions[opt].name;
- jcr->impl->replace = ReplaceOptions[opt].token;
+ jcr->dir_impl->replace = ReplaceOptions[opt].token;
}
goto try_again;
case 12:
/* JobId */
rc.jid = NULL; /* force reprompt */
- jcr->impl->RestoreJobId = 0;
+ jcr->dir_impl->RestoreJobId = 0;
if (jcr->RestoreBootstrap) {
ua->SendMsg(
_("You must set the bootstrap file to NULL to be able to specify "
@@ -798,11 +799,11 @@ int ModifyJobParameters(UaContext* ua, JobControlRecord* jcr, RunContext& rc)
case 13:
/* Plugin Options */
if (GetCmd(ua, _("Please enter Plugin Options string: "))) {
- if (jcr->impl->plugin_options) {
- free(jcr->impl->plugin_options);
- jcr->impl->plugin_options = NULL;
+ if (jcr->dir_impl->plugin_options) {
+ free(jcr->dir_impl->plugin_options);
+ jcr->dir_impl->plugin_options = NULL;
}
- jcr->impl->plugin_options = strdup(ua->cmd);
+ jcr->dir_impl->plugin_options = strdup(ua->cmd);
goto try_again;
}
break;
@@ -830,10 +831,10 @@ static bool ResetRestoreContext(UaContext* ua,
JobControlRecord* jcr,
RunContext& rc)
{
- jcr->impl->res.verify_job = rc.verify_job;
- jcr->impl->res.previous_job = rc.previous_job;
- jcr->impl->res.pool = rc.pool;
- jcr->impl->res.next_pool = rc.next_pool;
+ jcr->dir_impl->res.verify_job = rc.verify_job;
+ jcr->dir_impl->res.previous_job = rc.previous_job;
+ jcr->dir_impl->res.pool = rc.pool;
+ jcr->dir_impl->res.next_pool = rc.next_pool;
/*
* See if an explicit pool override was performed.
@@ -842,32 +843,33 @@ static bool ResetRestoreContext(UaContext* ua,
* overrides are ignored.
*/
if (rc.pool_name) {
- PmStrcpy(jcr->impl->res.pool_source, _("command line"));
- jcr->impl->IgnoreLevelPoolOverrides = true;
+ PmStrcpy(jcr->dir_impl->res.pool_source, _("command line"));
+ jcr->dir_impl->IgnoreLevelPoolOverrides = true;
} else if (!rc.level_override
- && jcr->impl->res.pool != jcr->impl->res.job->pool) {
- PmStrcpy(jcr->impl->res.pool_source, _("user input"));
+ && jcr->dir_impl->res.pool != jcr->dir_impl->res.job->pool) {
+ PmStrcpy(jcr->dir_impl->res.pool_source, _("user input"));
}
SetRwstorage(jcr, rc.store);
if (rc.next_pool_name) {
- PmStrcpy(jcr->impl->res.npool_source, _("command line"));
- jcr->impl->res.run_next_pool_override = true;
- } else if (jcr->impl->res.next_pool != jcr->impl->res.pool->NextPool) {
- PmStrcpy(jcr->impl->res.npool_source, _("user input"));
- jcr->impl->res.run_next_pool_override = true;
+ PmStrcpy(jcr->dir_impl->res.npool_source, _("command line"));
+ jcr->dir_impl->res.run_next_pool_override = true;
+ } else if (jcr->dir_impl->res.next_pool
+ != jcr->dir_impl->res.pool->NextPool) {
+ PmStrcpy(jcr->dir_impl->res.npool_source, _("user input"));
+ jcr->dir_impl->res.run_next_pool_override = true;
}
- jcr->impl->res.client = rc.client;
- if (jcr->impl->res.client) {
+ jcr->dir_impl->res.client = rc.client;
+ if (jcr->dir_impl->res.client) {
PmStrcpy(jcr->client_name, rc.client->resource_name_);
}
- jcr->impl->res.fileset = rc.fileset;
- jcr->impl->ExpectedFiles = rc.files;
+ jcr->dir_impl->res.fileset = rc.fileset;
+ jcr->dir_impl->ExpectedFiles = rc.files;
if (rc.catalog) {
- jcr->impl->res.catalog = rc.catalog;
- PmStrcpy(jcr->impl->res.catalog_source, _("user input"));
+ jcr->dir_impl->res.catalog = rc.catalog;
+ PmStrcpy(jcr->dir_impl->res.catalog_source, _("user input"));
}
PmStrcpy(jcr->comment, rc.comment);
@@ -900,26 +902,26 @@ static bool ResetRestoreContext(UaContext* ua,
}
if (rc.plugin_options) {
- if (jcr->impl->plugin_options) { free(jcr->impl->plugin_options); }
- jcr->impl->plugin_options = strdup(rc.plugin_options);
+ if (jcr->dir_impl->plugin_options) { free(jcr->dir_impl->plugin_options); }
+ jcr->dir_impl->plugin_options = strdup(rc.plugin_options);
rc.plugin_options = NULL;
}
if (rc.replace) {
- jcr->impl->replace = 0;
+ jcr->dir_impl->replace = 0;
for (int i = 0; ReplaceOptions[i].name; i++) {
if (Bstrcasecmp(rc.replace, ReplaceOptions[i].name)) {
- jcr->impl->replace = ReplaceOptions[i].token;
+ jcr->dir_impl->replace = ReplaceOptions[i].token;
}
}
- if (!jcr->impl->replace) {
+ if (!jcr->dir_impl->replace) {
ua->SendMsg(_("Invalid replace option: %s\n"), rc.replace);
return false;
}
} else if (rc.job->replace) {
- jcr->impl->replace = rc.job->replace;
+ jcr->dir_impl->replace = rc.job->replace;
} else {
- jcr->impl->replace = REPLACE_ALWAYS;
+ jcr->dir_impl->replace = REPLACE_ALWAYS;
}
rc.replace = NULL;
@@ -944,7 +946,7 @@ static bool ResetRestoreContext(UaContext* ua,
}
if (rc.cloned) {
- jcr->impl->cloned = rc.cloned;
+ jcr->dir_impl->cloned = rc.cloned;
rc.cloned = false;
}
@@ -958,7 +960,7 @@ static bool ResetRestoreContext(UaContext* ua,
}
rc.replace = ReplaceOptions[0].name;
for (int i = 0; ReplaceOptions[i].name; i++) {
- if (ReplaceOptions[i].token == jcr->impl->replace) {
+ if (ReplaceOptions[i].token == jcr->dir_impl->replace) {
rc.replace = ReplaceOptions[i].name;
}
}
@@ -973,20 +975,20 @@ static bool ResetRestoreContext(UaContext* ua,
if (rc.jid) {
if (jcr->is_JobType(JT_BACKUP) && jcr->is_JobLevel(L_VIRTUAL_FULL)) {
- if (!jcr->impl->vf_jobids) {
- jcr->impl->vf_jobids = GetPoolMemory(PM_MESSAGE);
+ if (!jcr->dir_impl->vf_jobids) {
+ jcr->dir_impl->vf_jobids = GetPoolMemory(PM_MESSAGE);
}
- PmStrcpy(jcr->impl->vf_jobids, rc.jid);
+ PmStrcpy(jcr->dir_impl->vf_jobids, rc.jid);
} else {
// Note, this is also MigrateJobId and a VerifyJobId
- jcr->impl->RestoreJobId = str_to_int64(rc.jid);
+ jcr->dir_impl->RestoreJobId = str_to_int64(rc.jid);
}
rc.jid = NULL;
}
if (rc.backup_format) {
- if (jcr->impl->backup_format) { free(jcr->impl->backup_format); }
- jcr->impl->backup_format = strdup(rc.backup_format);
+ if (jcr->dir_impl->backup_format) { free(jcr->dir_impl->backup_format); }
+ jcr->dir_impl->backup_format = strdup(rc.backup_format);
rc.backup_format = NULL;
}
@@ -994,7 +996,7 @@ static bool ResetRestoreContext(UaContext* ua,
* Some options are not available through the menu
* TODO: Add an advanced menu?
*/
- if (rc.spool_data_set) { jcr->impl->spool_data = rc.spool_data; }
+ if (rc.spool_data_set) { jcr->dir_impl->spool_data = rc.spool_data; }
if (rc.accurate_set) { jcr->accurate = rc.accurate; }
@@ -1003,7 +1005,7 @@ static bool ResetRestoreContext(UaContext* ua,
* but can run at the same time
*/
if (rc.ignoreduplicatecheck_set) {
- jcr->impl->IgnoreDuplicateJobChecking = rc.ignoreduplicatecheck;
+ jcr->dir_impl->IgnoreDuplicateJobChecking = rc.ignoreduplicatecheck;
}
return true;
@@ -1231,27 +1233,27 @@ static bool DisplayJobParameters(UaContext* ua,
"Storage: %s\n"
"When: %s\n"
"Priority: %d\n",
- job->resource_name_, jcr->impl->res.fileset->resource_name_,
- NPRT(jcr->impl->res.client->resource_name_),
- jcr->impl->res.write_storage
- ? jcr->impl->res.write_storage->resource_name_
+ job->resource_name_, jcr->dir_impl->res.fileset->resource_name_,
+ NPRT(jcr->dir_impl->res.client->resource_name_),
+ jcr->dir_impl->res.write_storage
+ ? jcr->dir_impl->res.write_storage->resource_name_
: _("*None*"),
bstrutime(dt, sizeof(dt), jcr->sched_time), jcr->JobPriority);
} else {
- ua->SendMsg(_("Run Admin Job\n"
- "JobName: %s\n"
- "FileSet: %s\n"
- "Client: %s\n"
- "Storage: %s\n"
- "When: %s\n"
- "Priority: %d\n"),
- job->resource_name_, jcr->impl->res.fileset->resource_name_,
- NPRT(jcr->impl->res.client->resource_name_),
- jcr->impl->res.write_storage
- ? jcr->impl->res.write_storage->resource_name_
- : _("*None*"),
- bstrutime(dt, sizeof(dt), jcr->sched_time),
- jcr->JobPriority);
+ ua->SendMsg(
+ _("Run Admin Job\n"
+ "JobName: %s\n"
+ "FileSet: %s\n"
+ "Client: %s\n"
+ "Storage: %s\n"
+ "When: %s\n"
+ "Priority: %d\n"),
+ job->resource_name_, jcr->dir_impl->res.fileset->resource_name_,
+ NPRT(jcr->dir_impl->res.client->resource_name_),
+ jcr->dir_impl->res.write_storage
+ ? jcr->dir_impl->res.write_storage->resource_name_
+ : _("*None*"),
+ bstrutime(dt, sizeof(dt), jcr->sched_time), jcr->JobPriority);
}
jcr->setJobLevel(L_FULL);
break;
@@ -1267,27 +1269,27 @@ static bool DisplayJobParameters(UaContext* ua,
"Storage: %s\n"
"When: %s\n"
"Priority: %d\n",
- job->resource_name_, jcr->impl->res.fileset->resource_name_,
- NPRT(jcr->impl->res.client->resource_name_),
- jcr->impl->res.write_storage
- ? jcr->impl->res.write_storage->resource_name_
+ job->resource_name_, jcr->dir_impl->res.fileset->resource_name_,
+ NPRT(jcr->dir_impl->res.client->resource_name_),
+ jcr->dir_impl->res.write_storage
+ ? jcr->dir_impl->res.write_storage->resource_name_
: _("*None*"),
bstrutime(dt, sizeof(dt), jcr->sched_time), jcr->JobPriority);
} else {
- ua->SendMsg(_("Run Archive Job\n"
- "JobName: %s\n"
- "FileSet: %s\n"
- "Client: %s\n"
- "Storage: %s\n"
- "When: %s\n"
- "Priority: %d\n"),
- job->resource_name_, jcr->impl->res.fileset->resource_name_,
- NPRT(jcr->impl->res.client->resource_name_),
- jcr->impl->res.write_storage
- ? jcr->impl->res.write_storage->resource_name_
- : _("*None*"),
- bstrutime(dt, sizeof(dt), jcr->sched_time),
- jcr->JobPriority);
+ ua->SendMsg(
+ _("Run Archive Job\n"
+ "JobName: %s\n"
+ "FileSet: %s\n"
+ "Client: %s\n"
+ "Storage: %s\n"
+ "When: %s\n"
+ "Priority: %d\n"),
+ job->resource_name_, jcr->dir_impl->res.fileset->resource_name_,
+ NPRT(jcr->dir_impl->res.client->resource_name_),
+ jcr->dir_impl->res.write_storage
+ ? jcr->dir_impl->res.write_storage->resource_name_
+ : _("*None*"),
+ bstrutime(dt, sizeof(dt), jcr->sched_time), jcr->JobPriority);
}
jcr->setJobLevel(L_FULL);
break;
@@ -1303,27 +1305,27 @@ static bool DisplayJobParameters(UaContext* ua,
"Storage: %s\n"
"When: %s\n"
"Priority: %d\n",
- job->resource_name_, jcr->impl->res.fileset->resource_name_,
- NPRT(jcr->impl->res.client->resource_name_),
- jcr->impl->res.write_storage
- ? jcr->impl->res.write_storage->resource_name_
+ job->resource_name_, jcr->dir_impl->res.fileset->resource_name_,
+ NPRT(jcr->dir_impl->res.client->resource_name_),
+ jcr->dir_impl->res.write_storage
+ ? jcr->dir_impl->res.write_storage->resource_name_
: _("*None*"),
bstrutime(dt, sizeof(dt), jcr->sched_time), jcr->JobPriority);
} else {
- ua->SendMsg(_("Run Consolidate Job\n"
- "JobName: %s\n"
- "FileSet: %s\n"
- "Client: %s\n"
- "Storage: %s\n"
- "When: %s\n"
- "Priority: %d\n"),
- job->resource_name_, jcr->impl->res.fileset->resource_name_,
- NPRT(jcr->impl->res.client->resource_name_),
- jcr->impl->res.write_storage
- ? jcr->impl->res.write_storage->resource_name_
- : _("*None*"),
- bstrutime(dt, sizeof(dt), jcr->sched_time),
- jcr->JobPriority);
+ ua->SendMsg(
+ _("Run Consolidate Job\n"
+ "JobName: %s\n"
+ "FileSet: %s\n"
+ "Client: %s\n"
+ "Storage: %s\n"
+ "When: %s\n"
+ "Priority: %d\n"),
+ job->resource_name_, jcr->dir_impl->res.fileset->resource_name_,
+ NPRT(jcr->dir_impl->res.client->resource_name_),
+ jcr->dir_impl->res.write_storage
+ ? jcr->dir_impl->res.write_storage->resource_name_
+ : _("*None*"),
+ bstrutime(dt, sizeof(dt), jcr->sched_time), jcr->JobPriority);
}
jcr->setJobLevel(L_FULL);
break;
@@ -1349,22 +1351,24 @@ static bool DisplayJobParameters(UaContext* ua,
"Priority: %d\n"
"%s%s%s",
job->resource_name_, JobLevelToString(jcr->getJobLevel()),
- jcr->impl->res.client->resource_name_, jcr->impl->backup_format,
- jcr->impl->res.fileset->resource_name_,
- NPRT(jcr->impl->res.pool->resource_name_),
+ jcr->dir_impl->res.client->resource_name_,
+ jcr->dir_impl->backup_format,
+ jcr->dir_impl->res.fileset->resource_name_,
+ NPRT(jcr->dir_impl->res.pool->resource_name_),
is_virtual ? "NextPool: " : "",
- is_virtual ? (jcr->impl->res.next_pool
- ? jcr->impl->res.next_pool->resource_name_
+ is_virtual ? (jcr->dir_impl->res.next_pool
+ ? jcr->dir_impl->res.next_pool->resource_name_
: _("*None*"))
: "",
is_virtual ? "\n" : "",
- jcr->impl->res.write_storage
- ? jcr->impl->res.write_storage->resource_name_
+ jcr->dir_impl->res.write_storage
+ ? jcr->dir_impl->res.write_storage->resource_name_
: _("*None*"),
bstrutime(dt, sizeof(dt), jcr->sched_time), jcr->JobPriority,
- jcr->impl->plugin_options ? "Plugin Options: " : "",
- jcr->impl->plugin_options ? jcr->impl->plugin_options : "",
- jcr->impl->plugin_options ? "\n" : "");
+ jcr->dir_impl->plugin_options ? "Plugin Options: " : "",
+ jcr->dir_impl->plugin_options ? jcr->dir_impl->plugin_options
+ : "",
+ jcr->dir_impl->plugin_options ? "\n" : "");
} else {
ua->SendMsg(
_("Run Backup job\n"
@@ -1380,35 +1384,37 @@ static bool DisplayJobParameters(UaContext* ua,
"Priority: %d\n"
"%s%s%s"),
job->resource_name_, JobLevelToString(jcr->getJobLevel()),
- jcr->impl->res.client->resource_name_, jcr->impl->backup_format,
- jcr->impl->res.fileset->resource_name_,
- NPRT(jcr->impl->res.pool->resource_name_),
- jcr->impl->res.pool_source, is_virtual ? "NextPool: " : "",
- is_virtual ? (jcr->impl->res.next_pool
- ? jcr->impl->res.next_pool->resource_name_
+ jcr->dir_impl->res.client->resource_name_,
+ jcr->dir_impl->backup_format,
+ jcr->dir_impl->res.fileset->resource_name_,
+ NPRT(jcr->dir_impl->res.pool->resource_name_),
+ jcr->dir_impl->res.pool_source, is_virtual ? "NextPool: " : "",
+ is_virtual ? (jcr->dir_impl->res.next_pool
+ ? jcr->dir_impl->res.next_pool->resource_name_
: _("*None*"))
: "",
is_virtual ? " (From " : "",
- is_virtual ? jcr->impl->res.npool_source : "",
+ is_virtual ? jcr->dir_impl->res.npool_source : "",
is_virtual ? ")\n" : "",
- jcr->impl->res.write_storage
- ? jcr->impl->res.write_storage->resource_name_
+ jcr->dir_impl->res.write_storage
+ ? jcr->dir_impl->res.write_storage->resource_name_
: _("*None*"),
- jcr->impl->res.wstore_source,
+ jcr->dir_impl->res.wstore_source,
bstrutime(dt, sizeof(dt), jcr->sched_time), jcr->JobPriority,
- jcr->impl->plugin_options ? "Plugin Options: " : "",
- jcr->impl->plugin_options ? jcr->impl->plugin_options : "",
- jcr->impl->plugin_options ? "\n" : "");
+ jcr->dir_impl->plugin_options ? "Plugin Options: " : "",
+ jcr->dir_impl->plugin_options ? jcr->dir_impl->plugin_options
+ : "",
+ jcr->dir_impl->plugin_options ? "\n" : "");
}
} else { /* JT_VERIFY */
JobDbRecord jr;
const char* Name;
- if (jcr->impl->res.verify_job) {
- Name = jcr->impl->res.verify_job->resource_name_;
- } else if (jcr->impl->RestoreJobId) { /* Display job name if jobid
- * requested
- */
- jr.JobId = jcr->impl->RestoreJobId;
+ if (jcr->dir_impl->res.verify_job) {
+ Name = jcr->dir_impl->res.verify_job->resource_name_;
+ } else if (jcr->dir_impl->RestoreJobId) { /* Display job name if jobid
+ * requested
+ */
+ jr.JobId = jcr->dir_impl->RestoreJobId;
if (!ua->db->GetJobRecord(jcr, &jr)) {
ua->ErrorMsg(
_("Could not get job record for selected JobId. ERR=%s"),
@@ -1437,12 +1443,12 @@ static bool DisplayJobParameters(UaContext* ua,
"When: %s\n"
"Priority: %d\n",
job->resource_name_, JobLevelToString(jcr->getJobLevel()),
- jcr->impl->res.client->resource_name_,
- jcr->impl->res.fileset->resource_name_,
- NPRT(jcr->impl->res.pool->resource_name_),
- jcr->impl->res.pool_source,
- jcr->impl->res.read_storage->resource_name_,
- jcr->impl->res.rstore_source, Name, verify_list,
+ jcr->dir_impl->res.client->resource_name_,
+ jcr->dir_impl->res.fileset->resource_name_,
+ NPRT(jcr->dir_impl->res.pool->resource_name_),
+ jcr->dir_impl->res.pool_source,
+ jcr->dir_impl->res.read_storage->resource_name_,
+ jcr->dir_impl->res.rstore_source, Name, verify_list,
bstrutime(dt, sizeof(dt), jcr->sched_time), jcr->JobPriority);
} else {
ua->SendMsg(_("Run Verify Job\n"
@@ -1457,21 +1463,21 @@ static bool DisplayJobParameters(UaContext* ua,
"When: %s\n"
"Priority: %d\n"),
job->resource_name_, JobLevelToString(jcr->getJobLevel()),
- jcr->impl->res.client->resource_name_,
- jcr->impl->res.fileset->resource_name_,
- NPRT(jcr->impl->res.pool->resource_name_),
- jcr->impl->res.pool_source,
- jcr->impl->res.read_storage->resource_name_,
- jcr->impl->res.rstore_source, Name, verify_list,
+ jcr->dir_impl->res.client->resource_name_,
+ jcr->dir_impl->res.fileset->resource_name_,
+ NPRT(jcr->dir_impl->res.pool->resource_name_),
+ jcr->dir_impl->res.pool_source,
+ jcr->dir_impl->res.read_storage->resource_name_,
+ jcr->dir_impl->res.rstore_source, Name, verify_list,
bstrutime(dt, sizeof(dt), jcr->sched_time),
jcr->JobPriority);
}
}
break;
case JT_RESTORE:
- if (jcr->impl->RestoreJobId == 0 && !jcr->RestoreBootstrap) {
+ if (jcr->dir_impl->RestoreJobId == 0 && !jcr->RestoreBootstrap) {
if (rc.jid) {
- jcr->impl->RestoreJobId = str_to_int64(rc.jid);
+ jcr->dir_impl->RestoreJobId = str_to_int64(rc.jid);
} else {
if (!GetPint(ua, _("Please enter a JobId for restore: "))) {
return false;
@@ -1483,12 +1489,12 @@ static bool DisplayJobParameters(UaContext* ua,
return false;
}
- jcr->impl->RestoreJobId = ua->int64_val;
+ jcr->dir_impl->RestoreJobId = ua->int64_val;
}
}
jcr->setJobLevel(L_FULL); /* default level */
- Dmsg1(800, "JobId to restore=%d\n", jcr->impl->RestoreJobId);
- if (jcr->impl->RestoreJobId == 0) {
+ Dmsg1(800, "JobId to restore=%d\n", jcr->dir_impl->RestoreJobId);
+ if (jcr->dir_impl->RestoreJobId == 0) {
/* RegexWhere is take before RestoreWhere */
if (jcr->RegexWhere || (job->RegexWhere && !jcr->where)) {
if (ua->api) {
@@ -1511,12 +1517,13 @@ static bool DisplayJobParameters(UaContext* ua,
"Plugin Options: %s\n",
job->resource_name_, NPRT(jcr->RestoreBootstrap),
jcr->RegexWhere ? jcr->RegexWhere : job->RegexWhere, rc.replace,
- jcr->impl->res.fileset->resource_name_, rc.client_name,
- jcr->impl->res.client->resource_name_, jcr->impl->backup_format,
- jcr->impl->res.read_storage->resource_name_,
+ jcr->dir_impl->res.fileset->resource_name_, rc.client_name,
+ jcr->dir_impl->res.client->resource_name_,
+ jcr->dir_impl->backup_format,
+ jcr->dir_impl->res.read_storage->resource_name_,
bstrutime(dt, sizeof(dt), jcr->sched_time),
- jcr->impl->res.catalog->resource_name_, jcr->JobPriority,
- NPRT(jcr->impl->plugin_options));
+ jcr->dir_impl->res.catalog->resource_name_, jcr->JobPriority,
+ NPRT(jcr->dir_impl->plugin_options));
} else {
ua->SendMsg(_("Run Restore job\n"
"JobName: %s\n"
@@ -1534,13 +1541,14 @@ static bool DisplayJobParameters(UaContext* ua,
"Plugin Options: %s\n"),
job->resource_name_, NPRT(jcr->RestoreBootstrap),
jcr->RegexWhere ? jcr->RegexWhere : job->RegexWhere,
- rc.replace, jcr->impl->res.fileset->resource_name_,
- rc.client_name, jcr->impl->res.client->resource_name_,
- jcr->impl->backup_format,
- jcr->impl->res.read_storage->resource_name_,
+ rc.replace, jcr->dir_impl->res.fileset->resource_name_,
+ rc.client_name,
+ jcr->dir_impl->res.client->resource_name_,
+ jcr->dir_impl->backup_format,
+ jcr->dir_impl->res.read_storage->resource_name_,
bstrutime(dt, sizeof(dt), jcr->sched_time),
- jcr->impl->res.catalog->resource_name_,
- jcr->JobPriority, NPRT(jcr->impl->plugin_options));
+ jcr->dir_impl->res.catalog->resource_name_,
+ jcr->JobPriority, NPRT(jcr->dir_impl->plugin_options));
}
} else {
if (ua->api) {
@@ -1563,12 +1571,13 @@ static bool DisplayJobParameters(UaContext* ua,
"Plugin Options: %s\n",
job->resource_name_, NPRT(jcr->RestoreBootstrap),
jcr->where ? jcr->where : NPRT(job->RestoreWhere), rc.replace,
- jcr->impl->res.fileset->resource_name_, rc.client_name,
- jcr->impl->res.client->resource_name_, jcr->impl->backup_format,
- jcr->impl->res.read_storage->resource_name_,
+ jcr->dir_impl->res.fileset->resource_name_, rc.client_name,
+ jcr->dir_impl->res.client->resource_name_,
+ jcr->dir_impl->backup_format,
+ jcr->dir_impl->res.read_storage->resource_name_,
bstrutime(dt, sizeof(dt), jcr->sched_time),
- jcr->impl->res.catalog->resource_name_, jcr->JobPriority,
- NPRT(jcr->impl->plugin_options));
+ jcr->dir_impl->res.catalog->resource_name_, jcr->JobPriority,
+ NPRT(jcr->dir_impl->plugin_options));
} else {
ua->SendMsg(_("Run Restore job\n"
"JobName: %s\n"
@@ -1586,13 +1595,14 @@ static bool DisplayJobParameters(UaContext* ua,
"Plugin Options: %s\n"),
job->resource_name_, NPRT(jcr->RestoreBootstrap),
jcr->where ? jcr->where : NPRT(job->RestoreWhere),
- rc.replace, jcr->impl->res.fileset->resource_name_,
- rc.client_name, jcr->impl->res.client->resource_name_,
- jcr->impl->backup_format,
- jcr->impl->res.read_storage->resource_name_,
+ rc.replace, jcr->dir_impl->res.fileset->resource_name_,
+ rc.client_name,
+ jcr->dir_impl->res.client->resource_name_,
+ jcr->dir_impl->backup_format,
+ jcr->dir_impl->res.read_storage->resource_name_,
bstrutime(dt, sizeof(dt), jcr->sched_time),
- jcr->impl->res.catalog->resource_name_,
- jcr->JobPriority, NPRT(jcr->impl->plugin_options));
+ jcr->dir_impl->res.catalog->resource_name_,
+ jcr->JobPriority, NPRT(jcr->dir_impl->plugin_options));
}
}
@@ -1621,15 +1631,15 @@ static bool DisplayJobParameters(UaContext* ua,
"Catalog: %s\n"
"Priority: %d\n"
"Plugin Options: %s\n"),
- rc.replace, jcr->impl->res.client->resource_name_,
- jcr->impl->backup_format,
- jcr->impl->res.read_storage->resource_name_,
- (jcr->impl->RestoreJobId == 0)
+ rc.replace, jcr->dir_impl->res.client->resource_name_,
+ jcr->dir_impl->backup_format,
+ jcr->dir_impl->res.read_storage->resource_name_,
+ (jcr->dir_impl->RestoreJobId == 0)
? _("*None*")
- : edit_uint64(jcr->impl->RestoreJobId, ec1),
+ : edit_uint64(jcr->dir_impl->RestoreJobId, ec1),
bstrutime(dt, sizeof(dt), jcr->sched_time),
- jcr->impl->res.catalog->resource_name_, jcr->JobPriority,
- NPRT(jcr->impl->plugin_options));
+ jcr->dir_impl->res.catalog->resource_name_,
+ jcr->JobPriority, NPRT(jcr->dir_impl->plugin_options));
}
break;
case JT_COPY:
@@ -1657,20 +1667,21 @@ static bool DisplayJobParameters(UaContext* ua,
"Catalog: %s\n"
"Priority: %d\n",
prt_type, job->resource_name_, NPRT(jcr->RestoreBootstrap),
- jcr->impl->res.read_storage
- ? jcr->impl->res.read_storage->resource_name_
+ jcr->dir_impl->res.read_storage
+ ? jcr->dir_impl->res.read_storage->resource_name_
: _("*None*"),
- NPRT(jcr->impl->res.pool->resource_name_),
- jcr->impl->res.next_pool ? jcr->impl->res.next_pool->resource_name_
- : _("*None*"),
- jcr->impl->res.write_storage
- ? jcr->impl->res.write_storage->resource_name_
+ NPRT(jcr->dir_impl->res.pool->resource_name_),
+ jcr->dir_impl->res.next_pool
+ ? jcr->dir_impl->res.next_pool->resource_name_
: _("*None*"),
- (jcr->impl->MigrateJobId == 0)
+ jcr->dir_impl->res.write_storage
+ ? jcr->dir_impl->res.write_storage->resource_name_
+ : _("*None*"),
+ (jcr->dir_impl->MigrateJobId == 0)
? _("*None*")
- : edit_uint64(jcr->impl->MigrateJobId, ec1),
+ : edit_uint64(jcr->dir_impl->MigrateJobId, ec1),
bstrutime(dt, sizeof(dt), jcr->sched_time),
- jcr->impl->res.catalog->resource_name_, jcr->JobPriority);
+ jcr->dir_impl->res.catalog->resource_name_, jcr->JobPriority);
} else {
if (jcr->is_JobType(JT_COPY)) {
prt_type = _("Run Copy job\n");
@@ -1689,25 +1700,26 @@ static bool DisplayJobParameters(UaContext* ua,
"Catalog: %s\n"
"Priority: %d\n"),
prt_type, job->resource_name_, NPRT(jcr->RestoreBootstrap),
- jcr->impl->res.read_storage
- ? jcr->impl->res.read_storage->resource_name_
+ jcr->dir_impl->res.read_storage
+ ? jcr->dir_impl->res.read_storage->resource_name_
: _("*None*"),
- jcr->impl->res.rstore_source,
- NPRT(jcr->impl->res.pool->resource_name_),
- jcr->impl->res.pool_source,
- jcr->impl->res.write_storage
- ? jcr->impl->res.write_storage->resource_name_
+ jcr->dir_impl->res.rstore_source,
+ NPRT(jcr->dir_impl->res.pool->resource_name_),
+ jcr->dir_impl->res.pool_source,
+ jcr->dir_impl->res.write_storage
+ ? jcr->dir_impl->res.write_storage->resource_name_
: _("*None*"),
- jcr->impl->res.wstore_source,
- jcr->impl->res.next_pool
- ? jcr->impl->res.next_pool->resource_name_
+ jcr->dir_impl->res.wstore_source,
+ jcr->dir_impl->res.next_pool
+ ? jcr->dir_impl->res.next_pool->resource_name_
: _("*None*"),
- NPRT(jcr->impl->res.npool_source),
- jcr->impl->MigrateJobId == 0
+ NPRT(jcr->dir_impl->res.npool_source),
+ jcr->dir_impl->MigrateJobId == 0
? _("*None*")
- : edit_uint64(jcr->impl->MigrateJobId, ec1),
+ : edit_uint64(jcr->dir_impl->MigrateJobId, ec1),
bstrutime(dt, sizeof(dt), jcr->sched_time),
- jcr->impl->res.catalog->resource_name_, jcr->JobPriority);
+ jcr->dir_impl->res.catalog->resource_name_,
+ jcr->JobPriority);
}
break;
default:
diff --git a/core/src/dird/ua_select.cc b/core/src/dird/ua_select.cc
index b8c013fc6..d3ba0e83b 100644
--- a/core/src/dird/ua_select.cc
+++ b/core/src/dird/ua_select.cc
@@ -29,7 +29,7 @@
#include "include/bareos.h"
#include "dird.h"
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/storage.h"
#include "dird/ua_input.h"
#include "dird/ua_select.h"
@@ -1332,7 +1332,7 @@ StorageResource* get_storage_resource(UaContext* ua,
ua->ErrorMsg(_("JobId %s is not running.\n"), edit_int64(jobid, ed1));
return NULL;
}
- store = jcr->impl->res.write_storage;
+ store = jcr->dir_impl->res.write_storage;
FreeJcr(jcr);
break;
} else if (Bstrcasecmp(ua->argk[i], NT_("job"))
@@ -1345,7 +1345,7 @@ StorageResource* get_storage_resource(UaContext* ua,
ua->ErrorMsg(_("Job \"%s\" is not running.\n"), ua->argv[i]);
return NULL;
}
- store = jcr->impl->res.write_storage;
+ store = jcr->dir_impl->res.write_storage;
FreeJcr(jcr);
break;
} else if (Bstrcasecmp(ua->argk[i], NT_("ujobid"))) {
@@ -1357,7 +1357,7 @@ StorageResource* get_storage_resource(UaContext* ua,
ua->ErrorMsg(_("Job \"%s\" is not running.\n"), ua->argv[i]);
return NULL;
}
- store = jcr->impl->res.write_storage;
+ store = jcr->dir_impl->res.write_storage;
FreeJcr(jcr);
break;
}
@@ -1595,8 +1595,8 @@ alist<JobId_t*>* select_jobs(UaContext* ua, const char* reason)
}
if (jcr) {
- if (jcr->impl->res.job
- && !ua->AclAccessOk(Job_ACL, jcr->impl->res.job->resource_name_,
+ if (jcr->dir_impl->res.job
+ && !ua->AclAccessOk(Job_ACL, jcr->dir_impl->res.job->resource_name_,
true)) {
ua->ErrorMsg(_("Unauthorized command from this console.\n"));
goto bail_out;
@@ -1624,7 +1624,7 @@ alist<JobId_t*>* select_jobs(UaContext* ua, const char* reason)
continue;
}
tjobs++; /* Count of all jobs */
- if (!ua->AclAccessOk(Job_ACL, jcr->impl->res.job->resource_name_)) {
+ if (!ua->AclAccessOk(Job_ACL, jcr->dir_impl->res.job->resource_name_)) {
continue; /* Skip not authorized */
}
njobs++; /* Count of authorized jobs */
@@ -1682,7 +1682,7 @@ alist<JobId_t*>* select_jobs(UaContext* ua, const char* reason)
continue;
}
- if (!ua->AclAccessOk(Job_ACL, jcr->impl->res.job->resource_name_)) {
+ if (!ua->AclAccessOk(Job_ACL, jcr->dir_impl->res.job->resource_name_)) {
continue; /* Skip not authorized */
}
@@ -1739,7 +1739,7 @@ alist<JobId_t*>* select_jobs(UaContext* ua, const char* reason)
if (jcr->JobId == 0) { /* This is us */
continue;
}
- if (!ua->AclAccessOk(Job_ACL, jcr->impl->res.job->resource_name_)) {
+ if (!ua->AclAccessOk(Job_ACL, jcr->dir_impl->res.job->resource_name_)) {
continue; /* Skip not authorized */
}
Bsnprintf(buf, sizeof(buf), _("JobId=%s Job=%s"),
diff --git a/core/src/dird/ua_server.cc b/core/src/dird/ua_server.cc
index 8bfb3410d..eb24aa7fd 100644
--- a/core/src/dird/ua_server.cc
+++ b/core/src/dird/ua_server.cc
@@ -31,7 +31,7 @@
#include "dird/dird_globals.h"
#include "dird/authenticate.h"
#include "dird/authenticate_console.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/pthread_detach_if_not_detached.h"
#include "dird/ua_cmds.h"
@@ -58,14 +58,14 @@ JobControlRecord* new_control_jcr(const char* base_name, int job_type)
// exclude JT_SYSTEM job from shared config counting
if (job_type == JT_SYSTEM) {
- jcr->impl->job_config_resources_container_ = nullptr;
+ jcr->dir_impl->job_config_resources_container_ = nullptr;
}
/* The job and defaults are not really used, but we set them up to ensure that
* everything is correctly initialized. */
LockRes(my_config);
- jcr->impl->res.job = (JobResource*)my_config->GetNextRes(R_JOB, NULL);
- SetJcrDefaults(jcr, jcr->impl->res.job);
+ jcr->dir_impl->res.job = (JobResource*)my_config->GetNextRes(R_JOB, NULL);
+ SetJcrDefaults(jcr, jcr->dir_impl->res.job);
UnlockRes(my_config);
jcr->sd_auth_key = strdup("dummy"); /* dummy Storage daemon key */
diff --git a/core/src/dird/ua_status.cc b/core/src/dird/ua_status.cc
index 20e830194..3bb4f9e9b 100644
--- a/core/src/dird/ua_status.cc
+++ b/core/src/dird/ua_status.cc
@@ -28,7 +28,7 @@
#include "include/bareos.h"
#include "dird.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/run_hour_validator.h"
#include "dird/dird_globals.h"
#include "dird/fd_cmds.h"
@@ -109,7 +109,8 @@ bool DotStatusCmd(UaContext* ua, const char* cmd)
ua->SendMsg(OKdotstatus, ua->argk[2]);
foreach_jcr (njcr) {
if (njcr->JobId != 0
- && ua->AclAccessOk(Job_ACL, njcr->impl->res.job->resource_name_)) {
+ && ua->AclAccessOk(Job_ACL,
+ njcr->dir_impl->res.job->resource_name_)) {
ua->SendMsg(DotStatusJob, edit_int64(njcr->JobId, ed1),
njcr->getJobStatus(), njcr->JobErrors);
}
@@ -799,12 +800,12 @@ static void PrtRuntime(UaContext* ua, sched_pkt* sp)
if (sp->job->JobType == JT_BACKUP) {
jcr->db = NULL;
ok = CompleteJcrForJob(jcr, sp->job, sp->pool);
- Dmsg1(250, "Using pool=%s\n", jcr->impl->res.pool->resource_name_);
+ Dmsg1(250, "Using pool=%s\n", jcr->dir_impl->res.pool->resource_name_);
if (jcr->db) { CloseDb = true; /* new db opened, remember to close it */ }
if (ok) {
- mr.PoolId = jcr->impl->jr.PoolId;
- jcr->impl->res.write_storage = sp->store;
- SetStorageidInMr(jcr->impl->res.write_storage, &mr);
+ mr.PoolId = jcr->dir_impl->jr.PoolId;
+ jcr->dir_impl->res.write_storage = sp->store;
+ SetStorageidInMr(jcr->dir_impl->res.write_storage, &mr);
Dmsg0(250, "call FindNextVolumeForAppend\n");
/* no need to set ScratchPoolId, since we use fnv_no_create_vol */
ok = FindNextVolumeForAppend(jcr, &mr, 1, NULL, fnv_no_create_vol,
@@ -966,7 +967,7 @@ static void ListRunningJobs(UaContext* ua)
}
foreach_jcr (jcr) {
if (jcr->JobId == 0
- || !ua->AclAccessOk(Job_ACL, jcr->impl->res.job->resource_name_)) {
+ || !ua->AclAccessOk(Job_ACL, jcr->dir_impl->res.job->resource_name_)) {
continue;
}
njobs++;
@@ -1003,23 +1004,23 @@ static void ListRunningJobs(UaContext* ua)
break;
case JS_WaitFD:
emsg = (char*)GetPoolMemory(PM_FNAME);
- if (!jcr->impl->res.client) {
+ if (!jcr->dir_impl->res.client) {
Mmsg(emsg, _("is waiting on Client"));
} else {
Mmsg(emsg, _("is waiting on Client %s"),
- jcr->impl->res.client->resource_name_);
+ jcr->dir_impl->res.client->resource_name_);
}
pool_mem = true;
msg = emsg;
break;
case JS_WaitSD:
emsg = (char*)GetPoolMemory(PM_FNAME);
- if (jcr->impl->res.write_storage) {
+ if (jcr->dir_impl->res.write_storage) {
Mmsg(emsg, _("is waiting on Storage \"%s\""),
- jcr->impl->res.write_storage->resource_name_);
- } else if (jcr->impl->res.read_storage) {
+ jcr->dir_impl->res.write_storage->resource_name_);
+ } else if (jcr->dir_impl->res.read_storage) {
Mmsg(emsg, _("is waiting on Storage \"%s\""),
- jcr->impl->res.read_storage->resource_name_);
+ jcr->dir_impl->res.read_storage->resource_name_);
} else {
Mmsg(emsg, _("is waiting on Storage"));
}
@@ -1074,7 +1075,7 @@ static void ListRunningJobs(UaContext* ua)
break;
}
// Now report Storage daemon status code
- switch (jcr->impl->SDJobStatus) {
+ switch (jcr->dir_impl->SDJobStatus) {
case JS_WaitMount:
if (pool_mem) {
FreePoolMemory(emsg);
@@ -1098,12 +1099,13 @@ static void ListRunningJobs(UaContext* ua)
// client initiated connection
Mmsg(emsg, _("is waiting for Client to connect (Client Initiated "
"Connection)"));
- } else if (!jcr->impl->res.client || !jcr->impl->res.write_storage) {
+ } else if (!jcr->dir_impl->res.client
+ || !jcr->dir_impl->res.write_storage) {
Mmsg(emsg, _("is waiting for Client to connect to Storage daemon"));
} else {
Mmsg(emsg, _("is waiting for Client %s to connect to Storage %s"),
- jcr->impl->res.client->resource_name_,
- jcr->impl->res.write_storage->resource_name_);
+ jcr->dir_impl->res.client->resource_name_,
+ jcr->dir_impl->res.write_storage->resource_name_);
}
msg = emsg;
break;
@@ -1597,7 +1599,7 @@ static void StatusSlots(UaContext* ua, StorageResource* store)
slot_number_t max_slots;
changer_vol_list_t* vol_list = NULL;
- ua->jcr->impl->res.write_storage = store;
+ ua->jcr->dir_impl->res.write_storage = store;
// Slot | Volume | Status | MediaType | Pool
const char* slot_hformat = " %4i%c| %16s | %9s | %14s | %24s |\n";
diff --git a/core/src/dird/ua_update.cc b/core/src/dird/ua_update.cc
index f30e66446..6566b5604 100644
--- a/core/src/dird/ua_update.cc
+++ b/core/src/dird/ua_update.cc
@@ -31,7 +31,7 @@
#include "include/bareos.h"
#include "dird.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/next_vol.h"
#include "dird/sd_cmds.h"
#include "dird/storage.h"
@@ -1014,7 +1014,7 @@ static void UpdateSlots(UaContext* ua)
have_enabled = false;
}
- max_slots = GetNumSlots(ua, ua->jcr->impl->res.write_storage);
+ max_slots = GetNumSlots(ua, ua->jcr->dir_impl->res.write_storage);
Dmsg1(100, "max_slots=%d\n", max_slots);
if (max_slots <= 0) {
ua->WarningMsg(_("No slots in changer to scan.\n"));
diff --git a/core/src/dird/vbackup.cc b/core/src/dird/vbackup.cc
index 9acd1b67d..c7358c907 100644
--- a/core/src/dird/vbackup.cc
+++ b/core/src/dird/vbackup.cc
@@ -39,7 +39,7 @@
#include "dird/dird_globals.h"
#include "dird/backup.h"
#include "dird/bsr.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/migration.h"
#include "dird/msgchan.h"
@@ -102,12 +102,12 @@ class JobConsistencyChecker {
std::string GetVfJobids(JobControlRecord& jcr)
{
// See if we already got a list of jobids to use.
- if (jcr.impl->vf_jobids) {
- Dmsg1(10, "jobids=%s\n", jcr.impl->vf_jobids);
- return jcr.impl->vf_jobids;
+ if (jcr.dir_impl->vf_jobids) {
+ Dmsg1(10, "jobids=%s\n", jcr.dir_impl->vf_jobids);
+ return jcr.dir_impl->vf_jobids;
} else {
db_list_ctx jobids_ctx;
- jcr.db->AccurateGetJobids(&jcr, &jcr.impl->jr, &jobids_ctx);
+ jcr.db->AccurateGetJobids(&jcr, &jcr.dir_impl->jr, &jobids_ctx);
Dmsg1(10, "consolidate candidates: %s.\n",
jobids_ctx.GetAsString().c_str());
return jobids_ctx.GetAsString();
@@ -128,9 +128,9 @@ bool DoNativeVbackupInit(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) {
+ jcr->dir_impl->jr.PoolId
+ = GetOrCreatePoolRecord(jcr, jcr->dir_impl->res.pool->resource_name_);
+ if (jcr->dir_impl->jr.PoolId == 0) {
Dmsg1(dbglevel, "JobId=%d no PoolId\n", (int)jcr->JobId);
Jmsg(jcr, M_FATAL, 0, _("Could not get or create a Pool record.\n"));
return false;
@@ -142,38 +142,41 @@ bool DoNativeVbackupInit(JobControlRecord* jcr)
* pool will be changed to point to the write pool,
* which comes from pool->NextPool.
*/
- jcr->impl->res.rpool = jcr->impl->res.pool; /* save read pool */
- PmStrcpy(jcr->impl->res.rpool_source, jcr->impl->res.pool_source);
+ jcr->dir_impl->res.rpool = jcr->dir_impl->res.pool; /* save read pool */
+ PmStrcpy(jcr->dir_impl->res.rpool_source, jcr->dir_impl->res.pool_source);
// If pool storage specified, use it for restore
- CopyRstorage(jcr, jcr->impl->res.pool->storage, _("Pool resource"));
+ CopyRstorage(jcr, jcr->dir_impl->res.pool->storage, _("Pool resource"));
Dmsg2(dbglevel, "Read pool=%s (From %s)\n",
- jcr->impl->res.rpool->resource_name_, jcr->impl->res.rpool_source);
+ jcr->dir_impl->res.rpool->resource_name_,
+ jcr->dir_impl->res.rpool_source);
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());
}
// See if there is a next pool override.
- if (jcr->impl->res.run_next_pool_override) {
- PmStrcpy(jcr->impl->res.npool_source, _("Run NextPool override"));
- PmStrcpy(jcr->impl->res.pool_source, _("Run NextPool override"));
+ if (jcr->dir_impl->res.run_next_pool_override) {
+ PmStrcpy(jcr->dir_impl->res.npool_source, _("Run NextPool override"));
+ PmStrcpy(jcr->dir_impl->res.pool_source, _("Run NextPool override"));
storage_source = _("Storage from Run NextPool override");
} else {
// See if there is a next pool override in the Job definition.
- if (jcr->impl->res.job->next_pool) {
- jcr->impl->res.next_pool = jcr->impl->res.job->next_pool;
- PmStrcpy(jcr->impl->res.npool_source, _("Job's NextPool resource"));
- PmStrcpy(jcr->impl->res.pool_source, _("Job's NextPool resource"));
+ if (jcr->dir_impl->res.job->next_pool) {
+ jcr->dir_impl->res.next_pool = jcr->dir_impl->res.job->next_pool;
+ PmStrcpy(jcr->dir_impl->res.npool_source, _("Job's NextPool resource"));
+ PmStrcpy(jcr->dir_impl->res.pool_source, _("Job's NextPool resource"));
storage_source = _("Storage from Job's NextPool resource");
} else {
// Fall back to the pool's NextPool definition.
- jcr->impl->res.next_pool = jcr->impl->res.pool->NextPool;
- PmStrcpy(jcr->impl->res.npool_source, _("Job Pool's NextPool resource"));
- PmStrcpy(jcr->impl->res.pool_source, _("Job Pool's NextPool resource"));
+ jcr->dir_impl->res.next_pool = jcr->dir_impl->res.pool->NextPool;
+ PmStrcpy(jcr->dir_impl->res.npool_source,
+ _("Job Pool's NextPool resource"));
+ PmStrcpy(jcr->dir_impl->res.pool_source,
+ _("Job Pool's NextPool resource"));
storage_source = _("Storage from Pool's NextPool resource");
}
}
@@ -183,22 +186,22 @@ bool DoNativeVbackupInit(JobControlRecord* jcr)
* record exists in the database. Note, in this case, we
* will be migrating from pool to pool->NextPool.
*/
- if (jcr->impl->res.next_pool) {
- jcr->impl->jr.PoolId
- = GetOrCreatePoolRecord(jcr, jcr->impl->res.next_pool->resource_name_);
- if (jcr->impl->jr.PoolId == 0) { return false; }
+ if (jcr->dir_impl->res.next_pool) {
+ jcr->dir_impl->jr.PoolId = GetOrCreatePoolRecord(
+ jcr, jcr->dir_impl->res.next_pool->resource_name_);
+ if (jcr->dir_impl->jr.PoolId == 0) { return false; }
}
- if (!SetMigrationWstorage(jcr, jcr->impl->res.pool, jcr->impl->res.next_pool,
- storage_source)) {
+ if (!SetMigrationWstorage(jcr, jcr->dir_impl->res.pool,
+ jcr->dir_impl->res.next_pool, storage_source)) {
return false;
}
- jcr->impl->res.pool = jcr->impl->res.next_pool;
+ jcr->dir_impl->res.pool = jcr->dir_impl->res.next_pool;
Dmsg2(dbglevel, "Write pool=%s read rpool=%s\n",
- jcr->impl->res.pool->resource_name_,
- jcr->impl->res.rpool->resource_name_);
+ jcr->dir_impl->res.pool->resource_name_,
+ jcr->dir_impl->res.rpool->resource_name_);
// CreateClones(jcr);
@@ -214,22 +217,23 @@ bool DoNativeVbackupInit(JobControlRecord* jcr)
*/
bool DoNativeVbackup(JobControlRecord* jcr)
{
- if (!jcr->impl->res.read_storage_list) {
+ if (!jcr->dir_impl->res.read_storage_list) {
Jmsg(jcr, M_FATAL, 0, _("No storage for reading given.\n"));
return false;
}
- if (!jcr->impl->res.write_storage_list) {
+ if (!jcr->dir_impl->res.write_storage_list) {
Jmsg(jcr, M_FATAL, 0, _("No storage for writing given.\n"));
return false;
}
Dmsg2(100, "read_storage_list=%p write_storage_list=%p\n",
- jcr->impl->res.read_storage_list, jcr->impl->res.write_storage_list);
+ jcr->dir_impl->res.read_storage_list,
+ jcr->dir_impl->res.write_storage_list);
Dmsg2(100, "Read store=%s, write store=%s\n",
- ((StorageResource*)jcr->impl->res.read_storage_list->first())
+ ((StorageResource*)jcr->dir_impl->res.read_storage_list->first())
->resource_name_,
- ((StorageResource*)jcr->impl->res.write_storage_list->first())
+ ((StorageResource*)jcr->dir_impl->res.write_storage_list->first())
->resource_name_);
Jmsg(jcr, M_INFO, 0, _("Start Virtual Backup JobId %lu, Job=%s\n"),
@@ -295,11 +299,11 @@ bool DoNativeVbackup(JobControlRecord* jcr)
* values from that job so that anything changed after that
* time will be picked up on the next backup.
*/
- jcr->impl->previous_jr = JobDbRecord{};
- jcr->impl->previous_jr.JobId = str_to_int64(jobid_list.back().c_str());
+ jcr->dir_impl->previous_jr = JobDbRecord{};
+ jcr->dir_impl->previous_jr.JobId = str_to_int64(jobid_list.back().c_str());
Dmsg1(10, "Previous JobId=%s\n", jobid_list.back().c_str());
- if (!jcr->db->GetJobRecord(jcr, &jcr->impl->previous_jr)) {
+ if (!jcr->db->GetJobRecord(jcr, &jcr->dir_impl->previous_jr)) {
Jmsg(jcr, M_FATAL, 0,
_("Error getting Job record for previous Job: ERR=%s\n"),
jcr->db->strerror());
@@ -312,7 +316,7 @@ bool DoNativeVbackup(JobControlRecord* jcr)
}
Jmsg(jcr, M_INFO, 0, _("Consolidating JobIds %s containing %d files\n"),
- jobids.c_str(), jcr->impl->ExpectedFiles);
+ jobids.c_str(), jcr->dir_impl->ExpectedFiles);
/*
* Open a message channel connection with the Storage
@@ -327,8 +331,8 @@ bool DoNativeVbackup(JobControlRecord* jcr)
}
// Now start a job with the Storage daemon
- if (!StartStorageDaemonJob(jcr, jcr->impl->res.read_storage_list,
- jcr->impl->res.write_storage_list,
+ if (!StartStorageDaemonJob(jcr, jcr->dir_impl->res.read_storage_list,
+ jcr->dir_impl->res.write_storage_list,
/* send_bsr */ true)) {
return false;
}
@@ -345,12 +349,12 @@ bool DoNativeVbackup(JobControlRecord* jcr)
* is after the start of this run.
*/
jcr->start_time = time(NULL);
- jcr->impl->jr.StartTime = jcr->start_time;
- jcr->impl->jr.JobTDate = jcr->start_time;
+ jcr->dir_impl->jr.StartTime = jcr->start_time;
+ jcr->dir_impl->jr.JobTDate = jcr->start_time;
jcr->setJobStatusWithPriorityCheck(JS_Running);
// Update job start record
- 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());
return false;
}
@@ -375,7 +379,7 @@ bool DoNativeVbackup(JobControlRecord* jcr)
* Note, the SD stores in jcr->JobFiles/ReadBytes/JobBytes/JobErrors
*/
WaitForStorageDaemonTermination(jcr);
- jcr->setJobStatusWithPriorityCheck(jcr->impl->SDJobStatus);
+ jcr->setJobStatusWithPriorityCheck(jcr->dir_impl->SDJobStatus);
jcr->db_batch->WriteBatchFileRecords(
jcr); /* used by bulk batch file insert */
if (!jcr->is_JobStatus(JS_Terminated)) { return false; }
@@ -383,8 +387,8 @@ bool DoNativeVbackup(JobControlRecord* jcr)
NativeVbackupCleanup(jcr, jcr->getJobStatus(), JobLevel_of_first_job);
// Remove the successfully consolidated jobids from the database
- if (jcr->impl->res.job->AlwaysIncremental
- && jcr->impl->res.job->AlwaysIncrementalJobRetention) {
+ if (jcr->dir_impl->res.job->AlwaysIncremental
+ && jcr->dir_impl->res.job->AlwaysIncrementalJobRetention) {
UaContext* ua;
ua = new_ua_context(jcr);
PurgeJobsFromCatalog(ua, jobids.c_str());
@@ -410,8 +414,8 @@ void NativeVbackupCleanup(JobControlRecord* jcr, int TermCode, int JobLevel)
switch (jcr->getJobStatus()) {
case JS_Terminated:
case JS_Warnings:
- jcr->impl->jr.JobLevel = JobLevel; /* We want this to appear as what the
- first consolidated job was */
+ jcr->dir_impl->jr.JobLevel = JobLevel; /* We want this to appear as what
+ the first consolidated job was */
Jmsg(jcr, M_INFO, 0,
_("Joblevel was set to joblevel of first consolidated job: %s\n"),
job_level_to_str(JobLevel));
@@ -420,11 +424,11 @@ void NativeVbackupCleanup(JobControlRecord* jcr, int TermCode, int JobLevel)
break;
}
- jcr->JobFiles = jcr->impl->SDJobFiles;
- jcr->JobBytes = jcr->impl->SDJobBytes;
+ jcr->JobFiles = jcr->dir_impl->SDJobFiles;
+ jcr->JobBytes = jcr->dir_impl->SDJobBytes;
if (jcr->getJobStatus() == JS_Terminated
- && (jcr->JobErrors || jcr->impl->SDErrors)) {
+ && (jcr->JobErrors || jcr->dir_impl->SDErrors)) {
TermCode = JS_Warnings;
}
@@ -434,20 +438,21 @@ void NativeVbackupCleanup(JobControlRecord* jcr, int TermCode, int JobLevel)
Mmsg(query,
"UPDATE Job SET StartTime='%s',EndTime='%s',"
"JobTDate=%s WHERE JobId=%s",
- jcr->impl->previous_jr.cStartTime, jcr->impl->previous_jr.cEndTime,
- edit_uint64(jcr->impl->previous_jr.JobTDate, ec1),
+ jcr->dir_impl->previous_jr.cStartTime,
+ jcr->dir_impl->previous_jr.cEndTime,
+ edit_uint64(jcr->dir_impl->previous_jr.JobTDate, ec1),
edit_uint64(jcr->JobId, ec2));
jcr->db->SqlQuery(query.c_str());
// Get the fully updated job record
- 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->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"),
@@ -469,8 +474,8 @@ void NativeVbackupCleanup(JobControlRecord* jcr, int TermCode, int JobLevel)
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;
@@ -478,8 +483,8 @@ void NativeVbackupCleanup(JobControlRecord* jcr, int TermCode, int JobLevel)
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;
@@ -539,11 +544,11 @@ static bool CreateBootstrapFile(JobControlRecord& jcr,
UaContext* ua = new_ua_context(&jcr);
AddVolumeInformationToBsr(ua, rx.bsr.get());
- jcr.impl->ExpectedFiles = WriteBsrFile(ua, rx);
- Dmsg1(10, "Found %d files to consolidate.\n", jcr.impl->ExpectedFiles);
+ jcr.dir_impl->ExpectedFiles = WriteBsrFile(ua, rx);
+ Dmsg1(10, "Found %d files to consolidate.\n", jcr.dir_impl->ExpectedFiles);
FreeUaContext(ua);
rx.bsr.reset(nullptr);
- return jcr.impl->ExpectedFiles != 0;
+ return jcr.dir_impl->ExpectedFiles != 0;
}
} /* namespace directordaemon */
diff --git a/core/src/dird/verify.cc b/core/src/dird/verify.cc
index d2c944f93..0bb7a7c89 100644
--- a/core/src/dird/verify.cc
+++ b/core/src/dird/verify.cc
@@ -39,7 +39,7 @@
#include "dird/backup.h"
#include "dird/fd_cmds.h"
#include "dird/getmsg.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/msgchan.h"
#include "dird/sd_cmds.h"
@@ -118,7 +118,7 @@ bool DoVerify(JobControlRecord* jcr)
FreeWstorage(jcr); /* we don't write */
- new (&jcr->impl->previous_jr)
+ new (&jcr->dir_impl->previous_jr)
JobDbRecord(); // placement new instead of memset
/*
@@ -138,19 +138,19 @@ bool DoVerify(JobControlRecord* jcr)
case L_VERIFY_CATALOG:
case L_VERIFY_VOLUME_TO_CATALOG:
case L_VERIFY_DISK_TO_CATALOG:
- jr = jcr->impl->jr;
- if (jcr->impl->res.verify_job
+ jr = jcr->dir_impl->jr;
+ if (jcr->dir_impl->res.verify_job
&& (JobLevel == L_VERIFY_VOLUME_TO_CATALOG
|| JobLevel == L_VERIFY_DISK_TO_CATALOG)) {
- Name = jcr->impl->res.verify_job->resource_name_;
+ Name = jcr->dir_impl->res.verify_job->resource_name_;
} else {
Name = NULL;
}
Dmsg1(100, "find last jobid for: %s\n", NPRT(Name));
// See if user supplied a jobid= as run argument or from menu
- if (jcr->impl->VerifyJobId) {
- verify_jobid = jcr->impl->VerifyJobId;
+ if (jcr->dir_impl->VerifyJobId) {
+ verify_jobid = jcr->dir_impl->VerifyJobId;
Dmsg1(100, "Supplied jobid=%d\n", verify_jobid);
} else {
@@ -174,22 +174,22 @@ bool DoVerify(JobControlRecord* jcr)
* Now get the job record for the previous backup that interests
* us. We use the verify_jobid that we found above.
*/
- jcr->impl->previous_jr.JobId = verify_jobid;
- if (!jcr->db->GetJobRecord(jcr, &jcr->impl->previous_jr)) {
+ jcr->dir_impl->previous_jr.JobId = verify_jobid;
+ 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());
return false;
}
- if (!(jcr->impl->previous_jr.JobStatus == JS_Terminated
- || jcr->impl->previous_jr.JobStatus == JS_Warnings)) {
+ if (!(jcr->dir_impl->previous_jr.JobStatus == JS_Terminated
+ || jcr->dir_impl->previous_jr.JobStatus == JS_Warnings)) {
Jmsg(jcr, M_FATAL, 0,
_("Last Job %d did not Terminate normally. JobStatus=%c\n"),
- verify_jobid, jcr->impl->previous_jr.JobStatus);
+ verify_jobid, jcr->dir_impl->previous_jr.JobStatus);
return false;
}
Jmsg(jcr, M_INFO, 0, _("Verifying against JobId=%d Job=%s\n"),
- jcr->impl->previous_jr.JobId, jcr->impl->previous_jr.Job);
+ jcr->dir_impl->previous_jr.JobId, jcr->dir_impl->previous_jr.Job);
}
/*
@@ -213,8 +213,8 @@ bool DoVerify(JobControlRecord* jcr)
return true; /* get out */
}
- if (jcr->impl->res.verify_job) {
- jcr->impl->res.fileset = jcr->impl->res.verify_job->fileset;
+ if (jcr->dir_impl->res.verify_job) {
+ jcr->dir_impl->res.fileset = jcr->dir_impl->res.verify_job->fileset;
}
break;
default:
@@ -222,10 +222,10 @@ bool DoVerify(JobControlRecord* jcr)
break;
}
- Dmsg2(100, "ClientId=%u JobLevel=%c\n", jcr->impl->previous_jr.ClientId,
+ Dmsg2(100, "ClientId=%u JobLevel=%c\n", jcr->dir_impl->previous_jr.ClientId,
JobLevel);
- 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());
return false;
}
@@ -244,12 +244,13 @@ bool DoVerify(JobControlRecord* jcr)
sd = jcr->store_bsock;
// Now start a job with the Storage daemon
- if (!StartStorageDaemonJob(jcr, jcr->impl->res.read_storage_list, NULL,
+ if (!StartStorageDaemonJob(jcr, jcr->dir_impl->res.read_storage_list,
+ NULL,
/* send_bsr */ true)) {
return false;
}
- jcr->passive_client = jcr->impl->res.client->passive;
+ jcr->passive_client = jcr->dir_impl->res.client->passive;
if (!jcr->passive_client) {
// Start the Job in the SD.
if (!sd->fsend("run")) { return false; }
@@ -268,11 +269,11 @@ bool DoVerify(JobControlRecord* jcr)
fd = jcr->file_bsock;
// Check if the file daemon supports passive client mode.
- 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 bail_out;
}
break;
@@ -313,12 +314,12 @@ bool DoVerify(JobControlRecord* jcr)
}
if (!jcr->passive_client) {
- StorageResource* store = jcr->impl->res.read_storage;
+ StorageResource* store = jcr->dir_impl->res.read_storage;
// Send Storage daemon address to the File daemon
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 {
@@ -334,10 +335,10 @@ bool DoVerify(JobControlRecord* jcr)
goto bail_out;
}
} else {
- ClientResource* client = jcr->impl->res.client;
+ ClientResource* client = jcr->dir_impl->res.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 {
@@ -393,30 +394,30 @@ bool DoVerify(JobControlRecord* jcr)
case L_VERIFY_CATALOG:
// Verify from catalog
Dmsg0(10, "Verify level=catalog\n");
- jcr->impl->sd_msg_thread_done
+ jcr->dir_impl->sd_msg_thread_done
= true; /* no SD msg thread, so it is done */
- jcr->impl->SDJobStatus = JS_Terminated;
- GetAttributesAndCompareToCatalog(jcr, jcr->impl->previous_jr.JobId);
+ jcr->dir_impl->SDJobStatus = JS_Terminated;
+ GetAttributesAndCompareToCatalog(jcr, jcr->dir_impl->previous_jr.JobId);
break;
case L_VERIFY_VOLUME_TO_CATALOG:
// Verify Volume to catalog entries
Dmsg0(10, "Verify level=volume\n");
- GetAttributesAndCompareToCatalog(jcr, jcr->impl->previous_jr.JobId);
+ GetAttributesAndCompareToCatalog(jcr, jcr->dir_impl->previous_jr.JobId);
break;
case L_VERIFY_DISK_TO_CATALOG:
// Verify Disk attributes to catalog
Dmsg0(10, "Verify level=disk_to_catalog\n");
- jcr->impl->sd_msg_thread_done
+ jcr->dir_impl->sd_msg_thread_done
= true; /* no SD msg thread, so it is done */
- jcr->impl->SDJobStatus = JS_Terminated;
- GetAttributesAndCompareToCatalog(jcr, jcr->impl->previous_jr.JobId);
+ jcr->dir_impl->SDJobStatus = JS_Terminated;
+ GetAttributesAndCompareToCatalog(jcr, jcr->dir_impl->previous_jr.JobId);
break;
case L_VERIFY_INIT:
// Build catalog
Dmsg0(10, "Verify level=init\n");
- jcr->impl->sd_msg_thread_done
+ jcr->dir_impl->sd_msg_thread_done
= true; /* no SD msg thread, so it is done */
- jcr->impl->SDJobStatus = JS_Terminated;
+ jcr->dir_impl->SDJobStatus = JS_Terminated;
GetAttributesAndPutInCatalog(jcr);
jcr->db->EndTransaction(jcr); /* Terminate any open transaction */
jcr->db_batch->WriteBatchFileRecords(jcr);
@@ -456,9 +457,9 @@ void VerifyCleanup(JobControlRecord* jcr, int TermCode)
JobLevel = jcr->getJobLevel();
Dmsg3(900, "JobLevel=%c Expected=%u JobFiles=%u\n", JobLevel,
- jcr->impl->ExpectedFiles, jcr->JobFiles);
+ jcr->dir_impl->ExpectedFiles, jcr->JobFiles);
if (JobLevel == L_VERIFY_VOLUME_TO_CATALOG
- && jcr->impl->ExpectedFiles != jcr->JobFiles) {
+ && jcr->dir_impl->ExpectedFiles != jcr->JobFiles) {
TermCode = JS_ErrorTerminated;
}
@@ -466,9 +467,9 @@ void VerifyCleanup(JobControlRecord* jcr, int TermCode)
if (JobCanceled(jcr)) { CancelStorageDaemonJob(jcr); }
- if (jcr->impl->unlink_bsr && jcr->RestoreBootstrap) {
+ if (jcr->dir_impl->unlink_bsr && jcr->RestoreBootstrap) {
SecureErase(jcr, jcr->RestoreBootstrap);
- jcr->impl->unlink_bsr = false;
+ jcr->dir_impl->unlink_bsr = false;
}
msg_type = M_INFO; /* By default INFO message */
@@ -496,18 +497,19 @@ void VerifyCleanup(JobControlRecord* jcr, int TermCode)
_("Inappropriate term code: %d %c\n"), TermCode, TermCode);
break;
}
- bstrftimes(sdt, sizeof(sdt), jcr->impl->jr.StartTime);
- bstrftimes(edt, sizeof(edt), jcr->impl->jr.EndTime);
- if (jcr->impl->res.verify_job) {
- Name = jcr->impl->res.verify_job->resource_name_;
+ bstrftimes(sdt, sizeof(sdt), jcr->dir_impl->jr.StartTime);
+ bstrftimes(edt, sizeof(edt), jcr->dir_impl->jr.EndTime);
+ if (jcr->dir_impl->res.verify_job) {
+ Name = jcr->dir_impl->res.verify_job->resource_name_;
} else {
Name = "";
}
- JobstatusToAscii(jcr->impl->FDJobStatus, fd_term_msg, sizeof(fd_term_msg));
+ JobstatusToAscii(jcr->dir_impl->FDJobStatus, fd_term_msg,
+ sizeof(fd_term_msg));
switch (JobLevel) {
case L_VERIFY_VOLUME_TO_CATALOG:
- JobstatusToAscii(jcr->impl->SDJobStatus, sd_term_msg,
+ JobstatusToAscii(jcr->dir_impl->SDJobStatus, sd_term_msg,
sizeof(sd_term_msg));
Jmsg(jcr, msg_type, 0,
_("%s %s %s (%s):\n"
@@ -531,14 +533,15 @@ void VerifyCleanup(JobControlRecord* jcr, int TermCode)
" Termination: %s\n\n"),
BAREOS, my_name, kBareosVersionStrings.Full,
kBareosVersionStrings.ShortDate, kBareosVersionStrings.GetOsInfo(),
- jcr->impl->jr.JobId, jcr->impl->jr.Job,
- jcr->impl->res.fileset->resource_name_, JobLevelToString(JobLevel),
- jcr->impl->res.client->resource_name_, jcr->impl->previous_jr.JobId,
- Name, sdt, edt,
- edit_uint64_with_commas(jcr->impl->ExpectedFiles, ec1),
+ jcr->dir_impl->jr.JobId, jcr->dir_impl->jr.Job,
+ jcr->dir_impl->res.fileset->resource_name_,
+ JobLevelToString(JobLevel),
+ jcr->dir_impl->res.client->resource_name_,
+ jcr->dir_impl->previous_jr.JobId, Name, sdt, edt,
+ edit_uint64_with_commas(jcr->dir_impl->ExpectedFiles, ec1),
edit_uint64_with_commas(jcr->JobFiles, ec2), jcr->JobErrors,
fd_term_msg, sd_term_msg, kBareosVersionStrings.JoblogMessage,
- JobTriggerToString(jcr->impl->job_trigger).c_str(), TermMsg);
+ JobTriggerToString(jcr->dir_impl->job_trigger).c_str(), TermMsg);
break;
default:
Jmsg(jcr, msg_type, 0,
@@ -561,12 +564,14 @@ void VerifyCleanup(JobControlRecord* jcr, int TermCode)
" Termination: %s\n\n"),
BAREOS, my_name, kBareosVersionStrings.Full,
kBareosVersionStrings.ShortDate, kBareosVersionStrings.GetOsInfo(),
- jcr->impl->jr.JobId, jcr->impl->jr.Job,
- jcr->impl->res.fileset->resource_name_, JobLevelToString(JobLevel),
- jcr->impl->res.client->resource_name_, jcr->impl->previous_jr.JobId,
- Name, sdt, edt, edit_uint64_with_commas(jcr->JobFiles, ec1),
- jcr->JobErrors, fd_term_msg, kBareosVersionStrings.JoblogMessage,
- JobTriggerToString(jcr->impl->job_trigger).c_str(), TermMsg);
+ jcr->dir_impl->jr.JobId, jcr->dir_impl->jr.Job,
+ jcr->dir_impl->res.fileset->resource_name_,
+ JobLevelToString(JobLevel),
+ jcr->dir_impl->res.client->resource_name_,
+ jcr->dir_impl->previous_jr.JobId, Name, sdt, edt,
+ edit_uint64_with_commas(jcr->JobFiles, ec1), jcr->JobErrors,
+ fd_term_msg, kBareosVersionStrings.JoblogMessage,
+ JobTriggerToString(jcr->dir_impl->job_trigger).c_str(), TermMsg);
break;
}
@@ -588,7 +593,7 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId)
fd = jcr->file_bsock;
fdbr.JobId = JobId;
- jcr->impl->FileIndex = 0;
+ jcr->dir_impl->FileIndex = 0;
Dmsg0(20, "dir: waiting to receive file attributes\n");
/*
@@ -608,8 +613,8 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId)
if (JobCanceled(jcr)) { goto bail_out; }
fname = CheckPoolMemorySize(fname, fd->message_length);
- jcr->impl->fname
- = CheckPoolMemorySize(jcr->impl->fname, fd->message_length);
+ jcr->dir_impl->fname
+ = CheckPoolMemorySize(jcr->dir_impl->fname, fd->message_length);
Dmsg1(200, "Atts+Digest=%s\n", fd->msg);
if ((len = sscanf(fd->msg, "%ld %d %100s", &file_index, &stream, fname))
!= 3) {
@@ -643,24 +648,26 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId)
int32_t LinkFIf, LinkFIc;
Dmsg2(400, "file_index=%d attr=%s\n", file_index, attr);
jcr->JobFiles++;
- jcr->impl->FileIndex = file_index; /* remember attribute file_index */
- jcr->impl->previous_jr.FileIndex = file_index;
+ jcr->dir_impl->FileIndex
+ = file_index; /* remember attribute file_index */
+ jcr->dir_impl->previous_jr.FileIndex = file_index;
DecodeStat(attr, &statf, sizeof(statf),
&LinkFIf); /* decode file stat packet */
do_Digest = CRYPTO_DIGEST_NONE;
- jcr->impl->fn_printed = false;
- PmStrcpy(jcr->impl->fname,
+ jcr->dir_impl->fn_printed = false;
+ PmStrcpy(jcr->dir_impl->fname,
fname); /* move filename into JobControlRecord */
- Dmsg2(040, "dird<filed: stream=%d %s\n", stream, jcr->impl->fname);
+ Dmsg2(040, "dird<filed: stream=%d %s\n", stream, jcr->dir_impl->fname);
Dmsg1(020, "dird<filed: attr=%s\n", attr);
// Find equivalent record in the database
fdbr.FileId = 0;
- if (!jcr->db->GetFileAttributesRecord(jcr, jcr->impl->fname,
- &jcr->impl->previous_jr, &fdbr)) {
- Jmsg(jcr, M_INFO, 0, _("New file: %s\n"), jcr->impl->fname);
- Dmsg1(020, _("File not in catalog: %s\n"), jcr->impl->fname);
+ if (!jcr->db->GetFileAttributesRecord(jcr, jcr->dir_impl->fname,
+ &jcr->dir_impl->previous_jr,
+ &fdbr)) {
+ Jmsg(jcr, M_INFO, 0, _("New file: %s\n"), jcr->dir_impl->fname);
+ Dmsg1(020, _("File not in catalog: %s\n"), jcr->dir_impl->fname);
jcr->setJobStatusWithPriorityCheck(JS_Differences);
continue;
} else {
@@ -671,8 +678,8 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId)
jcr->db->MarkFileRecord(jcr, fdbr.FileId, jcr->JobId);
}
- Dmsg3(400, "Found %s in catalog. inx=%d Opts=%s\n", jcr->impl->fname,
- file_index, Opts_Digest.c_str());
+ Dmsg3(400, "Found %s in catalog. inx=%d Opts=%s\n",
+ jcr->dir_impl->fname, file_index, Opts_Digest.c_str());
DecodeStat(fdbr.LStat, &statc, sizeof(statc),
&LinkFIc); /* decode catalog stat */
/*
@@ -770,7 +777,7 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId)
}
break;
case '5': /* compare MD5 */
- Dmsg1(500, "set Do_MD5 for %s\n", jcr->impl->fname);
+ Dmsg1(500, "set Do_MD5 for %s\n", jcr->dir_impl->fname);
do_Digest = CRYPTO_DIGEST_MD5;
break;
case '1': /* compare SHA1 */
@@ -785,7 +792,7 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId)
break;
case STREAM_RESTORE_OBJECT:
- Dmsg1(400, "RESTORE_OBJECT %s\n", jcr->impl->fname);
+ Dmsg1(400, "RESTORE_OBJECT %s\n", jcr->dir_impl->fname);
break;
default:
@@ -800,10 +807,10 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId)
* When ever we get a digest it MUST have been
* preceded by an attributes record, which sets attr_file_index
*/
- if (jcr->impl->FileIndex != (uint32_t)file_index) {
+ if (jcr->dir_impl->FileIndex != (uint32_t)file_index) {
Jmsg2(jcr, M_FATAL, 0,
_("MD5/SHA1 index %d not same as attributes %d\n"),
- file_index, jcr->impl->FileIndex);
+ file_index, jcr->dir_impl->FileIndex);
goto bail_out;
}
if (do_Digest != CRYPTO_DIGEST_NONE) {
@@ -834,7 +841,7 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId)
/* Now find all the files that are missing -- i.e. all files in
* the database where the MarkId != current JobId
*/
- jcr->impl->fn_printed = false;
+ jcr->dir_impl->fn_printed = false;
Mmsg(buf,
"SELECT Path.Path,File.Name FROM File,Path "
"WHERE File.JobId=%d AND File.FileIndex > 0 "
@@ -842,7 +849,7 @@ void GetAttributesAndCompareToCatalog(JobControlRecord* jcr, JobId_t JobId)
JobId, jcr->JobId);
/* MissingHandler is called for each file found */
jcr->db->SqlQuery(buf.c_str(), MissingHandler, (void*)jcr);
- if (jcr->impl->fn_printed) {
+ if (jcr->dir_impl->fn_printed) {
jcr->setJobStatusWithPriorityCheck(JS_Differences);
}
@@ -861,12 +868,12 @@ static int MissingHandler(void* ctx, int, char** row)
JobControlRecord* jcr = (JobControlRecord*)ctx;
if (JobCanceled(jcr)) { return 1; }
- if (!jcr->impl->fn_printed) {
+ if (!jcr->dir_impl->fn_printed) {
Qmsg(jcr, M_WARNING, 0,
_("The following files are in the Catalog but not on %s:\n"),
jcr->getJobLevel() == L_VERIFY_VOLUME_TO_CATALOG ? "the Volume(s)"
: "disk");
- jcr->impl->fn_printed = true;
+ jcr->dir_impl->fn_printed = true;
}
Qmsg(jcr, M_INFO, 0, " %s%s\n", row[0] ? row[0] : "",
row[1] ? row[1] : "");
@@ -876,9 +883,9 @@ static int MissingHandler(void* ctx, int, char** row)
// Print filename for verify
static void PrtFname(JobControlRecord* jcr)
{
- if (!jcr->impl->fn_printed) {
- Jmsg(jcr, M_INFO, 0, _("File: %s\n"), jcr->impl->fname);
- jcr->impl->fn_printed = true;
+ if (!jcr->dir_impl->fn_printed) {
+ Jmsg(jcr, M_INFO, 0, _("File: %s\n"), jcr->dir_impl->fname);
+ jcr->dir_impl->fn_printed = true;
}
}
} /* namespace directordaemon */
diff --git a/core/src/filed/accurate.cc b/core/src/filed/accurate.cc
index e6b611cd3..a169418d9 100644
--- a/core/src/filed/accurate.cc
+++ b/core/src/filed/accurate.cc
@@ -3,7 +3,7 @@
Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
Copyright (C) 2013-2014 Planets Communications B.V.
- Copyright (C) 2013-2019 Bareos GmbH & Co. KG
+ Copyright (C) 2013-2022 Bareos GmbH & Co. KG
This program is Free Software; you can redistribute it and/or
modify it under the terms of version three of the GNU Affero General Public
@@ -25,7 +25,7 @@
#include "filed/filed.h"
#include "filed/accurate.h"
#include "filed/filed_globals.h"
-#include "filed/jcr_private.h"
+#include "filed/filed_jcr_impl.h"
#include "filed/verify.h"
#include "lib/attribs.h"
#include "lib/bsock.h"
@@ -39,11 +39,11 @@ bool AccurateMarkFileAsSeen(JobControlRecord* jcr, char* fname)
{
accurate_payload* temp;
- if (!jcr->accurate || !jcr->impl->file_list) { return false; }
+ if (!jcr->accurate || !jcr->fd_impl->file_list) { return false; }
- temp = jcr->impl->file_list->lookup_payload(fname);
+ temp = jcr->fd_impl->file_list->lookup_payload(fname);
if (temp) {
- jcr->impl->file_list->MarkFileAsSeen(temp);
+ jcr->fd_impl->file_list->MarkFileAsSeen(temp);
Dmsg1(debuglevel, "marked <%s> as seen\n", fname);
} else {
Dmsg1(debuglevel, "<%s> not found to be marked as seen\n", fname);
@@ -56,11 +56,11 @@ bool accurate_unMarkFileAsSeen(JobControlRecord* jcr, char* fname)
{
accurate_payload* temp;
- if (!jcr->accurate || !jcr->impl->file_list) { return false; }
+ if (!jcr->accurate || !jcr->fd_impl->file_list) { return false; }
- temp = jcr->impl->file_list->lookup_payload(fname);
+ temp = jcr->fd_impl->file_list->lookup_payload(fname);
if (temp) {
- jcr->impl->file_list->UnmarkFileAsSeen(temp);
+ jcr->fd_impl->file_list->UnmarkFileAsSeen(temp);
Dmsg1(debuglevel, "unmarked <%s> as seen\n", fname);
} else {
Dmsg1(debuglevel, "<%s> not found to be unmarked as seen\n", fname);
@@ -71,17 +71,17 @@ bool accurate_unMarkFileAsSeen(JobControlRecord* jcr, char* fname)
bool AccurateMarkAllFilesAsSeen(JobControlRecord* jcr)
{
- if (!jcr->accurate || !jcr->impl->file_list) { return false; }
+ if (!jcr->accurate || !jcr->fd_impl->file_list) { return false; }
- jcr->impl->file_list->MarkAllFilesAsSeen();
+ jcr->fd_impl->file_list->MarkAllFilesAsSeen();
return true;
}
bool accurate_unMarkAllFilesAsSeen(JobControlRecord* jcr)
{
- if (!jcr->accurate || !jcr->impl->file_list) { return false; }
+ if (!jcr->accurate || !jcr->fd_impl->file_list) { return false; }
- jcr->impl->file_list->UnmarkAllFilesAsSeen();
+ jcr->fd_impl->file_list->UnmarkAllFilesAsSeen();
return true;
}
@@ -91,7 +91,7 @@ static inline bool AccurateLookup(JobControlRecord* jcr,
{
bool found = false;
- *payload = jcr->impl->file_list->lookup_payload(fname);
+ *payload = jcr->fd_impl->file_list->lookup_payload(fname);
if (*payload) {
found = true;
Dmsg1(debuglevel, "lookup <%s> ok\n", fname);
@@ -102,9 +102,9 @@ static inline bool AccurateLookup(JobControlRecord* jcr,
void AccurateFree(JobControlRecord* jcr)
{
- if (jcr->impl->file_list) {
- delete jcr->impl->file_list;
- jcr->impl->file_list = NULL;
+ if (jcr->fd_impl->file_list) {
+ delete jcr->fd_impl->file_list;
+ jcr->fd_impl->file_list = NULL;
}
}
@@ -118,19 +118,19 @@ bool AccurateFinish(JobControlRecord* jcr)
return retval;
}
- if (jcr->accurate && jcr->impl->file_list) {
+ if (jcr->accurate && jcr->fd_impl->file_list) {
if (jcr->is_JobLevel(L_FULL)) {
if (!jcr->rerunning) {
- retval = jcr->impl->file_list->SendBaseFileList();
+ retval = jcr->fd_impl->file_list->SendBaseFileList();
}
} else {
- retval = jcr->impl->file_list->SendDeletedList();
+ retval = jcr->fd_impl->file_list->SendDeletedList();
}
AccurateFree(jcr);
if (jcr->is_JobLevel(L_FULL)) {
Jmsg(jcr, M_INFO, 0, _("Space saved with Base jobs: %lld MB\n"),
- jcr->impl->base_size / (1024 * 1024));
+ jcr->fd_impl->base_size / (1024 * 1024));
}
}
@@ -160,7 +160,7 @@ bool AccurateCheckFile(JobControlRecord* jcr, FindFilesPacket* ff_pkt)
if (!jcr->accurate && !jcr->rerunning) { return true; }
- if (!jcr->impl->file_list) { return true; /** Not initialized properly */ }
+ if (!jcr->fd_impl->file_list) { return true; /** Not initialized properly */ }
// Apply path stripping for lookup in accurate data.
StripPath(ff_pkt);
@@ -316,11 +316,11 @@ bool AccurateCheckFile(JobControlRecord* jcr, FindFilesPacket* ff_pkt)
if (jcr->getJobLevel() == L_FULL) {
if (!status) {
// Compute space saved with basefile.
- jcr->impl->base_size += ff_pkt->statp.st_size;
- jcr->impl->file_list->MarkFileAsSeen(payload);
+ jcr->fd_impl->base_size += ff_pkt->statp.st_size;
+ jcr->fd_impl->file_list->MarkFileAsSeen(payload);
}
} else {
- jcr->impl->file_list->MarkFileAsSeen(payload);
+ jcr->fd_impl->file_list->MarkFileAsSeen(payload);
}
bail_out:
@@ -346,18 +346,18 @@ bool AccurateCmd(JobControlRecord* jcr)
if (me->always_use_lmdb
|| (me->lmdb_threshold > 0
&& number_of_previous_files >= me->lmdb_threshold)) {
- jcr->impl->file_list
+ jcr->fd_impl->file_list
= new BareosAccurateFilelistLmdb(jcr, number_of_previous_files);
} else {
- jcr->impl->file_list
+ jcr->fd_impl->file_list
= new BareosAccurateFilelistHtable(jcr, number_of_previous_files);
}
#else
- jcr->impl->file_list
+ jcr->fd_impl->file_list
= new BareosAccurateFilelistHtable(jcr, number_of_previous_files);
#endif
- if (!jcr->impl->file_list->init()) { return false; }
+ if (!jcr->fd_impl->file_list->init()) { return false; }
jcr->accurate = true;
@@ -388,11 +388,11 @@ bool AccurateCmd(JobControlRecord* jcr)
}
}
- jcr->impl->file_list->AddFile(fname, fname_length, lstat, lstat_length,
- chksum, chksum_length, delta_seq);
+ jcr->fd_impl->file_list->AddFile(fname, fname_length, lstat, lstat_length,
+ chksum, chksum_length, delta_seq);
}
- if (!jcr->impl->file_list->EndLoad()) { return false; }
+ if (!jcr->fd_impl->file_list->EndLoad()) { return false; }
return true;
}
diff --git a/core/src/filed/authenticate.cc b/core/src/filed/authenticate.cc
index 4cf0b3a7d..570e45d64 100644
--- a/core/src/filed/authenticate.cc
+++ b/core/src/filed/authenticate.cc
@@ -29,7 +29,7 @@
#include "include/bareos.h"
#include "filed/filed.h"
#include "filed/filed_globals.h"
-#include "filed/jcr_private.h"
+#include "filed/filed_jcr_impl.h"
#include "filed/restore.h"
#include "lib/bnet.h"
#include "lib/bsock.h"
@@ -146,7 +146,7 @@ bool AuthenticateDirector(JobControlRecord* jcr)
return false;
}
- jcr->impl->director = director;
+ jcr->fd_impl->director = director;
return dir->fsend("%s", (me->compatible) ? OK_hello_compat : OK_hello);
}
diff --git a/core/src/filed/backup.cc b/core/src/filed/backup.cc
index e81f7cea9..bf5006d31 100644
--- a/core/src/filed/backup.cc
+++ b/core/src/filed/backup.cc
@@ -35,7 +35,7 @@
#include "filed/crypto.h"
#include "filed/heartbeat.h"
#include "filed/backup.h"
-#include "filed/jcr_private.h"
+#include "filed/filed_jcr_impl.h"
#include "include/ch.h"
#include "findlib/attribs.h"
#include "findlib/hardlink.h"
@@ -90,7 +90,7 @@ static void CloseVssBackupSession(JobControlRecord* jcr);
* to the Storage daemon.
*
* Note, we normally carry on a one-way
- * conversation from this point on with the SD, simply blasting
+ * conversation from this point on with the SD, sfd_imply blasting
* data to him. To properly know what is going on, we
* also run a "heartbeat" monitor which reads the socket and
* reacts accordingly (at the moment it has nothing to do
@@ -131,47 +131,49 @@ bool BlastDataToStorageDaemon(JobControlRecord* jcr,
if (!CryptoSessionStart(jcr, cipher)) { return false; }
- SetFindOptions((FindFilesPacket*)jcr->impl->ff, jcr->impl->incremental,
- jcr->impl->since_time);
+ SetFindOptions((FindFilesPacket*)jcr->fd_impl->ff, jcr->fd_impl->incremental,
+ jcr->fd_impl->since_time);
// In accurate mode, we overload the find_one check function
if (jcr->accurate) {
- SetFindChangedFunction((FindFilesPacket*)jcr->impl->ff, AccurateCheckFile);
+ SetFindChangedFunction((FindFilesPacket*)jcr->fd_impl->ff,
+ AccurateCheckFile);
}
StartHeartbeatMonitor(jcr);
if (have_acl) {
- jcr->impl->acl_data = std::make_unique<AclData>();
- jcr->impl->acl_data->u.build
+ jcr->fd_impl->acl_data = std::make_unique<AclData>();
+ jcr->fd_impl->acl_data->u.build
= (acl_build_data_t*)malloc(sizeof(acl_build_data_t));
- memset(jcr->impl->acl_data->u.build, 0, sizeof(acl_build_data_t));
- jcr->impl->acl_data->u.build->content = GetPoolMemory(PM_MESSAGE);
+ memset(jcr->fd_impl->acl_data->u.build, 0, sizeof(acl_build_data_t));
+ jcr->fd_impl->acl_data->u.build->content = GetPoolMemory(PM_MESSAGE);
}
if (have_xattr) {
- jcr->impl->xattr_data = std::make_unique<XattrData>();
- jcr->impl->xattr_data->u.build
+ jcr->fd_impl->xattr_data = std::make_unique<XattrData>();
+ jcr->fd_impl->xattr_data->u.build
= (xattr_build_data_t*)malloc(sizeof(xattr_build_data_t));
- memset(jcr->impl->xattr_data->u.build, 0, sizeof(xattr_build_data_t));
- jcr->impl->xattr_data->u.build->content = GetPoolMemory(PM_MESSAGE);
+ memset(jcr->fd_impl->xattr_data->u.build, 0, sizeof(xattr_build_data_t));
+ jcr->fd_impl->xattr_data->u.build->content = GetPoolMemory(PM_MESSAGE);
}
// Subroutine SaveFile() is called for each file
- if (!FindFiles(jcr, (FindFilesPacket*)jcr->impl->ff, SaveFile, PluginSave)) {
+ if (!FindFiles(jcr, (FindFilesPacket*)jcr->fd_impl->ff, SaveFile,
+ PluginSave)) {
ok = false; /* error */
jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
}
- if (have_acl && jcr->impl->acl_data->u.build->nr_errors > 0) {
+ if (have_acl && jcr->fd_impl->acl_data->u.build->nr_errors > 0) {
Jmsg(jcr, M_WARNING, 0,
_("Encountered %ld acl errors while doing backup\n"),
- jcr->impl->acl_data->u.build->nr_errors);
+ jcr->fd_impl->acl_data->u.build->nr_errors);
}
- if (have_xattr && jcr->impl->xattr_data->u.build->nr_errors > 0) {
+ if (have_xattr && jcr->fd_impl->xattr_data->u.build->nr_errors > 0) {
Jmsg(jcr, M_WARNING, 0,
_("Encountered %ld xattr errors while doing backup\n"),
- jcr->impl->xattr_data->u.build->nr_errors);
+ jcr->fd_impl->xattr_data->u.build->nr_errors);
}
#if defined(WIN32_VSS)
@@ -184,19 +186,19 @@ bool BlastDataToStorageDaemon(JobControlRecord* jcr,
sd->signal(BNET_EOD); /* end of sending data */
- if (have_acl && jcr->impl->acl_data) {
- FreePoolMemory(jcr->impl->acl_data->u.build->content);
- free(jcr->impl->acl_data->u.build);
+ if (have_acl && jcr->fd_impl->acl_data) {
+ FreePoolMemory(jcr->fd_impl->acl_data->u.build->content);
+ free(jcr->fd_impl->acl_data->u.build);
}
- if (have_xattr && jcr->impl->xattr_data) {
- FreePoolMemory(jcr->impl->xattr_data->u.build->content);
- free(jcr->impl->xattr_data->u.build);
+ if (have_xattr && jcr->fd_impl->xattr_data) {
+ FreePoolMemory(jcr->fd_impl->xattr_data->u.build->content);
+ free(jcr->fd_impl->xattr_data->u.build);
}
- if (jcr->impl->big_buf) {
- free(jcr->impl->big_buf);
- jcr->impl->big_buf = NULL;
+ if (jcr->fd_impl->big_buf) {
+ free(jcr->fd_impl->big_buf);
+ jcr->fd_impl->big_buf = NULL;
}
CleanupCompression(jcr);
@@ -314,7 +316,7 @@ static inline bool SetupEncryptionDigests(b_save_ctx& bsctx)
/* TODO landonf: We should really only calculate the digest once, for
* both verification and signing.
*/
- if (bsctx.jcr->impl->crypto.pki_sign) {
+ if (bsctx.jcr->fd_impl->crypto.pki_sign) {
bsctx.signing_digest = crypto_digest_new(bsctx.jcr, signing_algorithm);
// Full-stop if a failure occurred initializing the signature digest
@@ -328,7 +330,7 @@ static inline bool SetupEncryptionDigests(b_save_ctx& bsctx)
}
// Enable encryption
- if (bsctx.jcr->impl->crypto.pki_encrypt) {
+ if (bsctx.jcr->fd_impl->crypto.pki_encrypt) {
SetBit(FO_ENCRYPT, bsctx.ff_pkt->flags);
}
retval = true;
@@ -352,7 +354,7 @@ static inline bool TerminateSigningDigest(b_save_ctx& bsctx)
}
if (!CryptoSignAddSigner(signature, bsctx.signing_digest,
- bsctx.jcr->impl->crypto.pki_keypair)) {
+ bsctx.jcr->fd_impl->crypto.pki_keypair)) {
Jmsg(bsctx.jcr, M_FATAL, 0,
_("An error occurred while signing the stream.\n"));
goto bail_out;
@@ -432,13 +434,13 @@ static inline bool DoBackupAcl(JobControlRecord* jcr, FindFilesPacket* ff_pkt)
{
bacl_exit_code retval;
- jcr->impl->acl_data->filetype = ff_pkt->type;
- jcr->impl->acl_data->last_fname = jcr->impl->last_fname;
+ jcr->fd_impl->acl_data->filetype = ff_pkt->type;
+ jcr->fd_impl->acl_data->last_fname = jcr->fd_impl->last_fname;
if (jcr->IsPlugin()) {
- retval = PluginBuildAclStreams(jcr, jcr->impl->acl_data.get(), ff_pkt);
+ retval = PluginBuildAclStreams(jcr, jcr->fd_impl->acl_data.get(), ff_pkt);
} else {
- retval = BuildAclStreams(jcr, jcr->impl->acl_data.get(), ff_pkt);
+ retval = BuildAclStreams(jcr, jcr->fd_impl->acl_data.get(), ff_pkt);
}
switch (retval) {
@@ -446,7 +448,7 @@ static inline bool DoBackupAcl(JobControlRecord* jcr, FindFilesPacket* ff_pkt)
return false;
case bacl_exit_error:
Jmsg(jcr, M_ERROR, 0, "%s", jcr->errmsg);
- jcr->impl->acl_data->u.build->nr_errors++;
+ jcr->fd_impl->acl_data->u.build->nr_errors++;
break;
case bacl_exit_ok:
break;
@@ -459,12 +461,13 @@ static inline bool DoBackupXattr(JobControlRecord* jcr, FindFilesPacket* ff_pkt)
{
BxattrExitCode retval;
- jcr->impl->xattr_data->last_fname = jcr->impl->last_fname;
+ jcr->fd_impl->xattr_data->last_fname = jcr->fd_impl->last_fname;
if (jcr->IsPlugin()) {
- retval = PluginBuildXattrStreams(jcr, jcr->impl->xattr_data.get(), ff_pkt);
+ retval
+ = PluginBuildXattrStreams(jcr, jcr->fd_impl->xattr_data.get(), ff_pkt);
} else {
- retval = BuildXattrStreams(jcr, jcr->impl->xattr_data.get(), ff_pkt);
+ retval = BuildXattrStreams(jcr, jcr->fd_impl->xattr_data.get(), ff_pkt);
}
switch (retval) {
@@ -475,7 +478,7 @@ static inline bool DoBackupXattr(JobControlRecord* jcr, FindFilesPacket* ff_pkt)
break;
case BxattrExitCode::kError:
Jmsg(jcr, M_ERROR, 0, "%s", jcr->errmsg);
- jcr->impl->xattr_data->u.build->nr_errors++;
+ jcr->fd_impl->xattr_data->u.build->nr_errors++;
break;
case BxattrExitCode::kSuccess:
break;
@@ -508,7 +511,7 @@ int SaveFile(JobControlRecord* jcr, FindFilesPacket* ff_pkt, bool)
if (jcr->IsCanceled() || jcr->IsIncomplete()) { return 0; }
- jcr->impl->num_files_examined++; /* bump total file count */
+ jcr->fd_impl->num_files_examined++; /* bump total file count */
switch (ff_pkt->type) {
case FT_LNKSAVED: /* Hard linked, file already saved */
@@ -533,8 +536,8 @@ int SaveFile(JobControlRecord* jcr, FindFilesPacket* ff_pkt, bool)
Dmsg1(100, "FT_PLUGIN_CONFIG saving: %s\n", ff_pkt->fname);
break;
case FT_DIRBEGIN:
- jcr->impl->num_files_examined--; /* correct file count */
- return 1; /* not used */
+ jcr->fd_impl->num_files_examined--; /* correct file count */
+ return 1; /* not used */
case FT_NORECURSE:
Jmsg(jcr, M_INFO, 1,
_(" Recursion turned off. Will not descend from %s into %s\n"),
@@ -659,7 +662,7 @@ int SaveFile(JobControlRecord* jcr, FindFilesPacket* ff_pkt, bool)
Dmsg2(10, "Option plugin %s will be used to backup %s\n",
ff_pkt->plugin, ff_pkt->fname);
jcr->opt_plugin = true;
- jcr->impl->plugin_sp = &sp;
+ jcr->fd_impl->plugin_sp = &sp;
PluginUpdateFfPkt(ff_pkt, &sp);
do_plugin_set = true;
break;
@@ -693,7 +696,7 @@ int SaveFile(JobControlRecord* jcr, FindFilesPacket* ff_pkt, bool)
if (ff_pkt->type == FT_DELETED) { goto good_rtn; }
// Set up the encryption context and send the session data to the SD
- if (has_file_data && jcr->impl->crypto.pki_encrypt) {
+ if (has_file_data && jcr->fd_impl->crypto.pki_encrypt) {
if (!CryptoSessionSend(jcr, sd)) { goto bail_out; }
}
@@ -825,7 +828,7 @@ bail_out:
SendPluginName(jcr, sd, false); /* signal end of plugin data */
}
if (ff_pkt->opt_plugin) {
- jcr->impl->plugin_sp = NULL; /* sp is local to this function */
+ jcr->fd_impl->plugin_sp = NULL; /* sp is local to this function */
jcr->opt_plugin = false;
}
if (bsctx.digest) { CryptoDigestFree(bsctx.digest); }
@@ -1121,7 +1124,7 @@ static int send_data(JobControlRecord* jcr,
} else if (BitIsSet(FO_ENCRYPT, ff_pkt->flags)) {
// For encryption, we must call finalize to push out any buffered data.
if (!CryptoCipherFinalize(bctx.cipher_ctx,
- (uint8_t*)jcr->impl->crypto.crypto_buf,
+ (uint8_t*)jcr->fd_impl->crypto.crypto_buf,
&bctx.encrypted_len)) {
// Padding failed. Shouldn't happen.
Jmsg(jcr, M_FATAL, 0, _("Encryption padding error\n"));
@@ -1130,8 +1133,8 @@ static int send_data(JobControlRecord* jcr,
// Note, on SSL pre-0.9.7, there is always some output
if (bctx.encrypted_len > 0) {
- sd->message_length = bctx.encrypted_len; /* set encrypted length */
- sd->msg = jcr->impl->crypto.crypto_buf; /* set correct write buffer */
+ sd->message_length = bctx.encrypted_len; /* set encrypted length */
+ sd->msg = jcr->fd_impl->crypto.crypto_buf; /* set correct write buffer */
if (!sd->send()) {
if (!jcr->IsJobCanceled()) {
Jmsg1(jcr, M_FATAL, 0, _("Network send error to SD. ERR=%s\n"),
@@ -1209,7 +1212,7 @@ bool EncodeAndSendAttributes(JobControlRecord* jcr,
jcr->lock();
jcr->JobFiles++; /* increment number of files sent */
ff_pkt->FileIndex = jcr->JobFiles; /* return FileIndex */
- PmStrcpy(jcr->impl->last_fname, ff_pkt->fname);
+ PmStrcpy(jcr->fd_impl->last_fname, ff_pkt->fname);
jcr->unlock();
// Debug code: check if we must hangup
@@ -1445,29 +1448,29 @@ static void CloseVssBackupSession(JobControlRecord* jcr)
* STOP VSS ON WIN32
* Tell vss to close the backup session
*/
- if (jcr->impl->pVSSClient) {
+ if (jcr->fd_impl->pVSSClient) {
/*
* We are about to call the BackupComplete VSS method so let all plugins
* know that by raising the bEventVssBackupComplete event.
*/
GeneratePluginEvent(jcr, bEventVssBackupComplete);
- if (jcr->impl->pVSSClient->CloseBackup()) {
+ if (jcr->fd_impl->pVSSClient->CloseBackup()) {
// Inform user about writer states
- for (size_t i = 0; i < jcr->impl->pVSSClient->GetWriterCount(); i++) {
+ for (size_t i = 0; i < jcr->fd_impl->pVSSClient->GetWriterCount(); i++) {
int msg_type = M_INFO;
- if (jcr->impl->pVSSClient->GetWriterState(i) < 1) {
+ if (jcr->fd_impl->pVSSClient->GetWriterState(i) < 1) {
msg_type = M_WARNING;
jcr->JobErrors++;
}
Jmsg(jcr, msg_type, 0, _("VSS Writer (BackupComplete): %s\n"),
- jcr->impl->pVSSClient->GetWriterInfo(i));
+ jcr->fd_impl->pVSSClient->GetWriterInfo(i));
}
}
// Generate Job global writer metadata
- wchar_t* metadata = jcr->impl->pVSSClient->GetMetadata();
+ wchar_t* metadata = jcr->fd_impl->pVSSClient->GetMetadata();
if (metadata) {
- FindFilesPacket* ff_pkt = jcr->impl->ff;
+ FindFilesPacket* ff_pkt = jcr->fd_impl->ff;
ff_pkt->fname = (char*)"*all*"; /* for all plugins */
ff_pkt->type = FT_RESTORE_FIRST;
ff_pkt->LinkFI = 0;
diff --git a/core/src/filed/compression.cc b/core/src/filed/compression.cc
index 1c62c50d8..cc73d821d 100644
--- a/core/src/filed/compression.cc
+++ b/core/src/filed/compression.cc
@@ -32,7 +32,7 @@
#include "include/bareos.h"
#include "filed/filed.h"
#include "filed/filed_globals.h"
-#include "filed/jcr_private.h"
+#include "filed/filed_jcr_impl.h"
#if defined(HAVE_LIBZ)
# include <zlib.h>
@@ -45,7 +45,7 @@ namespace filedaemon {
// For compression we enable all used compressors in the fileset.
bool AdjustCompressionBuffers(JobControlRecord* jcr)
{
- findFILESET* fileset = jcr->impl->ff->fileset;
+ findFILESET* fileset = jcr->fd_impl->ff->fileset;
uint32_t compress_buf_size = 0;
if (fileset) {
diff --git a/core/src/filed/crypto.cc b/core/src/filed/crypto.cc
index e07f3410f..73fd0beba 100644
--- a/core/src/filed/crypto.cc
+++ b/core/src/filed/crypto.cc
@@ -3,7 +3,7 @@
Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
Copyright (C) 2011-2012 Planets Communications B.V.
- Copyright (C) 2013-2019 Bareos GmbH & Co. KG
+ Copyright (C) 2013-2022 Bareos GmbH & Co. KG
This program is Free Software; you can redistribute it and/or
modify it under the terms of version three of the GNU Affero General Public
@@ -31,7 +31,7 @@
#include "include/bareos.h"
#include "filed/filed.h"
-#include "filed/jcr_private.h"
+#include "filed/filed_jcr_impl.h"
#include "filed/restore.h"
#include "findlib/find_one.h"
#include "lib/bsock.h"
@@ -62,13 +62,13 @@ bool CryptoSessionStart(JobControlRecord* jcr, crypto_cipher_t cipher)
* structure. We use a single session key for each backup, so we'll encode
* the session data only once.
*/
- if (jcr->impl->crypto.pki_encrypt) {
+ if (jcr->fd_impl->crypto.pki_encrypt) {
uint32_t size = 0;
// Create per-job session encryption context
- jcr->impl->crypto.pki_session
- = crypto_session_new(cipher, jcr->impl->crypto.pki_recipients);
- if (!jcr->impl->crypto.pki_session) {
+ jcr->fd_impl->crypto.pki_session
+ = crypto_session_new(cipher, jcr->fd_impl->crypto.pki_recipients);
+ if (!jcr->fd_impl->crypto.pki_session) {
Jmsg(jcr, M_FATAL, 0,
_("Cannot create a new crypto session probably unsupported cipher "
"configured.\n"));
@@ -76,7 +76,7 @@ bool CryptoSessionStart(JobControlRecord* jcr, crypto_cipher_t cipher)
}
// Get the session data size
- if (!CryptoSessionEncode(jcr->impl->crypto.pki_session, (uint8_t*)0,
+ if (!CryptoSessionEncode(jcr->fd_impl->crypto.pki_session, (uint8_t*)0,
&size)) {
Jmsg(jcr, M_FATAL, 0,
_("An error occurred while encrypting the stream.\n"));
@@ -84,11 +84,11 @@ bool CryptoSessionStart(JobControlRecord* jcr, crypto_cipher_t cipher)
}
// Allocate buffer
- jcr->impl->crypto.pki_session_encoded = GetMemory(size);
+ jcr->fd_impl->crypto.pki_session_encoded = GetMemory(size);
// Encode session data
- if (!CryptoSessionEncode(jcr->impl->crypto.pki_session,
- (uint8_t*)jcr->impl->crypto.pki_session_encoded,
+ if (!CryptoSessionEncode(jcr->fd_impl->crypto.pki_session,
+ (uint8_t*)jcr->fd_impl->crypto.pki_session_encoded,
&size)) {
Jmsg(jcr, M_FATAL, 0,
_("An error occurred while encrypting the stream.\n"));
@@ -96,10 +96,10 @@ bool CryptoSessionStart(JobControlRecord* jcr, crypto_cipher_t cipher)
}
// ... and store the encoded size
- jcr->impl->crypto.pki_session_encoded_size = size;
+ jcr->fd_impl->crypto.pki_session_encoded_size = size;
// Allocate the encryption/decryption buffer
- jcr->impl->crypto.crypto_buf = GetMemory(CRYPTO_CIPHER_MAX_BLOCK_SIZE);
+ jcr->fd_impl->crypto.crypto_buf = GetMemory(CRYPTO_CIPHER_MAX_BLOCK_SIZE);
}
return true;
@@ -107,16 +107,16 @@ bool CryptoSessionStart(JobControlRecord* jcr, crypto_cipher_t cipher)
void CryptoSessionEnd(JobControlRecord* jcr)
{
- if (jcr->impl->crypto.crypto_buf) {
- FreePoolMemory(jcr->impl->crypto.crypto_buf);
- jcr->impl->crypto.crypto_buf = NULL;
+ if (jcr->fd_impl->crypto.crypto_buf) {
+ FreePoolMemory(jcr->fd_impl->crypto.crypto_buf);
+ jcr->fd_impl->crypto.crypto_buf = NULL;
}
- if (jcr->impl->crypto.pki_session) {
- CryptoSessionFree(jcr->impl->crypto.pki_session);
+ if (jcr->fd_impl->crypto.pki_session) {
+ CryptoSessionFree(jcr->fd_impl->crypto.pki_session);
}
- if (jcr->impl->crypto.pki_session_encoded) {
- FreePoolMemory(jcr->impl->crypto.pki_session_encoded);
- jcr->impl->crypto.pki_session_encoded = NULL;
+ if (jcr->fd_impl->crypto.pki_session_encoded) {
+ FreePoolMemory(jcr->fd_impl->crypto.pki_session_encoded);
+ jcr->fd_impl->crypto.pki_session_encoded = NULL;
}
}
@@ -130,8 +130,8 @@ bool CryptoSessionSend(JobControlRecord* jcr, BareosSocket* sd)
sd->fsend("%ld %d 0", jcr->JobFiles, STREAM_ENCRYPTED_SESSION_DATA);
msgsave = sd->msg;
- sd->msg = jcr->impl->crypto.pki_session_encoded;
- sd->message_length = jcr->impl->crypto.pki_session_encoded_size;
+ sd->msg = jcr->fd_impl->crypto.pki_session_encoded;
+ sd->message_length = jcr->fd_impl->crypto.pki_session_encoded_size;
jcr->JobBytes += sd->message_length;
Dmsg1(100, "Send data len=%d\n", sd->message_length);
@@ -159,46 +159,47 @@ bool VerifySignature(JobControlRecord* jcr, r_ctx& rctx)
crypto_digest_t algorithm;
SIGNATURE* sig = rctx.sig;
- if (!jcr->impl->crypto.pki_sign) {
+ if (!jcr->fd_impl->crypto.pki_sign) {
// no signature OK
return true;
}
if (!sig) {
if (rctx.type == FT_REGE || rctx.type == FT_REG || rctx.type == FT_RAW) {
Jmsg1(jcr, M_ERROR, 0, _("Missing cryptographic signature for %s\n"),
- jcr->impl->last_fname);
+ jcr->fd_impl->last_fname);
goto bail_out;
}
return true;
}
// Iterate through the trusted signers
- foreach_alist (keypair, jcr->impl->crypto.pki_signers) {
- err = CryptoSignGetDigest(sig, jcr->impl->crypto.pki_keypair, algorithm,
+ foreach_alist (keypair, jcr->fd_impl->crypto.pki_signers) {
+ err = CryptoSignGetDigest(sig, jcr->fd_impl->crypto.pki_keypair, algorithm,
&digest);
switch (err) {
case CRYPTO_ERROR_NONE:
Dmsg0(50, "== Got digest\n");
/*
- * We computed jcr->impl_->crypto.digest using signing_algorithm while
- * writing the file. If it is not the same as the algorithm used for
- * this file, punt by releasing the computed algorithm and
- * computing by re-reading the file.
+ * We computed jcr->fd_impl_->crypto.digest using signing_algorithm
+ * while writing the file. If it is not the same as the algorithm used
+ * for this file, punt by releasing the computed algorithm and computing
+ * by re-reading the file.
*/
if (algorithm != signing_algorithm) {
- if (jcr->impl->crypto.digest) {
- CryptoDigestFree(jcr->impl->crypto.digest);
- jcr->impl->crypto.digest = NULL;
+ if (jcr->fd_impl->crypto.digest) {
+ CryptoDigestFree(jcr->fd_impl->crypto.digest);
+ jcr->fd_impl->crypto.digest = NULL;
}
}
- if (jcr->impl->crypto.digest) {
+ if (jcr->fd_impl->crypto.digest) {
// Use digest computed while writing the file to verify the signature
- if ((err = CryptoSignVerify(sig, keypair, jcr->impl->crypto.digest))
+ if ((err
+ = CryptoSignVerify(sig, keypair, jcr->fd_impl->crypto.digest))
!= CRYPTO_ERROR_NONE) {
- Dmsg1(50, "Bad signature on %s\n", jcr->impl->last_fname);
+ Dmsg1(50, "Bad signature on %s\n", jcr->fd_impl->last_fname);
Jmsg2(jcr, M_ERROR, 0,
_("Signature validation failed for file %s: ERR=%s\n"),
- jcr->impl->last_fname, crypto_strerror(err));
+ jcr->fd_impl->last_fname, crypto_strerror(err));
goto bail_out;
}
} else {
@@ -206,18 +207,18 @@ bool VerifySignature(JobControlRecord* jcr, r_ctx& rctx)
* Signature found, digest allocated. Old method,
* re-read the file and compute the digest
*/
- jcr->impl->crypto.digest = digest;
+ jcr->fd_impl->crypto.digest = digest;
/*
* Checksum the entire file
* Make sure we don't modify JobBytes by saving and restoring it
*/
saved_bytes = jcr->JobBytes;
- if (FindOneFile(jcr, jcr->impl->ff, DoFileDigest,
- jcr->impl->last_fname, (dev_t)-1, 1)
+ if (FindOneFile(jcr, jcr->fd_impl->ff, DoFileDigest,
+ jcr->fd_impl->last_fname, (dev_t)-1, 1)
!= 0) {
Jmsg(jcr, M_ERROR, 0, _("Digest one file failed for file: %s\n"),
- jcr->impl->last_fname);
+ jcr->fd_impl->last_fname);
jcr->JobBytes = saved_bytes;
goto bail_out;
}
@@ -226,17 +227,17 @@ bool VerifySignature(JobControlRecord* jcr, r_ctx& rctx)
// Verify the signature
if ((err = CryptoSignVerify(sig, keypair, digest))
!= CRYPTO_ERROR_NONE) {
- Dmsg1(50, "Bad signature on %s\n", jcr->impl->last_fname);
+ Dmsg1(50, "Bad signature on %s\n", jcr->fd_impl->last_fname);
Jmsg2(jcr, M_ERROR, 0,
_("Signature validation failed for file %s: ERR=%s\n"),
- jcr->impl->last_fname, crypto_strerror(err));
+ jcr->fd_impl->last_fname, crypto_strerror(err));
goto bail_out;
}
- jcr->impl->crypto.digest = NULL;
+ jcr->fd_impl->crypto.digest = NULL;
}
// Valid signature
- Dmsg1(50, "Signature good on %s\n", jcr->impl->last_fname);
+ Dmsg1(50, "Signature good on %s\n", jcr->fd_impl->last_fname);
CryptoDigestFree(digest);
return true;
@@ -250,14 +251,14 @@ bool VerifySignature(JobControlRecord* jcr, r_ctx& rctx)
default:
// Something strange happened (that shouldn't happen!)...
Qmsg2(jcr, M_ERROR, 0, _("Signature validation failed for %s: %s\n"),
- jcr->impl->last_fname, crypto_strerror(err));
+ jcr->fd_impl->last_fname, crypto_strerror(err));
goto bail_out;
}
}
// No signer
Dmsg1(50, "Could not find a valid public key for signature on %s\n",
- jcr->impl->last_fname);
+ jcr->fd_impl->last_fname);
bail_out:
if (digest) { CryptoDigestFree(digest); }
@@ -293,7 +294,7 @@ again:
// Writing out the final, buffered block failed. Shouldn't happen.
Jmsg3(jcr, M_ERROR, 0,
_("Decryption error. buf_len=%d decrypt_len=%d on file %s\n"),
- cipher_ctx->buf_len, decrypted_len, jcr->impl->last_fname);
+ cipher_ctx->buf_len, decrypted_len, jcr->fd_impl->last_fname);
}
Dmsg2(130, "Flush decrypt len=%d buf_len=%d\n", decrypted_len,
@@ -320,7 +321,7 @@ again:
}
if (BitIsSet(FO_COMPRESS, flags)) {
- if (!DecompressData(jcr, jcr->impl->last_fname, stream, &wbuf, &wsize,
+ if (!DecompressData(jcr, jcr->fd_impl->last_fname, stream, &wbuf, &wsize,
false)) {
return false;
}
@@ -395,8 +396,8 @@ bool SetupEncryptionContext(b_ctx& bctx)
goto bail_out;
}
// Allocate the cipher context
- if ((bctx.cipher_ctx = crypto_cipher_new(bctx.jcr->impl->crypto.pki_session,
- true, &cipher_block_size))
+ if ((bctx.cipher_ctx = crypto_cipher_new(
+ bctx.jcr->fd_impl->crypto.pki_session, true, &cipher_block_size))
== NULL) {
// Shouldn't happen!
Jmsg0(bctx.jcr, M_FATAL, 0,
@@ -411,15 +412,15 @@ bool SetupEncryptionContext(b_ctx& bctx)
* could be returned for the given read buffer size.
* (Using the larger of either rsize or max_compress_len)
*/
- bctx.jcr->impl->crypto.crypto_buf
- = CheckPoolMemorySize(bctx.jcr->impl->crypto.crypto_buf,
+ bctx.jcr->fd_impl->crypto.crypto_buf
+ = CheckPoolMemorySize(bctx.jcr->fd_impl->crypto.crypto_buf,
(MAX(bctx.jcr->buf_size + (int)sizeof(uint32_t),
(int32_t)bctx.max_compress_len)
+ cipher_block_size - 1)
/ cipher_block_size * cipher_block_size);
bctx.wbuf
- = bctx.jcr->impl->crypto
+ = bctx.jcr->fd_impl->crypto
.crypto_buf; /* Encrypted, possibly compressed output here. */
}
@@ -435,7 +436,7 @@ bool SetupDecryptionContext(r_ctx& rctx, RestoreCipherContext& rcctx)
if (!rctx.cs) {
Jmsg1(rctx.jcr, M_ERROR, 0,
_("Missing encryption session data stream for %s\n"),
- rctx.jcr->impl->last_fname);
+ rctx.jcr->fd_impl->last_fname);
return false;
}
@@ -443,7 +444,7 @@ bool SetupDecryptionContext(r_ctx& rctx, RestoreCipherContext& rcctx)
== NULL) {
Jmsg1(rctx.jcr, M_ERROR, 0,
_("Failed to initialize decryption context for %s\n"),
- rctx.jcr->impl->last_fname);
+ rctx.jcr->fd_impl->last_fname);
FreeSession(rctx);
return false;
}
@@ -484,7 +485,7 @@ bool EncryptData(b_ctx* bctx, bool* need_more_data)
Dmsg1(20, "Encrypt len=%d\n", bctx->cipher_input_len);
if (!CryptoCipherUpdate(bctx->cipher_ctx, packet_len, sizeof(packet_len),
- (uint8_t*)bctx->jcr->impl->crypto.crypto_buf,
+ (uint8_t*)bctx->jcr->fd_impl->crypto.crypto_buf,
&initial_len)) {
// Encryption failed. Shouldn't happen.
Jmsg(bctx->jcr, M_FATAL, 0, _("Encryption error\n"));
@@ -494,7 +495,7 @@ bool EncryptData(b_ctx* bctx, bool* need_more_data)
// Encrypt the input block
if (CryptoCipherUpdate(
bctx->cipher_ctx, bctx->cipher_input, bctx->cipher_input_len,
- (uint8_t*)&bctx->jcr->impl->crypto.crypto_buf[initial_len],
+ (uint8_t*)&bctx->jcr->fd_impl->crypto.crypto_buf[initial_len],
&bctx->encrypted_len)) {
if ((initial_len + bctx->encrypted_len) == 0) {
// No full block of data available, read more data
@@ -529,7 +530,7 @@ bool DecryptData(JobControlRecord* jcr,
ASSERT(cipher_ctx->cipher);
/*
- * NOTE: We must implement block preserving semantics for the
+ * NOTE: We must fd_implement block preserving semantics for the
* non-streaming compression and sparse code.
*
* Grow the crypto buffer, if necessary.
diff --git a/core/src/filed/dir_cmd.cc b/core/src/filed/dir_cmd.cc
index a47ca928f..5a49052f5 100644
--- a/core/src/filed/dir_cmd.cc
+++ b/core/src/filed/dir_cmd.cc
@@ -36,7 +36,7 @@
#include "filed/evaluate_job_command.h"
#include "filed/heartbeat.h"
#include "filed/fileset.h"
-#include "filed/jcr_private.h"
+#include "filed/filed_jcr_impl.h"
#include "filed/socket_server.h"
#include "filed/restore.h"
#include "filed/verify.h"
@@ -68,7 +68,7 @@ extern bool restore_only_mode;
/**
* As Windows saves ACLs as part of the standard backup stream
- * we just pretend here that is has implicit acl support.
+ * we just pretend here that is has fd_implicit acl support.
*/
#if defined(HAVE_ACL) || defined(HAVE_WIN32)
const bool have_acl = true;
@@ -302,7 +302,7 @@ static inline void CleanupFileset(JobControlRecord* jcr)
findIncludeExcludeItem* incexe;
findFOPTS* fo;
- fileset = jcr->impl->ff->fileset;
+ fileset = jcr->fd_impl->ff->fileset;
if (fileset) {
// Delete FileSet Include lists
for (int i = 0; i < fileset->include_list.size(); i++) {
@@ -363,7 +363,7 @@ static inline void CleanupFileset(JobControlRecord* jcr)
fileset->exclude_list.destroy();
free(fileset);
}
- jcr->impl->ff->fileset = nullptr;
+ jcr->fd_impl->ff->fileset = nullptr;
}
static inline bool AreMaxConcurrentJobsExceeded()
@@ -382,7 +382,7 @@ static inline bool AreMaxConcurrentJobsExceeded()
static JobControlRecord* NewFiledJcr()
{
JobControlRecord* jcr = new_jcr(FiledFreeJcr);
- jcr->impl = new JobControlRecordPrivate;
+ jcr->fd_impl = new FiledJcrImpl;
return jcr;
}
@@ -392,19 +392,19 @@ JobControlRecord* create_new_director_session(BareosSocket* dir)
JobControlRecord* jcr{NewFiledJcr()};
jcr->dir_bsock = dir;
- jcr->impl->ff = init_find_files();
+ jcr->fd_impl->ff = init_find_files();
jcr->start_time = time(nullptr);
- jcr->impl->RunScripts = new alist<RunScript*>(10, not_owned_by_alist);
- jcr->impl->last_fname = GetPoolMemory(PM_FNAME);
- jcr->impl->last_fname[0] = 0;
+ jcr->fd_impl->RunScripts = new alist<RunScript*>(10, not_owned_by_alist);
+ jcr->fd_impl->last_fname = GetPoolMemory(PM_FNAME);
+ jcr->fd_impl->last_fname[0] = 0;
jcr->client_name = GetMemory(strlen(my_name) + 1);
PmStrcpy(jcr->client_name, my_name);
bstrncpy(jcr->Job, jobname, sizeof(jobname)); /* dummy */
- jcr->impl->crypto.pki_sign = me->pki_sign;
- jcr->impl->crypto.pki_encrypt = me->pki_encrypt;
- jcr->impl->crypto.pki_keypair = me->pki_keypair;
- jcr->impl->crypto.pki_signers = me->pki_signers;
- jcr->impl->crypto.pki_recipients = me->pki_recipients;
+ jcr->fd_impl->crypto.pki_sign = me->pki_sign;
+ jcr->fd_impl->crypto.pki_encrypt = me->pki_encrypt;
+ jcr->fd_impl->crypto.pki_keypair = me->pki_keypair;
+ jcr->fd_impl->crypto.pki_signers = me->pki_signers;
+ jcr->fd_impl->crypto.pki_recipients = me->pki_recipients;
if (dir) { dir->SetJcr(jcr); }
SetJcrInThreadSpecificData(jcr);
@@ -436,7 +436,7 @@ void* process_director_commands(JobControlRecord* jcr, BareosSocket* dir)
for (int i = 0; cmds[i].cmd; i++) {
if (bstrncmp(cmds[i].cmd, dir->msg, strlen(cmds[i].cmd))) {
found = true; /* indicate command found */
- if ((!cmds[i].monitoraccess) && (jcr->impl->director->monitor)) {
+ if ((!cmds[i].monitoraccess) && (jcr->fd_impl->director->monitor)) {
Dmsg1(100, "Command \"%s\" is invalid.\n", cmds[i].cmd);
dir->fsend(invalid_cmd);
dir->signal(BNET_EOD);
@@ -461,11 +461,12 @@ void* process_director_commands(JobControlRecord* jcr, BareosSocket* dir)
if (jcr->store_bsock) { jcr->store_bsock->signal(BNET_TERMINATE); }
// Run the after job
- if (jcr->impl->RunScripts) {
- RunScripts(jcr, jcr->impl->RunScripts, "ClientAfterJob",
- (jcr->impl->director && jcr->impl->director->allowed_script_dirs)
- ? jcr->impl->director->allowed_script_dirs
- : me->allowed_script_dirs);
+ if (jcr->fd_impl->RunScripts) {
+ RunScripts(
+ jcr, jcr->fd_impl->RunScripts, "ClientAfterJob",
+ (jcr->fd_impl->director && jcr->fd_impl->director->allowed_script_dirs)
+ ? jcr->fd_impl->director->allowed_script_dirs
+ : me->allowed_script_dirs);
}
if (jcr->JobId) { /* send EndJob if running a job */
@@ -474,7 +475,7 @@ void* process_director_commands(JobControlRecord* jcr, BareosSocket* dir)
dir->fsend(EndJob, jcr->getJobStatus(), jcr->JobFiles,
edit_uint64(jcr->ReadBytes, ed1),
edit_uint64(jcr->JobBytes, ed2), jcr->JobErrors,
- jcr->impl->enable_vss, jcr->impl->crypto.pki_encrypt);
+ jcr->fd_impl->enable_vss, jcr->fd_impl->crypto.pki_encrypt);
Dmsg1(110, "End FD msg: %s\n", dir->msg);
}
@@ -486,7 +487,7 @@ void* process_director_commands(JobControlRecord* jcr, BareosSocket* dir)
dir->signal(BNET_TERMINATE);
FreePlugins(jcr); /* release instantiated plugins */
- FreeAndNullPoolMemory(jcr->impl->job_metadata);
+ FreeAndNullPoolMemory(jcr->fd_impl->job_metadata);
// Clean up fileset
CleanupFileset(jcr);
@@ -878,14 +879,14 @@ static bool EstimateCmd(JobControlRecord* jcr)
// See if we are allowed to run estimate cmds.
if (!ValidateCommand(
jcr, "estimate",
- (jcr->impl->director && jcr->impl->director->allowed_job_cmds)
- ? jcr->impl->director->allowed_job_cmds
+ (jcr->fd_impl->director && jcr->fd_impl->director->allowed_job_cmds)
+ ? jcr->fd_impl->director->allowed_job_cmds
: me->allowed_job_cmds)) {
dir->fsend(_("2992 Bad estimate command.\n"));
return 0;
}
- if (sscanf(dir->msg, Estimatecmd, &jcr->impl->listing) != 1) {
+ if (sscanf(dir->msg, Estimatecmd, &jcr->fd_impl->listing) != 1) {
PmStrcpy(jcr->errmsg, dir->msg);
Jmsg(jcr, M_FATAL, 0, _("Bad estimate command: %s\n"), jcr->errmsg);
dir->fsend(_("2992 Bad estimate command.\n"));
@@ -894,7 +895,8 @@ static bool EstimateCmd(JobControlRecord* jcr)
MakeEstimate(jcr);
- dir->fsend(OKest, edit_uint64_with_commas(jcr->impl->num_files_examined, ed1),
+ dir->fsend(OKest,
+ edit_uint64_with_commas(jcr->fd_impl->num_files_examined, ed1),
edit_uint64_with_commas(jcr->JobBytes, ed2));
dir->signal(BNET_EOD);
@@ -990,10 +992,11 @@ static bool RunbeforenowCmd(JobControlRecord* jcr)
{
BareosSocket* dir = jcr->dir_bsock;
- RunScripts(jcr, jcr->impl->RunScripts, "ClientBeforeJob",
- (jcr->impl->director && jcr->impl->director->allowed_script_dirs)
- ? jcr->impl->director->allowed_script_dirs
- : me->allowed_script_dirs);
+ RunScripts(
+ jcr, jcr->fd_impl->RunScripts, "ClientBeforeJob",
+ (jcr->fd_impl->director && jcr->fd_impl->director->allowed_script_dirs)
+ ? jcr->fd_impl->director->allowed_script_dirs
+ : me->allowed_script_dirs);
if (JobCanceled(jcr)) {
dir->fsend(FailedRunScript);
@@ -1037,7 +1040,7 @@ static bool RunafterCmd(JobControlRecord* jcr)
script->when = SCRIPT_After;
FreeMemory(cmd);
- jcr->impl->RunScripts->append(script);
+ jcr->fd_impl->RunScripts->append(script);
return dir->fsend(OKRunAfter);
}
@@ -1052,8 +1055,8 @@ static bool RunscriptCmd(JobControlRecord* jcr)
// See if we are allowed to run runscript cmds.
if (!ValidateCommand(
jcr, "runscript",
- (jcr->impl->director && jcr->impl->director->allowed_job_cmds)
- ? jcr->impl->director->allowed_job_cmds
+ (jcr->fd_impl->director && jcr->fd_impl->director->allowed_job_cmds)
+ ? jcr->fd_impl->director->allowed_job_cmds
: me->allowed_job_cmds)) {
dir->fsend(FailedRunScript);
return 0;
@@ -1085,7 +1088,7 @@ static bool RunscriptCmd(JobControlRecord* jcr)
cmd->SetCommand(msg);
cmd->Debug();
- jcr->impl->RunScripts->append(cmd);
+ jcr->fd_impl->RunScripts->append(cmd);
FreePoolMemory(msg);
@@ -1218,7 +1221,7 @@ static bool RestoreObjectCmd(JobControlRecord* jcr)
// We still need to do this to detect a vss restore
if (bstrcmp(rop.object_name, "job_metadata.xml")) {
Dmsg0(100, "got job metadata\n");
- jcr->impl->got_metadata = true;
+ jcr->fd_impl->got_metadata = true;
}
GeneratePluginEvent(jcr, bEventRestoreObject, (void*)&rop);
@@ -1244,7 +1247,7 @@ static inline int CountIncludeListFileEntries(JobControlRecord* jcr)
findFILESET* fileset;
findIncludeExcludeItem* incexe;
- fileset = jcr->impl->ff->fileset;
+ fileset = jcr->fd_impl->ff->fileset;
if (fileset) {
for (int i = 0; i < fileset->include_list.size(); i++) {
incexe = (findIncludeExcludeItem*)fileset->include_list.get(i);
@@ -1278,13 +1281,13 @@ static bool FilesetCmd(JobControlRecord* jcr)
if (!TermFileset(jcr)) { return false; }
#if defined(WIN32_VSS)
- jcr->impl->enable_vss
+ jcr->fd_impl->enable_vss
= (vss && (CountIncludeListFileEntries(jcr) > 0)) ? true : false;
#endif
retval = dir->fsend(OKinc);
GeneratePluginEvent(jcr, bEventEndFileSet);
- CheckIncludeListShadowing(jcr, jcr->impl->ff->fileset);
+ CheckIncludeListShadowing(jcr, jcr->fd_impl->ff->fileset);
return retval;
}
@@ -1389,7 +1392,7 @@ static bool LevelCmd(JobControlRecord* jcr)
}
if (sscanf(dir->msg, "level = since_utime %s mtime_only=%d prev_job=%127s",
- buf, &mtime_only, jcr->impl->PrevJob)
+ buf, &mtime_only, jcr->fd_impl->PrevJob)
!= 3) {
if (sscanf(dir->msg, "level = since_utime %s mtime_only=%d", buf,
&mtime_only)
@@ -1399,7 +1402,8 @@ static bool LevelCmd(JobControlRecord* jcr)
}
since_time = str_to_uint64(buf); /* this is the since time */
- Dmsg2(100, "since_time=%lld prev_job=%s\n", since_time, jcr->impl->PrevJob);
+ Dmsg2(100, "since_time=%lld prev_job=%s\n", since_time,
+ jcr->fd_impl->PrevJob);
/*
* Sync clocks by polling him for the time. We take 10 samples of his time
* throwing out the first two.
@@ -1445,9 +1449,11 @@ static bool LevelCmd(JobControlRecord* jcr)
dir->signal(BNET_EOD);
Dmsg2(100, "adj=%lld since_time=%lld\n", adj, since_time);
- jcr->impl->incremental = true; /* set incremental or decremental backup */
- jcr->impl->since_time = since_time; /* set since time */
- GeneratePluginEvent(jcr, bEventSince, (void*)(time_t)jcr->impl->since_time);
+ jcr->fd_impl->incremental
+ = true; /* set incremental or decremental backup */
+ jcr->fd_impl->since_time = since_time; /* set since time */
+ GeneratePluginEvent(jcr, bEventSince,
+ (void*)(time_t)jcr->fd_impl->since_time);
} else {
Jmsg1(jcr, M_FATAL, 0, _("Unknown backup level: %s\n"), level);
FreeMemory(level);
@@ -1479,8 +1485,9 @@ static bool SessionCmd(JobControlRecord* jcr)
Dmsg1(100, "SessionCmd: %s", dir->msg);
if (sscanf(dir->msg, sessioncmd, jcr->VolumeName, &jcr->VolSessionId,
- &jcr->VolSessionTime, &jcr->impl->StartFile, &jcr->impl->EndFile,
- &jcr->impl->StartBlock, &jcr->impl->EndBlock)
+ &jcr->VolSessionTime, &jcr->fd_impl->StartFile,
+ &jcr->fd_impl->EndFile, &jcr->fd_impl->StartBlock,
+ &jcr->fd_impl->EndBlock)
!= 7) {
PmStrcpy(jcr->errmsg, dir->msg);
Jmsg(jcr, M_FATAL, 0, _("Bad session command: %s\n"), jcr->errmsg);
@@ -1516,7 +1523,7 @@ static void SetStorageAuthKeyAndTlsPolicy(JobControlRecord* jcr,
* restore
*/
Dmsg0(5, "set multi_restore=true\n");
- jcr->impl->multi_restore = true;
+ jcr->fd_impl->multi_restore = true;
free(jcr->sd_auth_key);
}
@@ -1559,8 +1566,8 @@ static bool StorageCmd(JobControlRecord* jcr)
// TODO: see if we put limit on restore and backup...
if (!jcr->max_bandwidth) {
- if (jcr->impl->director->max_bandwidth_per_job) {
- jcr->max_bandwidth = jcr->impl->director->max_bandwidth_per_job;
+ if (jcr->fd_impl->director->max_bandwidth_per_job) {
+ jcr->max_bandwidth = jcr->fd_impl->director->max_bandwidth_per_job;
} else if (me->max_bandwidth_per_job) {
jcr->max_bandwidth = me->max_bandwidth_per_job;
}
@@ -1622,7 +1629,7 @@ static void LogFlagStatus(JobControlRecord* jcr,
int flag,
const char* flag_text)
{
- findFILESET* fileset = jcr->impl->ff->fileset;
+ findFILESET* fileset = jcr->fd_impl->ff->fileset;
bool found = false;
if (fileset) {
for (int i = 0; i < fileset->include_list.size() && !found; i++) {
@@ -1656,7 +1663,7 @@ static inline void ClearFlagInFileset(JobControlRecord* jcr,
findFILESET* fileset;
bool cleared_flag = false;
- fileset = jcr->impl->ff->fileset;
+ fileset = jcr->fd_impl->ff->fileset;
if (fileset) {
for (int i = 0; i < fileset->include_list.size(); i++) {
findIncludeExcludeItem* incexe
@@ -1686,7 +1693,7 @@ static inline void ClearCompressionFlagInFileset(JobControlRecord* jcr)
{
findFILESET* fileset;
- fileset = jcr->impl->ff->fileset;
+ fileset = jcr->fd_impl->ff->fileset;
if (fileset) {
for (int i = 0; i < fileset->include_list.size(); i++) {
findIncludeExcludeItem* incexe
@@ -1742,7 +1749,7 @@ static inline bool GetWantedCryptoCipher(JobControlRecord* jcr,
* Walk the fileset and check for the FO_FORCE_ENCRYPT flag and any forced
* crypto cipher.
*/
- fileset = jcr->impl->ff->fileset;
+ fileset = jcr->fd_impl->ff->fileset;
if (fileset) {
for (int i = 0; i < fileset->include_list.size(); i++) {
findIncludeExcludeItem* incexe
@@ -1762,7 +1769,7 @@ static inline bool GetWantedCryptoCipher(JobControlRecord* jcr,
}
// See if pki_encrypt is already set for this Job.
- if (!jcr->impl->crypto.pki_encrypt) {
+ if (!jcr->fd_impl->crypto.pki_encrypt) {
if (!me->pki_keypair_file) {
Jmsg(jcr, M_FATAL, 0,
_("Fileset contains cipher settings but PKI Key Pair is not "
@@ -1771,8 +1778,8 @@ static inline bool GetWantedCryptoCipher(JobControlRecord* jcr,
}
// Enable encryption and signing for this Job.
- jcr->impl->crypto.pki_sign = true;
- jcr->impl->crypto.pki_encrypt = true;
+ jcr->fd_impl->crypto.pki_sign = true;
+ jcr->fd_impl->crypto.pki_encrypt = true;
}
wanted_cipher = (crypto_cipher_t)fo->Encryption_cipher;
@@ -1794,7 +1801,7 @@ static inline bool GetWantedCryptoCipher(JobControlRecord* jcr,
* See if FO_FORCE_ENCRYPT is set and encryption is not configured for the
* filed.
*/
- if (force_encrypt && !jcr->impl->crypto.pki_encrypt) {
+ if (force_encrypt && !jcr->fd_impl->crypto.pki_encrypt) {
Jmsg(jcr, M_FATAL, 0,
_("Fileset forces encryption but encryption is not configured\n"));
return false;
@@ -1829,14 +1836,14 @@ static bool BackupCmd(JobControlRecord* jcr)
// See if we are allowed to run backup cmds.
if (!ValidateCommand(
jcr, "backup",
- (jcr->impl->director && jcr->impl->director->allowed_job_cmds)
- ? jcr->impl->director->allowed_job_cmds
+ (jcr->fd_impl->director && jcr->fd_impl->director->allowed_job_cmds)
+ ? jcr->fd_impl->director->allowed_job_cmds
: me->allowed_job_cmds)) {
goto cleanup;
}
#if defined(WIN32_VSS)
- if (jcr->impl->enable_vss) { VSSInit(jcr); }
+ if (jcr->fd_impl->enable_vss) { VSSInit(jcr); }
#endif
if (sscanf(dir->msg, "backup FileIndex=%ld\n", &FileIndex) == 1) {
@@ -1880,7 +1887,7 @@ static bool BackupCmd(JobControlRecord* jcr)
jcr->setJobStatusWithPriorityCheck(JS_Blocked);
jcr->setJobType(JT_BACKUP);
- Dmsg1(100, "begin backup ff=%p\n", jcr->impl->ff);
+ Dmsg1(100, "begin backup ff=%p\n", jcr->fd_impl->ff);
if (sd == nullptr) {
Jmsg(jcr, M_FATAL, 0, _("Cannot contact Storage daemon\n"));
@@ -1898,18 +1905,18 @@ static bool BackupCmd(JobControlRecord* jcr)
// Expect to receive back the Ticket number
if (BgetMsg(sd) >= 0) {
Dmsg1(110, "<stored: %s", sd->msg);
- if (sscanf(sd->msg, OK_open, &jcr->impl->Ticket) != 1) {
+ if (sscanf(sd->msg, OK_open, &jcr->fd_impl->Ticket) != 1) {
Jmsg(jcr, M_FATAL, 0, _("Bad response to append open: %s\n"), sd->msg);
goto cleanup;
}
- Dmsg1(110, "Got Ticket=%d\n", jcr->impl->Ticket);
+ Dmsg1(110, "Got Ticket=%d\n", jcr->fd_impl->Ticket);
} else {
Jmsg(jcr, M_FATAL, 0, _("Bad response from stored to open command\n"));
goto cleanup;
}
// Send Append data command to Storage daemon
- sd->fsend(append_data, jcr->impl->Ticket);
+ sd->fsend(append_data, jcr->fd_impl->Ticket);
Dmsg1(110, ">stored: %s", sd->msg);
// Expect to get OK data
@@ -1923,8 +1930,8 @@ static bool BackupCmd(JobControlRecord* jcr)
#if defined(WIN32_VSS)
// START VSS ON WIN32
- if (jcr->impl->pVSSClient) {
- if (jcr->impl->pVSSClient->InitializeForBackup(jcr)) {
+ if (jcr->fd_impl->pVSSClient) {
+ if (jcr->fd_impl->pVSSClient->InitializeForBackup(jcr)) {
int drive_count;
char szWinDriveLetters[27];
bool onefs_disabled;
@@ -1937,19 +1944,19 @@ static bool BackupCmd(JobControlRecord* jcr)
// Plugin driver can return drive letters
GeneratePluginEvent(jcr, bEventVssPrepareSnapshot, szWinDriveLetters);
- drive_count
- = get_win32_driveletters(jcr->impl->ff->fileset, szWinDriveLetters);
+ drive_count = get_win32_driveletters(jcr->fd_impl->ff->fileset,
+ szWinDriveLetters);
- onefs_disabled = win32_onefs_is_disabled(jcr->impl->ff->fileset);
+ onefs_disabled = win32_onefs_is_disabled(jcr->fd_impl->ff->fileset);
if (drive_count > 0) {
Jmsg(jcr, M_INFO, 0,
_("Generate VSS snapshots. Driver=\"%s\", Drive(s)=\"%s\"\n"),
- jcr->impl->pVSSClient->GetDriverName(),
+ jcr->fd_impl->pVSSClient->GetDriverName(),
(drive_count) ? szWinDriveLetters : "None");
- if (!jcr->impl->pVSSClient->CreateSnapshots(szWinDriveLetters,
- onefs_disabled)) {
+ if (!jcr->fd_impl->pVSSClient->CreateSnapshots(szWinDriveLetters,
+ onefs_disabled)) {
BErrNo be;
Jmsg(jcr, M_FATAL, 0,
_("CreateSGenerate VSS snapshots failed. ERR=%s\n"),
@@ -1958,7 +1965,7 @@ static bool BackupCmd(JobControlRecord* jcr)
GeneratePluginEvent(jcr, bEventVssCreateSnapshots);
// Inform about VMPs if we have them
- jcr->impl->pVSSClient->ShowVolumeMountPointStats(jcr);
+ jcr->fd_impl->pVSSClient->ShowVolumeMountPointStats(jcr);
// Tell user if snapshot creation of a specific drive failed
for (int i = 0; i < (int)strlen(szWinDriveLetters); i++) {
@@ -1970,10 +1977,11 @@ static bool BackupCmd(JobControlRecord* jcr)
}
// Inform user about writer states
- for (size_t i = 0; i < jcr->impl->pVSSClient->GetWriterCount(); i++) {
- if (jcr->impl->pVSSClient->GetWriterState(i) < 1) {
+ for (size_t i = 0; i < jcr->fd_impl->pVSSClient->GetWriterCount();
+ i++) {
+ if (jcr->fd_impl->pVSSClient->GetWriterState(i) < 1) {
Jmsg(jcr, M_INFO, 0, _("VSS Writer (PrepareForBackup): %s\n"),
- jcr->impl->pVSSClient->GetWriterInfo(i));
+ jcr->fd_impl->pVSSClient->GetWriterInfo(i));
}
}
}
@@ -1989,15 +1997,16 @@ static bool BackupCmd(JobControlRecord* jcr)
be.bstrerror());
}
- RunScripts(jcr, jcr->impl->RunScripts, "ClientAfterVSS",
- (jcr->impl->director && jcr->impl->director->allowed_script_dirs)
- ? jcr->impl->director->allowed_script_dirs
- : me->allowed_script_dirs);
+ RunScripts(
+ jcr, jcr->fd_impl->RunScripts, "ClientAfterVSS",
+ (jcr->fd_impl->director && jcr->fd_impl->director->allowed_script_dirs)
+ ? jcr->fd_impl->director->allowed_script_dirs
+ : me->allowed_script_dirs);
}
#endif
// Send Files to Storage daemon
- Dmsg1(110, "begin blast ff=%p\n", (FindFilesPacket*)jcr->impl->ff);
+ Dmsg1(110, "begin blast ff=%p\n", (FindFilesPacket*)jcr->fd_impl->ff);
if (!BlastDataToStorageDaemon(jcr, nullptr, cipher)) {
jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
BnetSuppressErrorMessages(sd, 1);
@@ -2016,7 +2025,7 @@ static bool BackupCmd(JobControlRecord* jcr)
}
// Send Append End Data to Storage daemon
- sd->fsend(append_end, jcr->impl->Ticket);
+ sd->fsend(append_end, jcr->fd_impl->Ticket);
/* Get end OK */
if (!response(jcr, sd, OK_end, "Append End")) {
jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
@@ -2024,7 +2033,7 @@ static bool BackupCmd(JobControlRecord* jcr)
}
// Send Append Close to Storage daemon
- sd->fsend(append_close, jcr->impl->Ticket);
+ sd->fsend(append_close, jcr->fd_impl->Ticket);
while (BgetMsg(sd) >= 0) { /* stop on signal or error */
if (sscanf(sd->msg, OK_close, &SDJobStatus) == 1) {
ok = 1;
@@ -2043,7 +2052,9 @@ static bool BackupCmd(JobControlRecord* jcr)
cleanup:
#if defined(WIN32_VSS)
- if (jcr->impl->pVSSClient) { jcr->impl->pVSSClient->DestroyWriterInfo(); }
+ if (jcr->fd_impl->pVSSClient) {
+ jcr->fd_impl->pVSSClient->DestroyWriterInfo();
+ }
#endif
GeneratePluginEvent(jcr, bEventEndBackupJob);
@@ -2063,8 +2074,8 @@ static bool VerifyCmd(JobControlRecord* jcr)
// See if we are allowed to run verify cmds.
if (!ValidateCommand(
jcr, "verify",
- (jcr->impl->director && jcr->impl->director->allowed_job_cmds)
- ? jcr->impl->director->allowed_job_cmds
+ (jcr->fd_impl->director && jcr->fd_impl->director->allowed_job_cmds)
+ ? jcr->fd_impl->director->allowed_job_cmds
: me->allowed_job_cmds)) {
dir->fsend(_("2994 Bad verify command: %s\n"), dir->msg);
return 0;
@@ -2109,7 +2120,7 @@ static bool VerifyCmd(JobControlRecord* jcr)
DoVerifyVolume(jcr);
StopDirHeartbeat(jcr);
// Send Close session command to Storage daemon
- sd->fsend(read_close, jcr->impl->Ticket);
+ sd->fsend(read_close, jcr->fd_impl->Ticket);
Dmsg1(130, "filed>stored: %s", sd->msg);
/* ****FIXME**** check response */
@@ -2185,7 +2196,7 @@ static BareosSocket* connect_to_director(JobControlRecord* jcr,
director_socket->recv();
ParseOkVersion(director_socket->msg);
- jcr->impl->director = dir_res;
+ jcr->fd_impl->director = dir_res;
return director_socket.release();
}
@@ -2215,8 +2226,8 @@ static bool RestoreCmd(JobControlRecord* jcr)
// See if we are allowed to run restore cmds.
if (!ValidateCommand(
jcr, "restore",
- (jcr->impl->director && jcr->impl->director->allowed_job_cmds)
- ? jcr->impl->director->allowed_job_cmds
+ (jcr->fd_impl->director && jcr->fd_impl->director->allowed_job_cmds)
+ ? jcr->fd_impl->director->allowed_job_cmds
: me->allowed_job_cmds)) {
return 0;
}
@@ -2245,9 +2256,9 @@ static bool RestoreCmd(JobControlRecord* jcr)
#if defined(WIN32_VSS)
// No need to enable VSS for restore if we do not have plugin data to restore
- jcr->impl->enable_vss = jcr->impl->got_metadata;
+ jcr->fd_impl->enable_vss = jcr->fd_impl->got_metadata;
- if (jcr->impl->enable_vss) { VSSInit(jcr); }
+ if (jcr->fd_impl->enable_vss) { VSSInit(jcr); }
#endif
// Turn / into nothing
@@ -2271,7 +2282,7 @@ static bool RestoreCmd(JobControlRecord* jcr)
}
FreePoolMemory(args);
- jcr->impl->replace = replace;
+ jcr->fd_impl->replace = replace;
jcr->prefix_links = prefix_links;
dir->fsend(OKrestore);
@@ -2292,8 +2303,8 @@ static bool RestoreCmd(JobControlRecord* jcr)
#if defined(WIN32_VSS)
// START VSS ON WIN32
- if (jcr->impl->pVSSClient) {
- if (!jcr->impl->pVSSClient->InitializeForRestore(jcr)) {
+ if (jcr->fd_impl->pVSSClient) {
+ if (!jcr->fd_impl->pVSSClient->InitializeForRestore(jcr)) {
BErrNo be;
Jmsg(jcr, M_WARNING, 0,
_("VSS was not initialized properly. VSS support is disabled. "
@@ -2303,10 +2314,11 @@ static bool RestoreCmd(JobControlRecord* jcr)
GeneratePluginEvent(jcr, bEventVssRestoreLoadComponentMetadata);
- RunScripts(jcr, jcr->impl->RunScripts, "ClientAfterVSS",
- (jcr->impl->director && jcr->impl->director->allowed_script_dirs)
- ? jcr->impl->director->allowed_script_dirs
- : me->allowed_script_dirs);
+ RunScripts(
+ jcr, jcr->fd_impl->RunScripts, "ClientAfterVSS",
+ (jcr->fd_impl->director && jcr->fd_impl->director->allowed_script_dirs)
+ ? jcr->fd_impl->director->allowed_script_dirs
+ : me->allowed_script_dirs);
}
#endif
@@ -2320,7 +2332,7 @@ static bool RestoreCmd(JobControlRecord* jcr)
}
// Send Close session command to Storage daemon
- sd->fsend(read_close, jcr->impl->Ticket);
+ sd->fsend(read_close, jcr->fd_impl->Ticket);
Dmsg1(100, "filed>stored: %s", sd->msg);
BgetMsg(sd); /* get OK */
@@ -2333,24 +2345,24 @@ static bool RestoreCmd(JobControlRecord* jcr)
* STOP VSS ON WIN32
* Tell vss to close the restore session
*/
- if (jcr->impl->pVSSClient) {
+ if (jcr->fd_impl->pVSSClient) {
Dmsg0(100, "About to call CloseRestore\n");
GeneratePluginEvent(jcr, bEventVssCloseRestore);
Dmsg0(100, "Really about to call CloseRestore\n");
- if (jcr->impl->pVSSClient->CloseRestore()) {
+ if (jcr->fd_impl->pVSSClient->CloseRestore()) {
Dmsg0(100, "CloseRestore success\n");
// Inform user about writer states
- for (size_t i = 0; i < jcr->impl->pVSSClient->GetWriterCount(); i++) {
+ for (size_t i = 0; i < jcr->fd_impl->pVSSClient->GetWriterCount(); i++) {
int msg_type = M_INFO;
- if (jcr->impl->pVSSClient->GetWriterState(i) < 1) {
+ if (jcr->fd_impl->pVSSClient->GetWriterState(i) < 1) {
msg_type = M_WARNING;
jcr->JobErrors++;
}
Jmsg(jcr, msg_type, 0, _("VSS Writer (RestoreComplete): %s\n"),
- jcr->impl->pVSSClient->GetWriterInfo(i));
+ jcr->fd_impl->pVSSClient->GetWriterInfo(i));
}
} else {
Dmsg1(100, "CloseRestore fail - %08x\n", errno);
@@ -2367,7 +2379,7 @@ bail_out:
Dmsg0(100, "Done in job.c\n");
- if (jcr->impl->multi_restore) {
+ if (jcr->fd_impl->multi_restore) {
Dmsg0(100, OKstoreend);
dir->fsend(OKstoreend);
retval = true; /* we continue the loop, waiting for next part */
@@ -2400,29 +2412,29 @@ static bool OpenSdReadSession(JobControlRecord* jcr)
return false;
}
Dmsg4(120, "VolSessId=%ld VolsessT=%ld SF=%ld EF=%ld\n", jcr->VolSessionId,
- jcr->VolSessionTime, jcr->impl->StartFile, jcr->impl->EndFile);
+ jcr->VolSessionTime, jcr->fd_impl->StartFile, jcr->fd_impl->EndFile);
Dmsg2(120, "JobId=%d vol=%s\n", jcr->JobId, "DummyVolume");
// Open Read Session with Storage daemon
sd->fsend(read_open, "DummyVolume", jcr->VolSessionId, jcr->VolSessionTime,
- jcr->impl->StartFile, jcr->impl->EndFile, jcr->impl->StartBlock,
- jcr->impl->EndBlock);
+ jcr->fd_impl->StartFile, jcr->fd_impl->EndFile,
+ jcr->fd_impl->StartBlock, jcr->fd_impl->EndBlock);
Dmsg1(110, ">stored: %s", sd->msg);
// Get ticket number
if (BgetMsg(sd) >= 0) {
Dmsg1(110, "filed<stored: %s", sd->msg);
- if (sscanf(sd->msg, OK_open, &jcr->impl->Ticket) != 1) {
+ if (sscanf(sd->msg, OK_open, &jcr->fd_impl->Ticket) != 1) {
Jmsg(jcr, M_FATAL, 0, _("Bad response to SD read open: %s\n"), sd->msg);
return false;
}
- Dmsg1(110, "filed: got Ticket=%d\n", jcr->impl->Ticket);
+ Dmsg1(110, "filed: got Ticket=%d\n", jcr->fd_impl->Ticket);
} else {
Jmsg(jcr, M_FATAL, 0, _("Bad response from stored to read open command\n"));
return false;
}
// Start read of data with Storage daemon
- sd->fsend(read_data, jcr->impl->Ticket);
+ sd->fsend(read_data, jcr->fd_impl->Ticket);
Dmsg1(110, ">stored: %s", sd->msg);
// Get OK data
@@ -2435,9 +2447,9 @@ static bool OpenSdReadSession(JobControlRecord* jcr)
static void FiledFreeJcr(JobControlRecord* jcr)
{
#if defined(WIN32_VSS)
- if (jcr->impl->pVSSClient) {
- delete jcr->impl->pVSSClient;
- jcr->impl->pVSSClient = nullptr;
+ if (jcr->fd_impl->pVSSClient) {
+ delete jcr->fd_impl->pVSSClient;
+ jcr->fd_impl->pVSSClient = nullptr;
}
#endif
@@ -2453,29 +2465,29 @@ static void FiledFreeJcr(JobControlRecord* jcr)
jcr->dir_bsock = nullptr;
}
- if (jcr->impl->last_fname) { FreePoolMemory(jcr->impl->last_fname); }
+ if (jcr->fd_impl->last_fname) { FreePoolMemory(jcr->fd_impl->last_fname); }
FreeBootstrap(jcr);
- FreeRunscripts(jcr->impl->RunScripts);
- delete jcr->impl->RunScripts;
- jcr->impl->RunScripts = nullptr;
+ FreeRunscripts(jcr->fd_impl->RunScripts);
+ delete jcr->fd_impl->RunScripts;
+ jcr->fd_impl->RunScripts = nullptr;
if (jcr->path_list) {
FreePathList(jcr->path_list);
jcr->path_list = nullptr;
}
- TermFindFiles(jcr->impl->ff);
- jcr->impl->ff = nullptr;
+ TermFindFiles(jcr->fd_impl->ff);
+ jcr->fd_impl->ff = nullptr;
if (jcr->JobId != 0) {
WriteStateFile(me->working_directory, "bareos-fd",
GetFirstPortHostOrder(me->FDaddrs));
}
- if (jcr->impl) {
- delete jcr->impl;
- jcr->impl = nullptr;
+ if (jcr->fd_impl) {
+ delete jcr->fd_impl;
+ jcr->fd_impl = nullptr;
}
return;
diff --git a/core/src/filed/estimate.cc b/core/src/filed/estimate.cc
index 167107ea3..7f7b5b20b 100644
--- a/core/src/filed/estimate.cc
+++ b/core/src/filed/estimate.cc
@@ -28,7 +28,7 @@
#include "include/bareos.h"
#include "filed/filed.h"
-#include "filed/jcr_private.h"
+#include "filed/filed_jcr_impl.h"
#include "filed/accurate.h"
namespace filedaemon {
@@ -42,14 +42,15 @@ int MakeEstimate(JobControlRecord* jcr)
jcr->setJobStatusWithPriorityCheck(JS_Running);
- SetFindOptions((FindFilesPacket*)jcr->impl->ff, jcr->impl->incremental,
- jcr->impl->since_time);
+ SetFindOptions((FindFilesPacket*)jcr->fd_impl->ff, jcr->fd_impl->incremental,
+ jcr->fd_impl->since_time);
/* in accurate mode, we overwrite the find_one check function */
if (jcr->accurate) {
- SetFindChangedFunction((FindFilesPacket*)jcr->impl->ff, AccurateCheckFile);
+ SetFindChangedFunction((FindFilesPacket*)jcr->fd_impl->ff,
+ AccurateCheckFile);
}
- status = FindFiles(jcr, (FindFilesPacket*)jcr->impl->ff, TallyFile,
+ status = FindFiles(jcr, (FindFilesPacket*)jcr->fd_impl->ff, TallyFile,
PluginEstimate);
AccurateFree(jcr);
return status;
@@ -103,9 +104,9 @@ static int TallyFile(JobControlRecord* jcr, FindFilesPacket* ff_pkt, bool)
}
#endif
}
- jcr->impl->num_files_examined++;
+ jcr->fd_impl->num_files_examined++;
jcr->JobFiles++; /* increment number of files seen */
- if (jcr->impl->listing) {
+ if (jcr->fd_impl->listing) {
memcpy(&attr.statp, &ff_pkt->statp, sizeof(struct stat));
attr.type = ff_pkt->type;
attr.ofname = (POOLMEM*)ff_pkt->fname;
diff --git a/core/src/filed/evaluate_job_command.cc b/core/src/filed/evaluate_job_command.cc
index 81c99707d..f3b70c7c8 100644
--- a/core/src/filed/evaluate_job_command.cc
+++ b/core/src/filed/evaluate_job_command.cc
@@ -1,7 +1,7 @@
/**
BAREOSĀ® - Backup Archiving REcovery Open Sourced
- Copyright (C) 2019-2019 Bareos GmbH & Co. KG
+ Copyright (C) 2019-2022 Bareos GmbH & Co. KG
This program is Free Software; you can redistribute it and/or
modify it under the terms of version three of the GNU Affero General Public
@@ -33,10 +33,10 @@ JobCommand::JobCommand(const char* msg) : job_{0}, sd_auth_key_{0}
{
ProtocolVersion protocol = ProtocolVersion::kVersionUndefinded;
- std::vector<ProtocolVersion> implemented_protocols{
+ std::vector<ProtocolVersion> fd_implemented_protocols{
ProtocolVersion::kVersionFrom_18_2, ProtocolVersion::KVersionBefore_18_2};
- for (auto protocol_try : implemented_protocols) {
+ for (auto protocol_try : fd_implemented_protocols) {
switch (protocol_try) {
case ProtocolVersion::kVersionFrom_18_2:
if (sscanf(msg, jobcmdssl_.c_str(), &job_id_, job_, &vol_session_id_,
diff --git a/core/src/filed/fd_plugins.cc b/core/src/filed/fd_plugins.cc
index b992e1af2..3ca73d3bc 100644
--- a/core/src/filed/fd_plugins.cc
+++ b/core/src/filed/fd_plugins.cc
@@ -32,7 +32,7 @@
#include "filed/heartbeat.h"
#include "filed/fileset.h"
#include "filed/heartbeat.h"
-#include "filed/jcr_private.h"
+#include "filed/filed_jcr_impl.h"
#include "findlib/attribs.h"
#include "findlib/find.h"
#include "findlib/find_one.h"
@@ -740,8 +740,8 @@ int PluginSave(JobControlRecord* jcr, FindFilesPacket* ff_pkt, bool)
goto bail_out;
}
- jcr->impl->plugin_sp = &sp;
- ff_pkt = jcr->impl->ff;
+ jcr->fd_impl->plugin_sp = &sp;
+ ff_pkt = jcr->fd_impl->ff;
// Save original flags.
CopyBits(FO_MAX, ff_pkt->flags, flags);
@@ -987,13 +987,13 @@ int PluginEstimate(JobControlRecord* jcr, FindFilesPacket* ff_pkt, bool)
default:
break;
}
- jcr->impl->num_files_examined++;
+ jcr->fd_impl->num_files_examined++;
if (sp.type != FT_LNKSAVED && S_ISREG(sp.statp.st_mode)) {
if (sp.statp.st_size > 0) { jcr->JobBytes += sp.statp.st_size; }
}
- if (jcr->impl->listing) {
+ if (jcr->fd_impl->listing) {
memcpy(&attr.statp, &sp.statp, sizeof(struct stat));
attr.type = sp.type;
attr.ofname = (POOLMEM*)sp.fname;
@@ -1033,7 +1033,7 @@ bool SendPluginName(JobControlRecord* jcr, BareosSocket* sd, bool start)
{
int status;
int index = jcr->JobFiles;
- struct save_pkt* sp = (struct save_pkt*)jcr->impl->plugin_sp;
+ struct save_pkt* sp = (struct save_pkt*)jcr->fd_impl->plugin_sp;
if (!sp) {
Jmsg0(jcr, M_FATAL, 0, _("Plugin save packet not found.\n"));
@@ -1229,7 +1229,7 @@ int PluginCreateFile(JobControlRecord* jcr,
rp.olname = attr->olname;
rp.where = jcr->where;
rp.RegexWhere = jcr->RegexWhere;
- rp.replace = jcr->impl->replace;
+ rp.replace = jcr->fd_impl->replace;
rp.create_status = CF_ERROR;
Dmsg4(debuglevel,
@@ -1321,7 +1321,7 @@ bool PluginSetAttributes(JobControlRecord* jcr,
rp.olname = attr->olname;
rp.where = jcr->where;
rp.RegexWhere = jcr->RegexWhere;
- rp.replace = jcr->impl->replace;
+ rp.replace = jcr->fd_impl->replace;
rp.create_status = CF_ERROR;
PlugFunc(plugin)->setFileAttributes(jcr->plugin_ctx, &rp);
@@ -2049,7 +2049,7 @@ static bRC bareosGetValue(PluginContext* ctx, bVariable var, void* value)
NPRT(*((char**)value)));
break;
case bVarPrevJobName:
- *((char**)value) = jcr->impl->PrevJob;
+ *((char**)value) = jcr->fd_impl->PrevJob;
Dmsg1(debuglevel, "fd-plugin: return bVarPrevJobName=%s\n",
NPRT(*((char**)value)));
break;
@@ -2059,9 +2059,9 @@ static bRC bareosGetValue(PluginContext* ctx, bVariable var, void* value)
jcr->getJobStatus());
break;
case bVarSinceTime:
- *((int*)value) = (int)jcr->impl->since_time;
+ *((int*)value) = (int)jcr->fd_impl->since_time;
Dmsg1(debuglevel, "fd-plugin: return bVarSinceTime=%d\n",
- (int)jcr->impl->since_time);
+ (int)jcr->fd_impl->since_time);
break;
case bVarAccurate:
*((int*)value) = (int)jcr->accurate;
@@ -2072,8 +2072,8 @@ static bRC bareosGetValue(PluginContext* ctx, bVariable var, void* value)
break; /* a write only variable, ignore read request */
case bVarVssClient:
#ifdef HAVE_WIN32
- if (jcr->impl->pVSSClient) {
- *(void**)value = jcr->impl->pVSSClient;
+ if (jcr->fd_impl->pVSSClient) {
+ *(void**)value = jcr->fd_impl->pVSSClient;
Dmsg1(debuglevel, "fd-plugin: return bVarVssClient=%p\n",
*(void**)value);
break;
@@ -2114,7 +2114,7 @@ static bRC bareosSetValue(PluginContext* ctx, bVariable var, void* value)
switch (var) {
case bVarSinceTime:
- jcr->impl->since_time = (*(int*)value);
+ jcr->fd_impl->since_time = (*(int*)value);
break;
case bVarLevel:
jcr->setJobLevel(*(int*)value);
@@ -2124,7 +2124,7 @@ static bRC bareosSetValue(PluginContext* ctx, bVariable var, void* value)
break;
default:
Jmsg1(jcr, M_ERROR, 0,
- "Warning: bareosSetValue not implemented for var %d.\n", var);
+ "Warning: bareosSetValue not fd_implemented for var %d.\n", var);
break;
}
@@ -2278,12 +2278,14 @@ static bRC bareosAddExclude(PluginContext* ctx, const char* fname)
// Not right time to add exlude
if (!old) { return bRC_Error; }
- if (!bctx->exclude) { bctx->exclude = new_exclude(jcr->impl->ff->fileset); }
+ if (!bctx->exclude) {
+ bctx->exclude = new_exclude(jcr->fd_impl->ff->fileset);
+ }
// Set the Exclude context
SetIncexe(jcr, bctx->exclude);
- AddFileToFileset(jcr, fname, true, jcr->impl->ff->fileset);
+ AddFileToFileset(jcr, fname, true, jcr->fd_impl->ff->fileset);
// Restore the current context
SetIncexe(jcr, old);
@@ -2316,7 +2318,7 @@ static bRC bareosAddInclude(PluginContext* ctx, const char* fname)
if (!bctx->include) { bctx->include = old; }
SetIncexe(jcr, bctx->include);
- AddFileToFileset(jcr, fname, true, jcr->impl->ff->fileset);
+ AddFileToFileset(jcr, fname, true, jcr->fd_impl->ff->fileset);
// Restore the current context
SetIncexe(jcr, old);
@@ -2374,7 +2376,7 @@ static bRC bareosNewOptions(PluginContext* ctx)
b_plugin_ctx* bctx;
if (!IsCtxGood(ctx, jcr, bctx)) { return bRC_Error; }
- (void)NewOptions(jcr->impl->ff, jcr->impl->ff->fileset->incexe);
+ (void)NewOptions(jcr->fd_impl->ff, jcr->fd_impl->ff->fileset->incexe);
return bRC_OK;
}
@@ -2385,7 +2387,7 @@ static bRC bareosNewInclude(PluginContext* ctx)
b_plugin_ctx* bctx;
if (!IsCtxGood(ctx, jcr, bctx)) { return bRC_Error; }
- (void)new_include(jcr->impl->ff->fileset);
+ (void)new_include(jcr->fd_impl->ff->fileset);
return bRC_OK;
}
@@ -2397,8 +2399,8 @@ static bRC bareosNewPreInclude(PluginContext* ctx)
if (!IsCtxGood(ctx, jcr, bctx)) { return bRC_Error; }
- bctx->include = new_preinclude(jcr->impl->ff->fileset);
- NewOptions(jcr->impl->ff, bctx->include);
+ bctx->include = new_preinclude(jcr->fd_impl->ff->fileset);
+ NewOptions(jcr->fd_impl->ff, bctx->include);
SetIncexe(jcr, bctx->include);
return bRC_OK;
@@ -2416,7 +2418,7 @@ static bRC bareosCheckChanges(PluginContext* ctx, struct save_pkt* sp)
if (!sp) { goto bail_out; }
- ff_pkt = jcr->impl->ff;
+ ff_pkt = jcr->fd_impl->ff;
/*
* Copy fname and link because SaveFile() zaps them.
* This avoids zapping the plugin's strings.
@@ -2462,7 +2464,7 @@ static bRC bareosAcceptFile(PluginContext* ctx, struct save_pkt* sp)
if (!IsCtxGood(ctx, jcr, bctx)) { goto bail_out; }
if (!sp) { goto bail_out; }
- ff_pkt = jcr->impl->ff;
+ ff_pkt = jcr->fd_impl->ff;
ff_pkt->fname = sp->fname;
memcpy(&ff_pkt->statp, &sp->statp, sizeof(ff_pkt->statp));
diff --git a/core/src/filed/filed.cc b/core/src/filed/filed.cc
index fbdaf981a..a67bcefad 100644
--- a/core/src/filed/filed.cc
+++ b/core/src/filed/filed.cc
@@ -340,7 +340,7 @@ static bool CheckResources()
#endif
}
- /* pki_encrypt implies pki_sign */
+ /* pki_encrypt fd_implies pki_sign */
if (me->pki_encrypt) { me->pki_sign = true; }
if ((me->pki_encrypt || me->pki_sign) && !me->pki_keypair_file) {
diff --git a/core/src/filed/jcr_private.h b/core/src/filed/filed_jcr_impl.h
index 920b48cfd..df7aa6be0 100644
--- a/core/src/filed/jcr_private.h
+++ b/core/src/filed/filed_jcr_impl.h
@@ -3,7 +3,7 @@
Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
Copyright (C) 2011-2012 Planets Communications B.V.
- Copyright (C) 2013-2021 Bareos GmbH & Co. KG
+ Copyright (C) 2013-2022 Bareos GmbH & Co. KG
This program is Free Software; you can redistribute it and/or
modify it under the terms of version three of the GNU Affero General Public
@@ -21,8 +21,8 @@
02110-1301, USA.
*/
-#ifndef BAREOS_FILED_JCR_PRIVATE_H_
-#define BAREOS_FILED_JCR_PRIVATE_H_
+#ifndef BAREOS_FILED_FILED_JCR_IMPL_H_
+#define BAREOS_FILED_FILED_JCR_IMPL_H_
#include "include/bareos.h"
@@ -49,7 +49,7 @@ struct CryptoContext {
int32_t pki_session_encoded_size{}; /**< Size of DER-encoded pki_session */
};
-struct JobControlRecordPrivate {
+struct FiledJcrImpl {
uint32_t num_files_examined{}; /**< Files examined this job */
POOLMEM* last_fname{}; /**< Last file saved/verified */
POOLMEM* job_metadata{}; /**< VSS job metadata */
@@ -89,4 +89,4 @@ struct JobControlRecordPrivate {
};
/* clang-format on */
-#endif // BAREOS_FILED_JCR_PRIVATE_H_
+#endif // BAREOS_FILED_FILED_JCR_IMPL_H_
diff --git a/core/src/filed/fileset.cc b/core/src/filed/fileset.cc
index eff30211b..99582a500 100644
--- a/core/src/filed/fileset.cc
+++ b/core/src/filed/fileset.cc
@@ -32,7 +32,7 @@
#include "include/bareos.h"
#include "filed/filed.h"
#include "filed/filed_globals.h"
-#include "filed/jcr_private.h"
+#include "filed/filed_jcr_impl.h"
#include "findlib/match.h"
#include "lib/berrno.h"
#include "lib/edit.h"
@@ -62,10 +62,12 @@ extern "C" char* job_code_callback_filed(JobControlRecord* jcr,
switch (param[0]) {
case 'D':
- if (jcr->impl->director) { return jcr->impl->director->resource_name_; }
+ if (jcr->fd_impl->director) {
+ return jcr->fd_impl->director->resource_name_;
+ }
break;
case 'm':
- return edit_uint64(jcr->impl->since_time, str);
+ return edit_uint64(jcr->fd_impl->since_time, str);
}
return NULL;
@@ -76,8 +78,8 @@ bool InitFileset(JobControlRecord* jcr)
FindFilesPacket* ff;
findFILESET* fileset;
- if (!jcr->impl->ff) { return false; }
- ff = jcr->impl->ff;
+ if (!jcr->fd_impl->ff) { return false; }
+ ff = jcr->fd_impl->ff;
if (ff->fileset) { return false; }
fileset = (findFILESET*)malloc(sizeof(findFILESET));
*fileset = findFILESET{};
@@ -174,8 +176,8 @@ void AddFileToFileset(JobControlRecord* jcr,
findIncludeExcludeItem* get_incexe(JobControlRecord* jcr)
{
- if (jcr->impl->ff && jcr->impl->ff->fileset) {
- return jcr->impl->ff->fileset->incexe;
+ if (jcr->fd_impl->ff && jcr->fd_impl->ff->fileset) {
+ return jcr->fd_impl->ff->fileset->incexe;
}
return NULL;
@@ -183,14 +185,14 @@ findIncludeExcludeItem* get_incexe(JobControlRecord* jcr)
void SetIncexe(JobControlRecord* jcr, findIncludeExcludeItem* incexe)
{
- findFILESET* fileset = jcr->impl->ff->fileset;
+ findFILESET* fileset = jcr->fd_impl->ff->fileset;
fileset->incexe = incexe;
}
// Add a regex to the current fileset
int AddRegexToFileset(JobControlRecord* jcr, const char* item, int type)
{
- findFOPTS* current_opts = start_options(jcr->impl->ff);
+ findFOPTS* current_opts = start_options(jcr->fd_impl->ff);
regex_t* preg;
int rc;
char prbuf[500];
@@ -224,7 +226,7 @@ int AddRegexToFileset(JobControlRecord* jcr, const char* item, int type)
// Add a wild card to the current fileset
int AddWildToFileset(JobControlRecord* jcr, const char* item, int type)
{
- findFOPTS* current_opts = start_options(jcr->impl->ff);
+ findFOPTS* current_opts = start_options(jcr->fd_impl->ff);
if (type == ' ') {
current_opts->wild.append(strdup(item));
@@ -244,7 +246,7 @@ int AddWildToFileset(JobControlRecord* jcr, const char* item, int type)
// Add options to the current fileset
int AddOptionsToFileset(JobControlRecord* jcr, const char* item)
{
- findFOPTS* current_opts = start_options(jcr->impl->ff);
+ findFOPTS* current_opts = start_options(jcr->fd_impl->ff);
SetOptions(current_opts, item);
@@ -253,7 +255,7 @@ int AddOptionsToFileset(JobControlRecord* jcr, const char* item)
void AddFileset(JobControlRecord* jcr, const char* item)
{
- FindFilesPacket* ff = jcr->impl->ff;
+ FindFilesPacket* ff = jcr->fd_impl->ff;
findFILESET* fileset = ff->fileset;
int code, subcode;
int state = fileset->state;
@@ -290,21 +292,21 @@ void AddFileset(JobControlRecord* jcr, const char* item)
}
switch (code) {
case 'I':
- (void)new_include(jcr->impl->ff->fileset);
+ (void)new_include(jcr->fd_impl->ff->fileset);
break;
case 'E':
- (void)new_exclude(jcr->impl->ff->fileset);
+ (void)new_exclude(jcr->fd_impl->ff->fileset);
break;
case 'N': /* Null */
state = state_none;
break;
case 'F': /* File */
state = state_include;
- AddFileToFileset(jcr, item, true, jcr->impl->ff->fileset);
+ AddFileToFileset(jcr, item, true, jcr->fd_impl->ff->fileset);
break;
case 'P': /* Plugin */
state = state_include;
- AddFileToFileset(jcr, item, false, jcr->impl->ff->fileset);
+ AddFileToFileset(jcr, item, false, jcr->fd_impl->ff->fileset);
break;
case 'R': /* Regex */
state = AddRegexToFileset(jcr, item, subcode);
@@ -360,16 +362,16 @@ bool TermFileset(JobControlRecord* jcr)
{
findFILESET* fileset;
- fileset = jcr->impl->ff->fileset;
+ fileset = jcr->fd_impl->ff->fileset;
#ifdef HAVE_WIN32
/*
* Expand the fileset to include all drive letters when the fileset includes a
* File = / entry.
*/
- if (!expand_win32_fileset(jcr->impl->ff->fileset)) { return false; }
+ if (!expand_win32_fileset(jcr->fd_impl->ff->fileset)) { return false; }
// Exclude entries in NotToBackup registry key
- if (!exclude_win32_not_to_backup_registry_entries(jcr, jcr->impl->ff)) {
+ if (!exclude_win32_not_to_backup_registry_entries(jcr, jcr->fd_impl->ff)) {
return false;
}
#endif
@@ -388,7 +390,7 @@ bool TermFileset(JobControlRecord* jcr)
}
}
- return jcr->impl->ff->fileset->state != state_error;
+ return jcr->fd_impl->ff->fileset->state != state_error;
}
/**
diff --git a/core/src/filed/heartbeat.cc b/core/src/filed/heartbeat.cc
index 9f5440562..64a091f48 100644
--- a/core/src/filed/heartbeat.cc
+++ b/core/src/filed/heartbeat.cc
@@ -3,7 +3,7 @@
Copyright (C) 2003-2012 Free Software Foundation Europe e.V.
Copyright (C) 2011-2012 Planets Communications B.V.
- Copyright (C) 2013-2020 Bareos GmbH & Co. KG
+ Copyright (C) 2013-2022 Bareos GmbH & Co. KG
This program is Free Software; you can redistribute it and/or
modify it under the terms of version three of the GNU Affero General Public
@@ -30,7 +30,7 @@
#include "include/bareos.h"
#include "filed/filed.h"
-#include "filed/jcr_private.h"
+#include "filed/filed_jcr_impl.h"
#include "filed/filed_globals.h"
#include "lib/bnet.h"
#include "lib/bsock.h"
@@ -63,12 +63,12 @@ extern "C" void* sd_heartbeat_thread(void* arg)
sd.reset(jcr->store_bsock->clone());
dir.reset(jcr->dir_bsock->clone());
- jcr->impl->hb_bsock = sd;
- jcr->impl->hb_running = true;
- jcr->impl->hb_dir_bsock = dir;
+ jcr->fd_impl->hb_bsock = sd;
+ jcr->fd_impl->hb_running = true;
+ jcr->fd_impl->hb_dir_bsock = dir;
dir->suppress_error_msgs_ = true;
sd->suppress_error_msgs_ = true;
- jcr->impl->hb_initialized_once
+ jcr->fd_impl->hb_initialized_once
= true; // initialize last to avoid race condition
/* Hang reading the socket to the SD, and every time we get
@@ -102,9 +102,9 @@ extern "C" void* sd_heartbeat_thread(void* arg)
sd->close();
dir->close();
- jcr->impl->hb_bsock.reset();
- jcr->impl->hb_running = false;
- jcr->impl->hb_dir_bsock = NULL;
+ jcr->fd_impl->hb_bsock.reset();
+ jcr->fd_impl->hb_running = false;
+ jcr->fd_impl->hb_dir_bsock = NULL;
return NULL;
}
@@ -118,11 +118,11 @@ void StartHeartbeatMonitor(JobControlRecord* jcr)
* make debugging impossible.
*/
if (!no_signals) {
- jcr->impl->hb_bsock = NULL;
- jcr->impl->hb_running = false;
- jcr->impl->hb_initialized_once = false;
- jcr->impl->hb_dir_bsock = NULL;
- pthread_create(&jcr->impl->heartbeat_id, NULL, sd_heartbeat_thread,
+ jcr->fd_impl->hb_bsock = NULL;
+ jcr->fd_impl->hb_running = false;
+ jcr->fd_impl->hb_initialized_once = false;
+ jcr->fd_impl->hb_dir_bsock = NULL;
+ pthread_create(&jcr->fd_impl->heartbeat_id, NULL, sd_heartbeat_thread,
(void*)jcr);
}
}
@@ -134,47 +134,47 @@ void StopHeartbeatMonitor(JobControlRecord* jcr)
if (no_signals) { return; }
/* Wait max 10 secs for heartbeat thread to start */
- while (!jcr->impl->hb_initialized_once && cnt++ < 200) {
+ while (!jcr->fd_impl->hb_initialized_once && cnt++ < 200) {
Bmicrosleep(0, 50000); /* wait for start */
}
- if (jcr->impl->hb_running) {
- jcr->impl->hb_bsock->SetTimedOut(); /* set timed_out to Terminate read */
- jcr->impl->hb_bsock->SetTerminated(); /* set to Terminate read */
+ if (jcr->fd_impl->hb_running) {
+ jcr->fd_impl->hb_bsock->SetTimedOut(); /* set timed_out to Terminate read */
+ jcr->fd_impl->hb_bsock->SetTerminated(); /* set to Terminate read */
}
- if (jcr->impl->hb_dir_bsock) {
- jcr->impl->hb_dir_bsock
+ if (jcr->fd_impl->hb_dir_bsock) {
+ jcr->fd_impl->hb_dir_bsock
->SetTimedOut(); /* set timed_out to Terminate read */
- jcr->impl->hb_dir_bsock->SetTerminated(); /* set to Terminate read */
+ jcr->fd_impl->hb_dir_bsock->SetTerminated(); /* set to Terminate read */
}
- if (jcr->impl->hb_running) {
+ if (jcr->fd_impl->hb_running) {
Dmsg0(100, "Send kill to heartbeat id\n");
- pthread_kill(jcr->impl->heartbeat_id,
+ pthread_kill(jcr->fd_impl->heartbeat_id,
TIMEOUT_SIGNAL); /* make heartbeat thread go away */
Bmicrosleep(0, 50000);
}
cnt = 0;
// Wait max 100 secs for heartbeat thread to stop
- while (jcr->impl->hb_running && cnt++ < 200) {
- pthread_kill(jcr->impl->heartbeat_id,
+ while (jcr->fd_impl->hb_running && cnt++ < 200) {
+ pthread_kill(jcr->fd_impl->heartbeat_id,
TIMEOUT_SIGNAL); /* make heartbeat thread go away */
Bmicrosleep(0, 500000);
}
- if (jcr->impl->hb_bsock) {
- // delete jcr->impl_->hb_bsock;
- jcr->impl->hb_bsock.reset();
+ if (jcr->fd_impl->hb_bsock) {
+ // delete jcr->fd_impl_->hb_bsock;
+ jcr->fd_impl->hb_bsock.reset();
}
- if (jcr->impl->hb_dir_bsock) {
- // delete jcr->impl_->hb_dir_bsock;
- jcr->impl->hb_dir_bsock.reset();
+ if (jcr->fd_impl->hb_dir_bsock) {
+ // delete jcr->fd_impl_->hb_dir_bsock;
+ jcr->fd_impl->hb_dir_bsock.reset();
}
- jcr->impl->hb_initialized_once = false;
+ jcr->fd_impl->hb_initialized_once = false;
}
/**
@@ -193,10 +193,10 @@ extern "C" void* dir_heartbeat_thread(void* arg)
// Get our own local copy
dir = jcr->dir_bsock->clone();
- jcr->impl->hb_bsock.reset(dir);
- jcr->impl->hb_running = true;
+ jcr->fd_impl->hb_bsock.reset(dir);
+ jcr->fd_impl->hb_running = true;
dir->suppress_error_msgs_ = true;
- jcr->impl->hb_initialized_once
+ jcr->fd_impl->hb_initialized_once
= true; // initialize last to avoid race condition
while (!dir->IsStop()) {
@@ -212,8 +212,8 @@ extern "C" void* dir_heartbeat_thread(void* arg)
Bmicrosleep(next, 0);
}
dir->close();
- jcr->impl->hb_bsock.reset();
- jcr->impl->hb_running = false;
+ jcr->fd_impl->hb_bsock.reset();
+ jcr->fd_impl->hb_running = false;
return NULL;
}
@@ -222,7 +222,7 @@ void StartDirHeartbeat(JobControlRecord* jcr)
{
if (me->heartbeat_interval) {
jcr->dir_bsock->SetLocking();
- pthread_create(&jcr->impl->heartbeat_id, NULL, dir_heartbeat_thread,
+ pthread_create(&jcr->fd_impl->heartbeat_id, NULL, dir_heartbeat_thread,
(void*)jcr);
}
}
diff --git a/core/src/filed/restore.cc b/core/src/filed/restore.cc
index a11cff2f8..d4eece457 100644
--- a/core/src/filed/restore.cc
+++ b/core/src/filed/restore.cc
@@ -29,7 +29,7 @@
#include "include/bareos.h"
#include "filed/filed.h"
#include "filed/filed_globals.h"
-#include "filed/jcr_private.h"
+#include "filed/filed_jcr_impl.h"
#include "filed/compression.h"
#include "filed/crypto.h"
#include "filed/restore.h"
@@ -130,7 +130,7 @@ static int BcloseChksize(JobControlRecord* jcr,
Qmsg3(jcr, M_WARNING, 0,
_("Size of data or stream of %s not correct. Original %s, restored "
"%s.\n"),
- jcr->impl->last_fname, edit_uint64(osize, ec1),
+ jcr->fd_impl->last_fname, edit_uint64(osize, ec1),
edit_uint64(fsize, ec2));
return -1;
}
@@ -149,16 +149,16 @@ static inline bool RestoreFinderinfo(JobControlRecord* jcr,
attrList.commonattr = ATTR_CMN_FNDRINFO;
Dmsg0(130, "Restoring Finder Info\n");
- SetBit(FO_HFSPLUS, jcr->impl->ff->flags);
+ SetBit(FO_HFSPLUS, jcr->fd_impl->ff->flags);
if (buflen != 32) {
Jmsg(jcr, M_WARNING, 0,
_("Invalid length of Finder Info (got %d, not 32)\n"), buflen);
return false;
}
- if (setattrlist(jcr->impl->last_fname, &attrList, buf, buflen, 0) != 0) {
+ if (setattrlist(jcr->fd_impl->last_fname, &attrList, buf, buflen, 0) != 0) {
Jmsg(jcr, M_WARNING, 0, _("Could not set Finder Info on %s\n"),
- jcr->impl->last_fname);
+ jcr->fd_impl->last_fname);
return false;
}
@@ -216,14 +216,14 @@ static inline bool do_reStoreAcl(JobControlRecord* jcr,
{
bacl_exit_code retval;
- jcr->impl->acl_data->last_fname = jcr->impl->last_fname;
+ jcr->fd_impl->acl_data->last_fname = jcr->fd_impl->last_fname;
switch (stream) {
case STREAM_ACL_PLUGIN:
- retval = plugin_parse_acl_streams(jcr, jcr->impl->acl_data.get(), stream,
- content, content_length);
+ retval = plugin_parse_acl_streams(jcr, jcr->fd_impl->acl_data.get(),
+ stream, content, content_length);
break;
default:
- retval = parse_acl_streams(jcr, jcr->impl->acl_data.get(), stream,
+ retval = parse_acl_streams(jcr, jcr->fd_impl->acl_data.get(), stream,
content, content_length);
break;
}
@@ -237,11 +237,11 @@ static inline bool do_reStoreAcl(JobControlRecord* jcr,
* ACL_REPORT_ERR_MAX_PER_JOB print the error message set by the lower
* level routine in jcr->errmsg.
*/
- if (jcr->impl->acl_data->u.parse->nr_errors
+ if (jcr->fd_impl->acl_data->u.parse->nr_errors
< ACL_REPORT_ERR_MAX_PER_JOB) {
Jmsg(jcr, M_WARNING, 0, "%s", jcr->errmsg);
}
- jcr->impl->acl_data->u.parse->nr_errors++;
+ jcr->fd_impl->acl_data->u.parse->nr_errors++;
break;
case bacl_exit_ok:
break;
@@ -261,14 +261,14 @@ static inline bool do_restore_xattr(JobControlRecord* jcr,
{
BxattrExitCode retval;
- jcr->impl->xattr_data->last_fname = jcr->impl->last_fname;
+ jcr->fd_impl->xattr_data->last_fname = jcr->fd_impl->last_fname;
switch (stream) {
case STREAM_XATTR_PLUGIN:
- retval = PluginParseXattrStreams(jcr, jcr->impl->xattr_data.get(), stream,
- content, content_length);
+ retval = PluginParseXattrStreams(jcr, jcr->fd_impl->xattr_data.get(),
+ stream, content, content_length);
break;
default:
- retval = ParseXattrStreams(jcr, jcr->impl->xattr_data.get(), stream,
+ retval = ParseXattrStreams(jcr, jcr->fd_impl->xattr_data.get(), stream,
content, content_length);
break;
}
@@ -281,7 +281,7 @@ static inline bool do_restore_xattr(JobControlRecord* jcr,
break;
case BxattrExitCode::kError:
Jmsg(jcr, M_ERROR, 0, "%s", jcr->errmsg);
- jcr->impl->xattr_data->u.parse->nr_errors++;
+ jcr->fd_impl->xattr_data->u.parse->nr_errors++;
break;
case BxattrExitCode::kSuccess:
break;
@@ -471,16 +471,16 @@ void DoRestore(JobControlRecord* jcr)
binit(&rctx.forkbfd);
attr = rctx.attr = new_attr(jcr);
if (have_acl) {
- jcr->impl->acl_data = std::make_unique<AclData>();
- jcr->impl->acl_data->u.parse
+ jcr->fd_impl->acl_data = std::make_unique<AclData>();
+ jcr->fd_impl->acl_data->u.parse
= (acl_parse_data_t*)malloc(sizeof(acl_parse_data_t));
- memset(jcr->impl->acl_data->u.parse, 0, sizeof(acl_parse_data_t));
+ memset(jcr->fd_impl->acl_data->u.parse, 0, sizeof(acl_parse_data_t));
}
if (have_xattr) {
- jcr->impl->xattr_data = std::make_unique<XattrData>();
- jcr->impl->xattr_data->u.parse
+ jcr->fd_impl->xattr_data = std::make_unique<XattrData>();
+ jcr->fd_impl->xattr_data->u.parse
= (xattr_parse_data_t*)malloc(sizeof(xattr_parse_data_t));
- memset(jcr->impl->xattr_data->u.parse, 0, sizeof(xattr_parse_data_t));
+ memset(jcr->fd_impl->xattr_data->u.parse, 0, sizeof(xattr_parse_data_t));
}
while (BgetMsg(sd) >= 0 && !JobCanceled(jcr)) {
@@ -572,20 +572,21 @@ void DoRestore(JobControlRecord* jcr)
* Try to actually create the file, which returns a status telling
* us if we need to extract or not.
*/
- jcr->impl->num_files_examined++;
+ jcr->fd_impl->num_files_examined++;
rctx.extract = false;
status = CF_CORE; /* By default, let Bareos's core handle it */
if (jcr->IsPlugin()) {
- status = PluginCreateFile(jcr, attr, &rctx.bfd, jcr->impl->replace);
+ status
+ = PluginCreateFile(jcr, attr, &rctx.bfd, jcr->fd_impl->replace);
}
if (status == CF_CORE) {
- status = CreateFile(jcr, attr, &rctx.bfd, jcr->impl->replace);
+ status = CreateFile(jcr, attr, &rctx.bfd, jcr->fd_impl->replace);
}
jcr->lock();
- PmStrcpy(jcr->impl->last_fname, attr->ofname);
- jcr->impl->last_type = attr->type;
+ PmStrcpy(jcr->fd_impl->last_fname, attr->ofname);
+ jcr->fd_impl->last_type = attr->type;
jcr->unlock();
Dmsg2(130, "Outfile=%s CreateFile status=%d\n", attr->ofname, status);
switch (status) {
@@ -644,7 +645,7 @@ void DoRestore(JobControlRecord* jcr)
}
// Do we have any keys at all?
- if (!jcr->impl->crypto.pki_recipients) {
+ if (!jcr->fd_impl->crypto.pki_recipients) {
Jmsg(jcr, M_ERROR, 0,
_("No private decryption keys have been defined to decrypt "
"encrypted backup data.\n"));
@@ -653,11 +654,12 @@ void DoRestore(JobControlRecord* jcr)
break;
}
- if (jcr->impl->crypto.digest) {
- CryptoDigestFree(jcr->impl->crypto.digest);
+ if (jcr->fd_impl->crypto.digest) {
+ CryptoDigestFree(jcr->fd_impl->crypto.digest);
}
- jcr->impl->crypto.digest = crypto_digest_new(jcr, signing_algorithm);
- if (!jcr->impl->crypto.digest) {
+ jcr->fd_impl->crypto.digest
+ = crypto_digest_new(jcr, signing_algorithm);
+ if (!jcr->fd_impl->crypto.digest) {
Jmsg0(jcr, M_FATAL, 0, _("Could not create digest.\n"));
rctx.extract = false;
bclose(&rctx.bfd);
@@ -667,7 +669,7 @@ void DoRestore(JobControlRecord* jcr)
// Decode and save session keys.
cryptoerr = CryptoSessionDecode(
(uint8_t*)sd->msg, (uint32_t)sd->message_length,
- jcr->impl->crypto.pki_recipients, &rctx.cs);
+ jcr->fd_impl->crypto.pki_recipients, &rctx.cs);
switch (cryptoerr) {
case CRYPTO_ERROR_NONE:
// Success
@@ -817,7 +819,7 @@ void DoRestore(JobControlRecord* jcr)
case STREAM_MACOS_FORK_DATA:
if (have_darwin_os) {
ClearAllBits(FO_MAX, rctx.fork_flags);
- SetBit(FO_HFSPLUS, jcr->impl->ff->flags);
+ SetBit(FO_HFSPLUS, jcr->fd_impl->ff->flags);
if (rctx.stream == STREAM_ENCRYPTED_MACOS_FORK_DATA) {
SetBit(FO_ENCRYPT, rctx.fork_flags);
@@ -832,12 +834,12 @@ void DoRestore(JobControlRecord* jcr)
if (rctx.extract) {
if (rctx.prev_stream != rctx.stream) {
- if (BopenRsrc(&rctx.forkbfd, jcr->impl->last_fname,
+ if (BopenRsrc(&rctx.forkbfd, jcr->fd_impl->last_fname,
O_WRONLY | O_TRUNC | O_BINARY, 0)
< 0) {
Jmsg(jcr, M_WARNING, 0,
_("Cannot open resource fork for %s.\n"),
- jcr->impl->last_fname);
+ jcr->fd_impl->last_fname);
rctx.extract = false;
continue;
}
@@ -898,8 +900,8 @@ void DoRestore(JobControlRecord* jcr)
* b) and it is not a directory (they are never "extracted")
* c) or the file name is empty
*/
- if ((!rctx.extract && jcr->impl->last_type != FT_DIREND)
- || (*jcr->impl->last_fname == 0)) {
+ if ((!rctx.extract && jcr->fd_impl->last_type != FT_DIREND)
+ || (*jcr->fd_impl->last_fname == 0)) {
break;
}
if (have_acl) {
@@ -907,7 +909,7 @@ void DoRestore(JobControlRecord* jcr)
* For anything that is not a directory we delay
* the restore of acls till a later stage.
*/
- if (jcr->impl->last_type != FT_DIREND) {
+ if (jcr->fd_impl->last_type != FT_DIREND) {
PushDelayedDataStream(rctx, sd);
} else {
if (!do_reStoreAcl(jcr, rctx.stream, sd->msg, sd->message_length)) {
@@ -936,8 +938,8 @@ void DoRestore(JobControlRecord* jcr)
* b) and it is not a directory (they are never "extracted")
* c) or the file name is empty
*/
- if ((!rctx.extract && jcr->impl->last_type != FT_DIREND)
- || (*jcr->impl->last_fname == 0)) {
+ if ((!rctx.extract && jcr->fd_impl->last_type != FT_DIREND)
+ || (*jcr->fd_impl->last_fname == 0)) {
break;
}
if (have_xattr) {
@@ -945,7 +947,7 @@ void DoRestore(JobControlRecord* jcr)
* For anything that is not a directory we delay
* the restore of xattr till a later stage.
*/
- if (jcr->impl->last_type != FT_DIREND) {
+ if (jcr->fd_impl->last_type != FT_DIREND) {
PushDelayedDataStream(rctx, sd);
} else {
if (!do_restore_xattr(jcr, rctx.stream, sd->msg,
@@ -965,8 +967,8 @@ void DoRestore(JobControlRecord* jcr)
* b) and it is not a directory (they are never "extracted")
* c) or the file name is empty
*/
- if ((!rctx.extract && jcr->impl->last_type != FT_DIREND)
- || (*jcr->impl->last_fname == 0)) {
+ if ((!rctx.extract && jcr->fd_impl->last_type != FT_DIREND)
+ || (*jcr->fd_impl->last_fname == 0)) {
break;
}
if (have_xattr) {
@@ -994,7 +996,7 @@ void DoRestore(JobControlRecord* jcr)
== NULL) {
Jmsg1(jcr, M_ERROR, 0,
_("Failed to decode message signature for %s\n"),
- jcr->impl->last_fname);
+ jcr->fd_impl->last_fname);
}
break;
@@ -1055,15 +1057,15 @@ ok_out:
// First output the statistics.
Dmsg2(10, "End Do Restore. Files=%d Bytes=%s\n", jcr->JobFiles,
edit_uint64(jcr->JobBytes, ec1));
- if (have_acl && jcr->impl->acl_data->u.parse->nr_errors > 0) {
+ if (have_acl && jcr->fd_impl->acl_data->u.parse->nr_errors > 0) {
Jmsg(jcr, M_WARNING, 0,
_("Encountered %ld acl errors while doing restore\n"),
- jcr->impl->acl_data->u.parse->nr_errors);
+ jcr->fd_impl->acl_data->u.parse->nr_errors);
}
- if (have_xattr && jcr->impl->xattr_data->u.parse->nr_errors > 0) {
+ if (have_xattr && jcr->fd_impl->xattr_data->u.parse->nr_errors > 0) {
Jmsg(jcr, M_WARNING, 0,
_("Encountered %ld xattr errors while doing restore\n"),
- jcr->impl->xattr_data->u.parse->nr_errors);
+ jcr->fd_impl->xattr_data->u.parse->nr_errors);
}
if (non_support_data > 1 || non_support_attr > 1) {
Jmsg(jcr, M_WARNING, 0,
@@ -1095,9 +1097,9 @@ ok_out:
// Free Signature & Crypto Data
FreeSignature(rctx);
FreeSession(rctx);
- if (jcr->impl->crypto.digest) {
- CryptoDigestFree(jcr->impl->crypto.digest);
- jcr->impl->crypto.digest = NULL;
+ if (jcr->fd_impl->crypto.digest) {
+ CryptoDigestFree(jcr->fd_impl->crypto.digest);
+ jcr->fd_impl->crypto.digest = NULL;
}
// Free file cipher restore context
@@ -1121,10 +1123,12 @@ ok_out:
rctx.fork_cipher_ctx.buf = NULL;
}
- if (have_acl && jcr->impl->acl_data) { free(jcr->impl->acl_data->u.parse); }
+ if (have_acl && jcr->fd_impl->acl_data) {
+ free(jcr->fd_impl->acl_data->u.parse);
+ }
- if (have_xattr && jcr->impl->xattr_data) {
- free(jcr->impl->xattr_data->u.parse);
+ if (have_xattr && jcr->fd_impl->xattr_data) {
+ free(jcr->fd_impl->xattr_data->u.parse);
}
// Free the delayed stream stack list.
@@ -1143,7 +1147,7 @@ ok_out:
int DoFileDigest(JobControlRecord* jcr, FindFilesPacket* ff_pkt, bool)
{
Dmsg1(50, "DoFileDigest jcr=%p\n", jcr);
- return (DigestFile(jcr, ff_pkt, jcr->impl->crypto.digest));
+ return (DigestFile(jcr, ff_pkt, jcr->fd_impl->crypto.digest));
}
bool SparseData(JobControlRecord* jcr,
@@ -1163,7 +1167,7 @@ bool SparseData(JobControlRecord* jcr,
if (blseek(bfd, (boffset_t)*addr, SEEK_SET) < 0) {
BErrNo be;
Jmsg3(jcr, M_ERROR, 0, _("Seek to %s error on %s: ERR=%s\n"),
- edit_uint64(*addr, ec1), jcr->impl->last_fname,
+ edit_uint64(*addr, ec1), jcr->fd_impl->last_fname,
be.bstrerror(bfd->BErrNo));
return false;
}
@@ -1179,8 +1183,8 @@ bool StoreData(JobControlRecord* jcr,
const int32_t length,
bool win32_decomp)
{
- if (jcr->impl->crypto.digest) {
- CryptoDigestUpdate(jcr->impl->crypto.digest, (uint8_t*)data, length);
+ if (jcr->fd_impl->crypto.digest) {
+ CryptoDigestUpdate(jcr->fd_impl->crypto.digest, (uint8_t*)data, length);
}
if (win32_decomp) {
@@ -1188,7 +1192,7 @@ bool StoreData(JobControlRecord* jcr,
BErrNo be;
Jmsg2(jcr, M_ERROR, 0,
_("Write error in Win32 Block Decomposition on %s: %s\n"),
- jcr->impl->last_fname, be.bstrerror(bfd->BErrNo));
+ jcr->fd_impl->last_fname, be.bstrerror(bfd->BErrNo));
return false;
}
#ifdef HAVE_WIN32
@@ -1198,22 +1202,22 @@ bool StoreData(JobControlRecord* jcr,
!= (ssize_t)length) {
BErrNo be;
Jmsg2(jcr, M_ERROR, 0, _("Write error on %s: %s\n"),
- jcr->impl->last_fname, be.bstrerror(bfd->BErrNo));
+ jcr->fd_impl->last_fname, be.bstrerror(bfd->BErrNo));
return false;
}
} else {
if (bwrite(bfd, data, length) != (ssize_t)length) {
BErrNo be;
Jmsg2(jcr, M_ERROR, 0, _("Write error on %s: %s\n"),
- jcr->impl->last_fname, be.bstrerror(bfd->BErrNo));
+ jcr->fd_impl->last_fname, be.bstrerror(bfd->BErrNo));
}
}
}
#else
} else if (bwrite(bfd, data, length) != (ssize_t)length) {
BErrNo be;
- Jmsg2(jcr, M_ERROR, 0, _("Write error on %s: %s\n"), jcr->impl->last_fname,
- be.bstrerror(bfd->BErrNo));
+ Jmsg2(jcr, M_ERROR, 0, _("Write error on %s: %s\n"),
+ jcr->fd_impl->last_fname, be.bstrerror(bfd->BErrNo));
return false;
}
#endif
@@ -1256,7 +1260,7 @@ int32_t ExtractData(JobControlRecord* jcr,
}
if (BitIsSet(FO_COMPRESS, flags)) {
- if (!DecompressData(jcr, jcr->impl->last_fname, stream, &wbuf, &wsize,
+ if (!DecompressData(jcr, jcr->fd_impl->last_fname, stream, &wbuf, &wsize,
false)) {
goto bail_out;
}
@@ -1333,7 +1337,7 @@ static bool ClosePreviousStream(JobControlRecord* jcr, r_ctx& rctx)
// Free Signature
FreeSignature(rctx);
FreeSession(rctx);
- ClearAllBits(FO_MAX, rctx.jcr->impl->ff->flags);
+ ClearAllBits(FO_MAX, rctx.jcr->fd_impl->ff->flags);
Dmsg0(130, "Stop extracting.\n");
} else if (IsBopen(&rctx.bfd)) {
Jmsg0(rctx.jcr, M_ERROR, 0,
diff --git a/core/src/filed/sd_cmds.cc b/core/src/filed/sd_cmds.cc
index 879fe9592..f976ca1f4 100644
--- a/core/src/filed/sd_cmds.cc
+++ b/core/src/filed/sd_cmds.cc
@@ -27,7 +27,7 @@
#include "include/bareos.h"
#include "filed/filed.h"
#include "filed/filed_globals.h"
-#include "filed/jcr_private.h"
+#include "filed/filed_jcr_impl.h"
#include "filed/authenticate.h"
#include "lib/bnet.h"
#include "lib/bsock.h"
@@ -91,8 +91,8 @@ void* handle_stored_connection(BareosSocket* sd)
}
if (!jcr->max_bandwidth) {
- if (jcr->impl->director->max_bandwidth_per_job) {
- jcr->max_bandwidth = jcr->impl->director->max_bandwidth_per_job;
+ if (jcr->fd_impl->director->max_bandwidth_per_job) {
+ jcr->max_bandwidth = jcr->fd_impl->director->max_bandwidth_per_job;
} else if (me->max_bandwidth_per_job) {
jcr->max_bandwidth = me->max_bandwidth_per_job;
}
diff --git a/core/src/filed/status.cc b/core/src/filed/status.cc
index 4d8f3d2b6..99fa079c4 100644
--- a/core/src/filed/status.cc
+++ b/core/src/filed/status.cc
@@ -30,7 +30,7 @@
#include "include/bareos.h"
#include "filed/filed.h"
#include "filed/filed_globals.h"
-#include "filed/jcr_private.h"
+#include "filed/filed_jcr_impl.h"
#include "lib/status_packet.h"
#include "lib/bsock.h"
#include "lib/edit.h"
@@ -169,21 +169,21 @@ static void ListRunningJobsPlain(StatusPacket* sp)
njcr->Job);
sp->send(msg, len);
#ifdef WIN32_VSS
- len = Mmsg(
- msg, _(" %s%s %s Job started: %s\n"),
- (njcr->impl->pVSSClient && njcr->impl->pVSSClient->IsInitialized())
- ? "VSS "
- : "",
- JobLevelToString(njcr->getJobLevel()),
- job_type_to_str(njcr->getJobType()), dt);
+ len = Mmsg(msg, _(" %s%s %s Job started: %s\n"),
+ (njcr->fd_impl->pVSSClient
+ && njcr->fd_impl->pVSSClient->IsInitialized())
+ ? "VSS "
+ : "",
+ JobLevelToString(njcr->getJobLevel()),
+ job_type_to_str(njcr->getJobType()), dt);
#else
len = Mmsg(msg, _(" %s %s Job started: %s\n"),
JobLevelToString(njcr->getJobLevel()),
job_type_to_str(njcr->getJobType()), dt);
#endif
- } else if ((njcr->JobId == 0) && (njcr->impl->director)) {
+ } else if ((njcr->JobId == 0) && (njcr->fd_impl->director)) {
len = Mmsg(msg, _("%s (director) connected at: %s\n"),
- njcr->impl->director->resource_name_, dt);
+ njcr->fd_impl->director->resource_name_, dt);
} else {
/*
* This should only occur shortly, until the JobControlRecord values are
@@ -205,11 +205,12 @@ static void ListRunningJobsPlain(StatusPacket* sp)
edit_uint64_with_commas(njcr->max_bandwidth, b4));
sp->send(msg, len);
len = Mmsg(msg, _(" Files Examined=%s\n"),
- edit_uint64_with_commas(njcr->impl->num_files_examined, b1));
+ edit_uint64_with_commas(njcr->fd_impl->num_files_examined, b1));
sp->send(msg, len);
if (njcr->JobFiles > 0) {
njcr->lock();
- len = Mmsg(msg, _(" Processing file: %s\n"), njcr->impl->last_fname);
+ len = Mmsg(msg, _(" Processing file: %s\n"),
+ njcr->fd_impl->last_fname);
njcr->unlock();
sp->send(msg, len);
}
@@ -242,7 +243,7 @@ static void ListRunningJobsApi(StatusPacket* sp)
PoolMem msg(PM_MESSAGE);
char dt[MAX_TIME_LENGTH], b1[32], b2[32], b3[32], b4[32];
- // List running jobs for Bat/Bweb (simple to parse)
+ // List running jobs for Bat/Bweb (sfd_imple to parse)
foreach_jcr (njcr) {
bstrutime(dt, sizeof(dt), njcr->start_time);
if (njcr->JobId == 0) {
@@ -251,12 +252,12 @@ static void ListRunningJobsApi(StatusPacket* sp)
len = Mmsg(msg, "JobId=%d\n Job=%s\n", njcr->JobId, njcr->Job);
sp->send(msg, len);
#ifdef WIN32_VSS
- len = Mmsg(
- msg, " VSS=%d\n Level=%c\n JobType=%c\n JobStarted=%s\n",
- (njcr->impl->pVSSClient && njcr->impl->pVSSClient->IsInitialized())
- ? 1
- : 0,
- njcr->getJobLevel(), njcr->getJobType(), dt);
+ len = Mmsg(msg, " VSS=%d\n Level=%c\n JobType=%c\n JobStarted=%s\n",
+ (njcr->fd_impl->pVSSClient
+ && njcr->fd_impl->pVSSClient->IsInitialized())
+ ? 1
+ : 0,
+ njcr->getJobLevel(), njcr->getJobType(), dt);
#else
len = Mmsg(msg, " VSS=%d\n Level=%c\n JobType=%c\n JobStarted=%s\n", 0,
njcr->getJobLevel(), njcr->getJobType(), dt);
@@ -275,11 +276,11 @@ static void ListRunningJobsApi(StatusPacket* sp)
edit_int64(njcr->max_bandwidth, b4));
sp->send(msg, len);
len = Mmsg(msg, " Files Examined=%s\n",
- edit_uint64(njcr->impl->num_files_examined, b1));
+ edit_uint64(njcr->fd_impl->num_files_examined, b1));
sp->send(msg, len);
if (njcr->JobFiles > 0) {
njcr->lock();
- len = Mmsg(msg, " Processing file=%s\n", njcr->impl->last_fname);
+ len = Mmsg(msg, " Processing file=%s\n", njcr->fd_impl->last_fname);
njcr->unlock();
sp->send(msg, len);
}
diff --git a/core/src/filed/verify.cc b/core/src/filed/verify.cc
index 01b05a127..72dccfb96 100644
--- a/core/src/filed/verify.cc
+++ b/core/src/filed/verify.cc
@@ -27,7 +27,7 @@
#include "include/bareos.h"
#include "filed/filed.h"
-#include "filed/jcr_private.h"
+#include "filed/filed_jcr_impl.h"
#include "findlib/find.h"
#include "findlib/attribs.h"
#include "lib/attribs.h"
@@ -64,20 +64,20 @@ void DoVerify(JobControlRecord* jcr)
{
jcr->setJobStatusWithPriorityCheck(JS_Running);
jcr->buf_size = DEFAULT_NETWORK_BUFFER_SIZE;
- if ((jcr->impl->big_buf = (char*)malloc(jcr->buf_size)) == NULL) {
+ if ((jcr->fd_impl->big_buf = (char*)malloc(jcr->buf_size)) == NULL) {
Jmsg1(jcr, M_ABORT, 0, _("Cannot malloc %d network read buffer\n"),
DEFAULT_NETWORK_BUFFER_SIZE);
}
- SetFindOptions((FindFilesPacket*)jcr->impl->ff, jcr->impl->incremental,
- jcr->impl->since_time);
+ SetFindOptions((FindFilesPacket*)jcr->fd_impl->ff, jcr->fd_impl->incremental,
+ jcr->fd_impl->since_time);
Dmsg0(10, "Start find files\n");
/* Subroutine VerifyFile() is called for each file */
- FindFiles(jcr, (FindFilesPacket*)jcr->impl->ff, VerifyFile, NULL);
+ FindFiles(jcr, (FindFilesPacket*)jcr->fd_impl->ff, VerifyFile, NULL);
Dmsg0(10, "End find files\n");
- if (jcr->impl->big_buf) {
- free(jcr->impl->big_buf);
- jcr->impl->big_buf = NULL;
+ if (jcr->fd_impl->big_buf) {
+ free(jcr->fd_impl->big_buf);
+ jcr->fd_impl->big_buf = NULL;
}
jcr->setJobStatusWithPriorityCheck(JS_Terminated);
}
@@ -96,7 +96,7 @@ static int VerifyFile(JobControlRecord* jcr, FindFilesPacket* ff_pkt, bool)
if (JobCanceled(jcr)) { return 0; }
dir = jcr->dir_bsock;
- jcr->impl->num_files_examined++; /* bump total file count */
+ jcr->fd_impl->num_files_examined++; /* bump total file count */
switch (ff_pkt->type) {
case FT_LNKSAVED: /* Hard linked, file already saved */
@@ -112,8 +112,8 @@ static int VerifyFile(JobControlRecord* jcr, FindFilesPacket* ff_pkt, bool)
Dmsg2(30, "FT_LNK saving: %s -> %s\n", ff_pkt->fname, ff_pkt->link);
break;
case FT_DIRBEGIN:
- jcr->impl->num_files_examined--; /* correct file count */
- return 1; /* ignored */
+ jcr->fd_impl->num_files_examined--; /* correct file count */
+ return 1; /* ignored */
case FT_REPARSE:
case FT_JUNCTION:
case FT_DIREND:
@@ -197,7 +197,7 @@ static int VerifyFile(JobControlRecord* jcr, FindFilesPacket* ff_pkt, bool)
jcr->lock();
jcr->JobFiles++; /* increment number of files sent */
- PmStrcpy(jcr->impl->last_fname, ff_pkt->fname);
+ PmStrcpy(jcr->fd_impl->last_fname, ff_pkt->fname);
jcr->unlock();
/*
@@ -330,7 +330,7 @@ static int ReadDigest(BareosWinFilePacket* bfd,
char buf[DEFAULT_NETWORK_BUFFER_SIZE];
int64_t n;
int64_t bufsiz = (int64_t)sizeof(buf);
- FindFilesPacket* ff_pkt = (FindFilesPacket*)jcr->impl->ff;
+ FindFilesPacket* ff_pkt = (FindFilesPacket*)jcr->fd_impl->ff;
uint64_t fileAddr = 0; /* file address */
@@ -360,10 +360,10 @@ static int ReadDigest(BareosWinFilePacket* bfd,
if (n < 0) {
BErrNo be;
be.SetErrno(bfd->BErrNo);
- Dmsg2(100, "Error reading file %s: ERR=%s\n", jcr->impl->last_fname,
+ Dmsg2(100, "Error reading file %s: ERR=%s\n", jcr->fd_impl->last_fname,
be.bstrerror());
Jmsg(jcr, M_ERROR, 1, _("Error reading file %s: ERR=%s\n"),
- jcr->impl->last_fname, be.bstrerror());
+ jcr->fd_impl->last_fname, be.bstrerror());
jcr->JobErrors++;
return -1;
}
diff --git a/core/src/filed/verify_vol.cc b/core/src/filed/verify_vol.cc
index dcaff73b8..a3d731f68 100644
--- a/core/src/filed/verify_vol.cc
+++ b/core/src/filed/verify_vol.cc
@@ -29,7 +29,7 @@
#include "include/bareos.h"
#include "filed/filed.h"
#include "filed/filed_globals.h"
-#include "filed/jcr_private.h"
+#include "filed/filed_jcr_impl.h"
#include "lib/bsock.h"
#include "lib/bget_msg.h"
#include "lib/bnet.h"
@@ -166,8 +166,8 @@ void DoVerifyVolume(JobControlRecord* jcr)
}
jcr->lock();
jcr->JobFiles++;
- jcr->impl->num_files_examined++;
- PmStrcpy(jcr->impl->last_fname, fname); /* last file examined */
+ jcr->fd_impl->num_files_examined++;
+ PmStrcpy(jcr->fd_impl->last_fname, fname); /* last file examined */
jcr->unlock();
/*
@@ -249,7 +249,7 @@ void DoVerifyVolume(JobControlRecord* jcr)
case STREAM_RESTORE_OBJECT:
jcr->lock();
jcr->JobFiles++;
- jcr->impl->num_files_examined++;
+ jcr->fd_impl->num_files_examined++;
jcr->unlock();
Dmsg2(400, "send inx=%d STREAM_RESTORE_OBJECT-%d\n", jcr->JobFiles,
diff --git a/core/src/include/jcr.h b/core/src/include/jcr.h
index 1b7949184..f140e399f 100644
--- a/core/src/include/jcr.h
+++ b/core/src/include/jcr.h
@@ -57,7 +57,9 @@ class JobControlRecord;
struct AttributesDbRecord;
struct PluginContext;
-struct JobControlRecordPrivate;
+struct DirectorJcrImpl;
+struct StoredJcrImpl;
+struct FiledJcrImpl;
struct VolumeSessionInfo;
#ifdef HAVE_WIN32
@@ -230,7 +232,12 @@ class JobControlRecord {
PathList* path_list{}; /**< Directory list (used by findlib) */
bool is_passive_client_connection_probing{}; /**< Set if director probes a passive client connection */
- JobControlRecordPrivate* impl{nullptr}; /* Pointer to implementation of each daemon */
+ union {
+ DirectorJcrImpl* dir_impl;
+ StoredJcrImpl* sd_impl;
+ FiledJcrImpl* fd_impl;
+ };
+
};
/* clang-format on */
diff --git a/core/src/plugins/stored/scsicrypto/scsicrypto-sd.cc b/core/src/plugins/stored/scsicrypto/scsicrypto-sd.cc
index 972b197be..7b6dc8867 100644
--- a/core/src/plugins/stored/scsicrypto/scsicrypto-sd.cc
+++ b/core/src/plugins/stored/scsicrypto/scsicrypto-sd.cc
@@ -60,7 +60,7 @@
#include "include/bareos.h"
#include "stored/device_control_record.h"
#include "stored/device_status_information.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/stored.h"
#include "lib/berrno.h"
#include "lib/crypto_wrap.h"
@@ -343,8 +343,8 @@ static bRC do_set_scsi_encryption_key(void* value)
* has been wrapped using RFC3394 key wrapping. We first copy the current
* wrapped key into a temporary variable for unwrapping.
*/
- if (dcr->jcr && dcr->jcr->impl->director) {
- director = dcr->jcr->impl->director;
+ if (dcr->jcr && dcr->jcr->sd_impl->director) {
+ director = dcr->jcr->sd_impl->director;
if (director->keyencrkey.value) {
char WrappedVolEncrKey[MAX_NAME_LENGTH];
diff --git a/core/src/stored/acquire.cc b/core/src/stored/acquire.cc
index 76732d442..e8bba8874 100644
--- a/core/src/stored/acquire.cc
+++ b/core/src/stored/acquire.cc
@@ -43,7 +43,7 @@
#include "lib/berrno.h"
#include "include/jcr.h"
#include "stored/block.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include <algorithm>
@@ -115,7 +115,7 @@ bool AcquireDeviceForRead(DeviceControlRecord* dcr)
}
/* Find next Volume, if any */
- vol = jcr->impl->VolList;
+ vol = jcr->sd_impl->VolList;
if (!vol) {
char ed1[50];
Jmsg(jcr, M_FATAL, 0,
@@ -123,12 +123,12 @@ bool AcquireDeviceForRead(DeviceControlRecord* dcr)
edit_int64(jcr->JobId, ed1));
goto get_out;
}
- jcr->impl->CurReadVolume++;
- for (i = 1; i < jcr->impl->CurReadVolume; i++) { vol = vol->next; }
+ jcr->sd_impl->CurReadVolume++;
+ for (i = 1; i < jcr->sd_impl->CurReadVolume; i++) { vol = vol->next; }
if (!vol) {
Jmsg(jcr, M_FATAL, 0,
_("Logic error: no next volume to read. Numvol=%d Curvol=%d\n"),
- jcr->impl->NumReadVolumes, jcr->impl->CurReadVolume);
+ jcr->sd_impl->NumReadVolumes, jcr->sd_impl->CurReadVolume);
goto get_out; /* should not happen */
}
SetDcrFromVol(dcr, vol);
@@ -169,8 +169,8 @@ bool AcquireDeviceForRead(DeviceControlRecord* dcr)
LockReservations();
memset(&rctx, 0, sizeof(ReserveContext));
rctx.jcr = jcr;
- jcr->impl->read_dcr = dcr;
- jcr->impl->reserve_msgs = new alist<const char*>(10, not_owned_by_alist);
+ jcr->sd_impl->read_dcr = dcr;
+ jcr->sd_impl->reserve_msgs = new alist<const char*>(10, not_owned_by_alist);
rctx.any_drive = true;
rctx.device_name = vol->device;
store = new DirectorStorage;
@@ -492,7 +492,7 @@ DeviceControlRecord* AcquireDeviceForAppend(DeviceControlRecord* dcr)
}
dev->num_writers++; /* we are now a writer */
- if (jcr->impl->NumWriteVolumes == 0) { jcr->impl->NumWriteVolumes = 1; }
+ if (jcr->sd_impl->NumWriteVolumes == 0) { jcr->sd_impl->NumWriteVolumes = 1; }
dev->VolCatInfo.VolCatJobs++; /* increment number of jobs on vol */
Dmsg4(100, "=== nwriters=%d nres=%d vcatjob=%d dev=%s\n", dev->num_writers,
dev->NumReserved(), dev->VolCatInfo.VolCatJobs, dev->print_name());
@@ -738,8 +738,8 @@ void SetupNewDcrDevice(JobControlRecord* jcr,
if (dcr->attached_to_dev) { DetachDcrFromDev(dcr); }
// Use job spoolsize prior to device spoolsize
- if (jcr && jcr->impl->spool_size) {
- dcr->max_job_spool_size = jcr->impl->spool_size;
+ if (jcr && jcr->sd_impl->spool_size) {
+ dcr->max_job_spool_size = jcr->sd_impl->spool_size;
} else {
dcr->max_job_spool_size = dev->device_resource->max_job_spool_size;
}
@@ -833,9 +833,9 @@ void FreeDeviceControlRecord(DeviceControlRecord* dcr)
if (dcr->rec) { FreeRecord(dcr->rec); }
- if (jcr && jcr->impl->dcr == dcr) { jcr->impl->dcr = NULL; }
+ if (jcr && jcr->sd_impl->dcr == dcr) { jcr->sd_impl->dcr = NULL; }
- if (jcr && jcr->impl->read_dcr == dcr) { jcr->impl->read_dcr = NULL; }
+ if (jcr && jcr->sd_impl->read_dcr == dcr) { jcr->sd_impl->read_dcr = NULL; }
unlock_mutex(dcr->mutex_);
diff --git a/core/src/stored/append.cc b/core/src/stored/append.cc
index 2fdedce74..808891245 100644
--- a/core/src/stored/append.cc
+++ b/core/src/stored/append.cc
@@ -30,7 +30,7 @@
#include "stored/acquire.h"
#include "stored/fd_cmds.h"
#include "stored/stored_globals.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/label.h"
#include "stored/spool.h"
#include "lib/bget_msg.h"
@@ -101,20 +101,20 @@ bool IsAttribute(DeviceRecord* record)
static void UpdateFileList(JobControlRecord* jcr)
{
Dmsg0(100, _("... update file list\n"));
- jcr->impl->dcr->DirAskToUpdateFileList();
+ jcr->sd_impl->dcr->DirAskToUpdateFileList();
}
static void UpdateJobmediaRecord(JobControlRecord* jcr)
{
Dmsg0(100, _("... create job media record\n"));
- jcr->impl->dcr->DirCreateJobmediaRecord(false);
+ jcr->sd_impl->dcr->DirCreateJobmediaRecord(false);
}
static void UpdateJobrecord(JobControlRecord* jcr)
{
Dmsg2(100, _("... update job record: %llu bytes %lu files\n"), jcr->JobBytes,
jcr->JobFiles);
- jcr->impl->dcr->DirAskToUpdateJobRecord();
+ jcr->sd_impl->dcr->DirAskToUpdateJobRecord();
}
void DoBackupCheckpoint(JobControlRecord* jcr)
@@ -165,11 +165,11 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what)
POOLMEM* rec_data;
char ec[50];
- if (!jcr->impl->dcr) {
+ if (!jcr->sd_impl->dcr) {
Jmsg0(jcr, M_FATAL, 0, _("DeviceControlRecord is NULL!!!\n"));
return false;
}
- dev = jcr->impl->dcr->dev;
+ dev = jcr->sd_impl->dcr->dev;
if (!dev) {
Jmsg0(jcr, M_FATAL, 0, _("Device is NULL!!!\n"));
return false;
@@ -178,19 +178,20 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what)
Dmsg1(100, "Start append data. res=%d\n", dev->NumReserved());
if (!bs->SetBufferSize(
- jcr->impl->dcr->device_resource->max_network_buffer_size,
+ jcr->sd_impl->dcr->device_resource->max_network_buffer_size,
BNET_SETBUF_WRITE)) {
Jmsg0(jcr, M_FATAL, 0, _("Unable to set network buffer size.\n"));
jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
return false;
}
- if (!AcquireDeviceForAppend(jcr->impl->dcr)) {
+ if (!AcquireDeviceForAppend(jcr->sd_impl->dcr)) {
jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
return false;
}
- if (GeneratePluginEvent(jcr, bSdEventSetupRecordTranslation, jcr->impl->dcr)
+ if (GeneratePluginEvent(jcr, bSdEventSetupRecordTranslation,
+ jcr->sd_impl->dcr)
!= bRC_OK) {
jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
return false;
@@ -203,13 +204,13 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what)
}
Dmsg1(50, "Begin append device=%s\n", dev->print_name());
- if (!BeginDataSpool(jcr->impl->dcr)) {
+ if (!BeginDataSpool(jcr->sd_impl->dcr)) {
jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
return false;
}
if (!BeginAttributeSpool(jcr)) {
- DiscardDataSpool(jcr->impl->dcr);
+ DiscardDataSpool(jcr->sd_impl->dcr);
jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
return false;
}
@@ -220,7 +221,7 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what)
}
// Write Begin Session Record
- if (!WriteSessionLabel(jcr->impl->dcr, SOS_LABEL)) {
+ if (!WriteSessionLabel(jcr->sd_impl->dcr, SOS_LABEL)) {
Jmsg1(jcr, M_FATAL, 0, _("Write session label failed. ERR=%s\n"),
dev->bstrerror());
jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
@@ -255,7 +256,7 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what)
* file. 1. for the Attributes, 2. for the file data if any,
* and 3. for the MD5 if any.
*/
- jcr->impl->dcr->VolFirstIndex = jcr->impl->dcr->VolLastIndex = 0;
+ jcr->sd_impl->dcr->VolFirstIndex = jcr->sd_impl->dcr->VolLastIndex = 0;
jcr->run_time = time(NULL); /* start counting time for rates */
auto now
@@ -263,10 +264,10 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what)
time_t next_checkpoint_time = now + me->checkpoint_interval;
std::vector<ProcessedFile> processed_files{};
- int64_t current_volumeid = jcr->impl->dcr->VolMediaId;
+ int64_t current_volumeid = jcr->sd_impl->dcr->VolMediaId;
ProcessedFile file_currently_processed;
- uint32_t current_block_number = jcr->impl->dcr->block->BlockNumber;
+ uint32_t current_block_number = jcr->sd_impl->dcr->block->BlockNumber;
for (last_file_index = 0; ok && !jcr->IsJobCanceled();) {
/*
@@ -333,47 +334,48 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what)
* We save the original data pointer from the record so we can restore
* that after the loop ends.
*/
- rec_data = jcr->impl->dcr->rec->data;
+ rec_data = jcr->sd_impl->dcr->rec->data;
while ((n = BgetMsg(bs)) > 0 && !jcr->IsJobCanceled()) {
- jcr->impl->dcr->rec->VolSessionId = jcr->VolSessionId;
- jcr->impl->dcr->rec->VolSessionTime = jcr->VolSessionTime;
- jcr->impl->dcr->rec->FileIndex = file_index;
- jcr->impl->dcr->rec->Stream = stream;
- jcr->impl->dcr->rec->maskedStream
+ jcr->sd_impl->dcr->rec->VolSessionId = jcr->VolSessionId;
+ jcr->sd_impl->dcr->rec->VolSessionTime = jcr->VolSessionTime;
+ jcr->sd_impl->dcr->rec->FileIndex = file_index;
+ jcr->sd_impl->dcr->rec->Stream = stream;
+ jcr->sd_impl->dcr->rec->maskedStream
= stream & STREAMMASK_TYPE; /* strip high bits */
- jcr->impl->dcr->rec->data_len = bs->message_length;
- jcr->impl->dcr->rec->data = bs->msg; /* use message buffer */
+ jcr->sd_impl->dcr->rec->data_len = bs->message_length;
+ jcr->sd_impl->dcr->rec->data = bs->msg; /* use message buffer */
Dmsg4(850, "before writ_rec FI=%d SessId=%d Strm=%s len=%d\n",
- jcr->impl->dcr->rec->FileIndex, jcr->impl->dcr->rec->VolSessionId,
- stream_to_ascii(buf1, jcr->impl->dcr->rec->Stream,
- jcr->impl->dcr->rec->FileIndex),
- jcr->impl->dcr->rec->data_len);
+ jcr->sd_impl->dcr->rec->FileIndex,
+ jcr->sd_impl->dcr->rec->VolSessionId,
+ stream_to_ascii(buf1, jcr->sd_impl->dcr->rec->Stream,
+ jcr->sd_impl->dcr->rec->FileIndex),
+ jcr->sd_impl->dcr->rec->data_len);
- ok = jcr->impl->dcr->WriteRecord();
+ ok = jcr->sd_impl->dcr->WriteRecord();
if (!ok) {
Dmsg2(90, "Got WriteBlockToDev error on device %s. %s\n",
- jcr->impl->dcr->dev->print_name(),
- jcr->impl->dcr->dev->bstrerror());
+ jcr->sd_impl->dcr->dev->print_name(),
+ jcr->sd_impl->dcr->dev->bstrerror());
break;
}
- if (IsAttribute(jcr->impl->dcr->rec)) {
- file_currently_processed.AddAttribute(jcr->impl->dcr->rec);
+ if (IsAttribute(jcr->sd_impl->dcr->rec)) {
+ file_currently_processed.AddAttribute(jcr->sd_impl->dcr->rec);
}
if (AttributesAreSpooled(jcr)) {
SaveFullyProcessedFiles(jcr, processed_files);
} else {
- if (current_block_number != jcr->impl->dcr->block->BlockNumber) {
- current_block_number = jcr->impl->dcr->block->BlockNumber;
+ if (current_block_number != jcr->sd_impl->dcr->block->BlockNumber) {
+ current_block_number = jcr->sd_impl->dcr->block->BlockNumber;
SaveFullyProcessedFiles(jcr, processed_files);
}
if (me->checkpoint_interval) {
- if (jcr->impl->dcr->VolMediaId != current_volumeid) {
+ if (jcr->sd_impl->dcr->VolMediaId != current_volumeid) {
Jmsg0(jcr, M_INFO, 0, _("Volume changed, doing checkpoint:\n"));
DoBackupCheckpoint(jcr);
- current_volumeid = jcr->impl->dcr->VolMediaId;
+ current_volumeid = jcr->sd_impl->dcr->VolMediaId;
} else {
next_checkpoint_time = DoTimedCheckpoint(jcr, next_checkpoint_time,
me->checkpoint_interval);
@@ -387,7 +389,7 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what)
Dmsg2(650, "End read loop with %s. Stat=%d\n", what, n);
// Restore the original data pointer.
- jcr->impl->dcr->rec->data = rec_data;
+ jcr->sd_impl->dcr->rec->data = rec_data;
if (bs->IsError()) {
if (!jcr->IsJobCanceled()) {
@@ -422,7 +424,7 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what)
* if we are at the end of the tape or we got a fatal I/O error.
*/
if (ok || dev->CanWrite()) {
- if (!WriteSessionLabel(jcr->impl->dcr, EOS_LABEL)) {
+ if (!WriteSessionLabel(jcr->sd_impl->dcr, EOS_LABEL)) {
// Print only if ok and not cancelled to avoid spurious messages
if (ok && !jcr->IsJobCanceled()) {
Jmsg1(jcr, M_FATAL, 0, _("Error writing end session label. ERR=%s\n"),
@@ -435,7 +437,7 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what)
Dmsg0(90, "back from write_end_session_label()\n");
// Flush out final partial block of this session
- if (!jcr->impl->dcr->WriteBlockToDevice()) {
+ if (!jcr->sd_impl->dcr->WriteBlockToDevice()) {
// Print only if ok and not cancelled to avoid spurious messages
if (ok && !jcr->IsJobCanceled()) {
Jmsg2(jcr, M_FATAL, 0, _("Fatal append error on device %s: ERR=%s\n"),
@@ -455,14 +457,14 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what)
}
if (!ok && !jcr->is_JobStatus(JS_Incomplete)) {
- DiscardDataSpool(jcr->impl->dcr);
+ DiscardDataSpool(jcr->sd_impl->dcr);
} else {
// Note: if commit is OK, the device will remain blocked
- CommitDataSpool(jcr->impl->dcr);
+ CommitDataSpool(jcr->sd_impl->dcr);
}
// Release the device -- and send final Vol info to DIR and unlock it.
- ReleaseDevice(jcr->impl->dcr);
+ ReleaseDevice(jcr->sd_impl->dcr);
/*
* Don't use time_t for job_elapsed as time_t can be 32 or 64 bits,
@@ -491,11 +493,11 @@ bool DoAppendData(JobControlRecord* jcr, BareosSocket* bs, const char* what)
// Send attributes and digest to Director for Catalog
bool SendAttrsToDir(JobControlRecord* jcr, DeviceRecord* rec)
{
- if (!jcr->impl->no_attributes) {
+ if (!jcr->sd_impl->no_attributes) {
BareosSocket* dir = jcr->dir_bsock;
if (AttributesAreSpooled(jcr)) { dir->SetSpooling(); }
Dmsg0(850, "Send attributes to dir.\n");
- if (!jcr->impl->dcr->DirUpdateFileAttributes(rec)) {
+ if (!jcr->sd_impl->dcr->DirUpdateFileAttributes(rec)) {
Jmsg(jcr, M_FATAL, 0, _("Error updating file attributes. ERR=%s\n"),
dir->bstrerror());
dir->ClearSpooling();
diff --git a/core/src/stored/authenticate.cc b/core/src/stored/authenticate.cc
index edf0473a6..0c5bed967 100644
--- a/core/src/stored/authenticate.cc
+++ b/core/src/stored/authenticate.cc
@@ -2,7 +2,7 @@
BAREOSĀ® - Backup Archiving REcovery Open Sourced
Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
- Copyright (C) 2013-2019 Bareos GmbH & Co. KG
+ Copyright (C) 2013-2022 Bareos GmbH & Co. KG
This program is Free Software; you can redistribute it and/or
modify it under the terms of version three of the GNU Affero General Public
@@ -28,7 +28,7 @@
#include "include/bareos.h"
#include "stored/stored.h"
#include "stored/stored_globals.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "lib/parse_conf.h"
#include "lib/bsock.h"
#include "lib/bnet_network_dump.h"
@@ -85,7 +85,7 @@ bool AuthenticateDirector(JobControlRecord* jcr)
UnbashSpaces(dirname);
director = (DirectorResource*)my_config->GetResWithName(R_DIRECTOR, dirname);
- jcr->impl->director = director;
+ jcr->sd_impl->director = director;
if (!director) {
Dmsg2(debuglevel, "Connection from unknown Director %s at %s rejected.\n",
diff --git a/core/src/stored/bcopy.cc b/core/src/stored/bcopy.cc
index d6d610587..3ebfe9e23 100644
--- a/core/src/stored/bcopy.cc
+++ b/core/src/stored/bcopy.cc
@@ -33,7 +33,7 @@
#include "lib/crypto_cache.h"
#include "stored/acquire.h"
#include "stored/butil.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/label.h"
#include "stored/mount.h"
#include "stored/read_record.h"
@@ -195,9 +195,9 @@ int main(int argc, char* argv[])
inputVolumes, true); /* read device */
if (!in_jcr) { exit(1); }
- in_jcr->impl->ignore_label_errors = ignore_label_errors;
+ in_jcr->sd_impl->ignore_label_errors = ignore_label_errors;
- in_dev = in_jcr->impl->dcr->dev;
+ in_dev = in_jcr->sd_impl->dcr->dev;
if (!in_dev) { exit(1); }
// Setup output device for writing
@@ -208,29 +208,29 @@ int main(int argc, char* argv[])
outputVolumes, false); /* write device */
if (!out_jcr) { exit(1); }
- out_dev = out_jcr->impl->dcr->dev;
+ out_dev = out_jcr->sd_impl->dcr->dev;
if (!out_dev) { exit(1); }
Dmsg0(100, "About to acquire device for writing\n");
// For we must now acquire the device for writing
out_dev->rLock(false);
- if (!out_dev->open(out_jcr->impl->dcr, DeviceMode::OPEN_READ_WRITE)) {
+ if (!out_dev->open(out_jcr->sd_impl->dcr, DeviceMode::OPEN_READ_WRITE)) {
Emsg1(M_FATAL, 0, _("dev open failed: %s\n"), out_dev->errmsg);
out_dev->Unlock();
exit(1);
}
out_dev->Unlock();
- if (!AcquireDeviceForAppend(out_jcr->impl->dcr)) {
+ if (!AcquireDeviceForAppend(out_jcr->sd_impl->dcr)) {
FreeJcr(in_jcr);
exit(1);
}
- out_block = out_jcr->impl->dcr->block;
+ out_block = out_jcr->sd_impl->dcr->block;
- bool ok = ReadRecords(in_jcr->impl->dcr, RecordCb, MountNextReadVolume);
+ bool ok = ReadRecords(in_jcr->sd_impl->dcr, RecordCb, MountNextReadVolume);
if (ok || out_dev->CanWrite()) {
- if (!out_jcr->impl->dcr->WriteBlockToDevice()) {
+ if (!out_jcr->sd_impl->dcr->WriteBlockToDevice()) {
Pmsg0(000, _("Write of last block failed.\n"));
}
}
@@ -285,10 +285,10 @@ static bool RecordCb(DeviceControlRecord* in_dcr, DeviceRecord* rec)
/* Skipping record, because does not match BootStrapRecord filter */
return true;
}
- while (!WriteRecordToBlock(out_jcr->impl->dcr, rec)) {
+ while (!WriteRecordToBlock(out_jcr->sd_impl->dcr, rec)) {
Dmsg2(150, "!WriteRecordToBlock data_len=%d rem=%d\n", rec->data_len,
rec->remainder);
- if (!out_jcr->impl->dcr->WriteBlockToDevice()) {
+ if (!out_jcr->sd_impl->dcr->WriteBlockToDevice()) {
Dmsg2(90, "Got WriteBlockToDev error on device %s: ERR=%s\n",
out_dev->print_name(), out_dev->bstrerror());
Jmsg(out_jcr, M_FATAL, 0, _("Cannot fixup device error. %s\n"),
@@ -296,7 +296,7 @@ static bool RecordCb(DeviceControlRecord* in_dcr, DeviceRecord* rec)
return false;
}
}
- if (!out_jcr->impl->dcr->WriteBlockToDevice()) {
+ if (!out_jcr->sd_impl->dcr->WriteBlockToDevice()) {
Dmsg2(90, "Got WriteBlockToDev error on device %s: ERR=%s\n",
out_dev->print_name(), out_dev->bstrerror());
Jmsg(out_jcr, M_FATAL, 0, _("Cannot fixup device error. %s\n"),
@@ -321,10 +321,10 @@ static bool RecordCb(DeviceControlRecord* in_dcr, DeviceRecord* rec)
return true;
}
records++;
- while (!WriteRecordToBlock(out_jcr->impl->dcr, rec)) {
+ while (!WriteRecordToBlock(out_jcr->sd_impl->dcr, rec)) {
Dmsg2(150, "!WriteRecordToBlock data_len=%d rem=%d\n", rec->data_len,
rec->remainder);
- if (!out_jcr->impl->dcr->WriteBlockToDevice()) {
+ if (!out_jcr->sd_impl->dcr->WriteBlockToDevice()) {
Dmsg2(90, "Got WriteBlockToDev error on device %s: ERR=%s\n",
out_dev->print_name(), out_dev->bstrerror());
Jmsg(out_jcr, M_FATAL, 0, _("Cannot fixup device error. %s\n"),
diff --git a/core/src/stored/bextract.cc b/core/src/stored/bextract.cc
index 1017a27cb..95deeea38 100644
--- a/core/src/stored/bextract.cc
+++ b/core/src/stored/bextract.cc
@@ -33,7 +33,7 @@
#include "stored/acquire.h"
#include "stored/butil.h"
#include "stored/device_control_record.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/mount.h"
#include "stored/read_record.h"
#include "findlib/find.h"
@@ -396,9 +396,9 @@ static void DoExtract(char* devname,
jcr = SetupJcr("bextract", devname, bsr, director, dcr, VolumeName,
true); /* read device */
if (!jcr) { exit(1); }
- dev = jcr->impl->read_dcr->dev;
+ dev = jcr->sd_impl->read_dcr->dev;
if (!dev) { exit(1); }
- dcr = jcr->impl->read_dcr;
+ dcr = jcr->sd_impl->read_dcr;
// Make sure where directory exists and that it is a directory
if (stat(where, &statp) < 0) {
@@ -445,7 +445,7 @@ static void DoExtract(char* devname,
CleanupCompression(jcr);
- CleanDevice(jcr->impl->dcr);
+ CleanDevice(jcr->sd_impl->dcr);
delete dev;
FreeDeviceControlRecord(dcr);
FreeJcr(jcr);
diff --git a/core/src/stored/bls.cc b/core/src/stored/bls.cc
index b2088afaa..ae65b4c82 100644
--- a/core/src/stored/bls.cc
+++ b/core/src/stored/bls.cc
@@ -35,7 +35,7 @@
#include "stored/acquire.h"
#include "stored/butil.h"
#include "stored/device_control_record.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/label.h"
#include "stored/match_bsr.h"
#include "stored/mount.h"
@@ -238,10 +238,10 @@ int main(int argc, char* argv[])
jcr = SetupJcr("bls", device.data(), bsr, director, dcr, VolumeNames,
true); /* read device */
if (!jcr) { exit(1); }
- jcr->impl->ignore_label_errors = ignore_label_errors;
- dev = jcr->impl->dcr->dev;
+ jcr->sd_impl->ignore_label_errors = ignore_label_errors;
+ dev = jcr->sd_impl->dcr->dev;
if (!dev) { exit(1); }
- dcr = jcr->impl->dcr;
+ dcr = jcr->sd_impl->dcr;
rec = new_record();
attr = new_attr(jcr);
/*
@@ -274,9 +274,9 @@ static void do_close(JobControlRecord* jcr)
{
FreeAttr(attr);
FreeRecord(rec);
- CleanDevice(jcr->impl->dcr);
+ CleanDevice(jcr->sd_impl->dcr);
delete dev;
- FreeDeviceControlRecord(jcr->impl->dcr);
+ FreeDeviceControlRecord(jcr->sd_impl->dcr);
FreeJcr(jcr);
}
diff --git a/core/src/stored/bscan.cc b/core/src/stored/bscan.cc
index 6c5fbb5da..cfa8b4dc9 100644
--- a/core/src/stored/bscan.cc
+++ b/core/src/stored/bscan.cc
@@ -31,7 +31,7 @@
#include "include/bareos.h"
#include "stored/stored.h"
#include "stored/stored_globals.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "lib/crypto_cache.h"
#include "findlib/find.h"
#include "cats/cats.h"
@@ -304,7 +304,7 @@ int main(int argc, char* argv[])
bjcr = SetupJcr("bscan", device_name.data(), bsr, director, dcr, volumes,
true);
if (!bjcr) { exit(1); }
- dev = bjcr->impl->read_dcr->dev;
+ dev = bjcr->sd_impl->read_dcr->dev;
if (showProgress) {
char ed1[50];
@@ -349,9 +349,9 @@ int main(int argc, char* argv[])
db->CloseDatabase(bjcr);
DbFlushBackends();
- CleanDevice(bjcr->impl->dcr);
+ CleanDevice(bjcr->sd_impl->dcr);
delete dev;
- FreeDeviceControlRecord(bjcr->impl->dcr);
+ FreeDeviceControlRecord(bjcr->sd_impl->dcr);
FreeJcr(bjcr);
return 0;
@@ -378,8 +378,8 @@ static bool BscanMountNextReadVolume(DeviceControlRecord* dcr)
mdcr->EndBlock = dcr->EndBlock;
mdcr->EndFile = dcr->EndFile;
mdcr->VolMediaId = dcr->VolMediaId;
- mjcr->impl->read_dcr->VolLastIndex = dcr->VolLastIndex;
- if (mjcr->impl->insert_jobmedia_records) {
+ mjcr->sd_impl->read_dcr->VolLastIndex = dcr->VolLastIndex;
+ if (mjcr->sd_impl->insert_jobmedia_records) {
if (!CreateJobmediaRecord(db, mjcr)) {
Pmsg2(000, _("Could not create JobMedia record for Volume=%s Job=%s\n"),
dev->getVolCatName(), mjcr->Job);
@@ -424,7 +424,7 @@ static void do_scan()
fr = fr_empty;
// Detach bscan's jcr as we are not a real Job on the tape
- ReadRecords(bjcr->impl->read_dcr, RecordCb, BscanMountNextReadVolume);
+ ReadRecords(bjcr->sd_impl->read_dcr, RecordCb, BscanMountNextReadVolume);
if (update_db) {
db->WriteBatchFileRecords(bjcr); /* used by bulk batch file insert */
@@ -621,7 +621,7 @@ static bool RecordCb(DeviceControlRecord* dcr, DeviceRecord* rec)
// Process label, if Job record exists don't update db
mjcr = CreateJobRecord(db, &jr, &label, rec);
- dcr = mjcr->impl->read_dcr;
+ dcr = mjcr->sd_impl->read_dcr;
update_db = save_update_db;
jr.PoolId = pr.PoolId;
@@ -630,8 +630,8 @@ static bool RecordCb(DeviceControlRecord* dcr, DeviceRecord* rec)
mjcr->client_name = GetPoolMemory(PM_FNAME);
PmStrcpy(mjcr->client_name, label.ClientName);
- mjcr->impl->fileset_name = GetPoolMemory(PM_FNAME);
- PmStrcpy(mjcr->impl->fileset_name, label.FileSetName);
+ mjcr->sd_impl->fileset_name = GetPoolMemory(PM_FNAME);
+ PmStrcpy(mjcr->sd_impl->fileset_name, label.FileSetName);
bstrncpy(dcr->pool_type, label.PoolType, sizeof(dcr->pool_type));
bstrncpy(dcr->pool_name, label.PoolName, sizeof(dcr->pool_name));
@@ -645,9 +645,9 @@ static bool RecordCb(DeviceControlRecord* dcr, DeviceRecord* rec)
jr.JobId);
db->SqlQuery(sql_buffer.c_str(), db_int64_handler, &jmr_count);
if (jmr_count.value > 0) {
- mjcr->impl->insert_jobmedia_records = false;
+ mjcr->sd_impl->insert_jobmedia_records = false;
} else {
- mjcr->impl->insert_jobmedia_records = true;
+ mjcr->sd_impl->insert_jobmedia_records = true;
}
if (rec->VolSessionId != jr.VolSessionId) {
@@ -702,11 +702,11 @@ static bool RecordCb(DeviceControlRecord* dcr, DeviceRecord* rec)
mjcr->setJobStatusWithPriorityCheck(JS_Terminated);
// Create JobMedia record
- mjcr->impl->read_dcr->VolLastIndex = dcr->VolLastIndex;
- if (mjcr->impl->insert_jobmedia_records) {
+ mjcr->sd_impl->read_dcr->VolLastIndex = dcr->VolLastIndex;
+ if (mjcr->sd_impl->insert_jobmedia_records) {
CreateJobmediaRecord(db, mjcr);
}
- FreeDeviceControlRecord(mjcr->impl->read_dcr);
+ FreeDeviceControlRecord(mjcr->sd_impl->read_dcr);
FreeJcr(mjcr);
}
break;
@@ -760,7 +760,7 @@ static bool RecordCb(DeviceControlRecord* dcr, DeviceRecord* rec)
}
return true;
}
- dcr = mjcr->impl->read_dcr;
+ dcr = mjcr->sd_impl->read_dcr;
if (dcr->VolFirstIndex == 0) { dcr->VolFirstIndex = block->FirstIndex; }
// File Attributes stream
@@ -993,19 +993,19 @@ static void BscanFreeJcr(JobControlRecord* jcr)
if (jcr->RestoreBootstrap) { free(jcr->RestoreBootstrap); }
- if (jcr->impl->dcr) {
- FreeDeviceControlRecord(jcr->impl->dcr);
- jcr->impl->dcr = nullptr;
+ if (jcr->sd_impl->dcr) {
+ FreeDeviceControlRecord(jcr->sd_impl->dcr);
+ jcr->sd_impl->dcr = nullptr;
}
- if (jcr->impl->read_dcr) {
- FreeDeviceControlRecord(jcr->impl->read_dcr);
- jcr->impl->read_dcr = nullptr;
+ if (jcr->sd_impl->read_dcr) {
+ FreeDeviceControlRecord(jcr->sd_impl->read_dcr);
+ jcr->sd_impl->read_dcr = nullptr;
}
- if (jcr->impl) {
- delete jcr->impl;
- jcr->impl = nullptr;
+ if (jcr->sd_impl) {
+ delete jcr->sd_impl;
+ jcr->sd_impl = nullptr;
}
Dmsg0(200, "End bscan FreeJcr\n");
@@ -1023,7 +1023,7 @@ static bool CreateFileAttributesRecord(BareosDb* db,
char* ap,
DeviceRecord* rec)
{
- DeviceControlRecord* dcr = mjcr->impl->read_dcr;
+ DeviceControlRecord* dcr = mjcr->sd_impl->read_dcr;
ar.fname = fname;
ar.link = lname;
ar.ClientId = mjcr->ClientId;
@@ -1331,7 +1331,7 @@ static bool UpdateJobRecord(BareosDb* db,
"Last Volume Bytes: %s\n"
"Bareos binary info: %s\n"
"Termination: %s\n\n"),
- edt, mjcr->JobId, mjcr->Job, mjcr->impl->fileset_name,
+ edt, mjcr->JobId, mjcr->Job, mjcr->sd_impl->fileset_name,
job_level_to_str(mjcr->getJobLevel()), mjcr->client_name, sdt, edt,
edit_uint64_with_commas(mjcr->JobFiles, ec1),
edit_uint64_with_commas(mjcr->JobBytes, ec2), mjcr->VolSessionId,
@@ -1346,7 +1346,7 @@ static bool UpdateJobRecord(BareosDb* db,
static bool CreateJobmediaRecord(BareosDb* db, JobControlRecord* mjcr)
{
JobMediaDbRecord jmr;
- DeviceControlRecord* dcr = mjcr->impl->read_dcr;
+ DeviceControlRecord* dcr = mjcr->sd_impl->read_dcr;
dcr->EndBlock = dev->EndBlock;
dcr->EndFile = dev->EndFile;
@@ -1424,7 +1424,7 @@ static JobControlRecord* create_jcr(JobDbRecord* jr,
* the JobId and the ClientId.
*/
jobjcr = new_jcr(BscanFreeJcr);
- jobjcr->impl = new JobControlRecordPrivate;
+ jobjcr->sd_impl = new StoredJcrImpl;
jobjcr->setJobType(jr->JobType);
jobjcr->setJobLevel(jr->JobLevel);
jobjcr->setJobStatus(jr->JobStatus);
@@ -1435,8 +1435,8 @@ static JobControlRecord* create_jcr(JobDbRecord* jr,
jobjcr->VolSessionId = rec->VolSessionId;
jobjcr->VolSessionTime = rec->VolSessionTime;
jobjcr->ClientId = jr->ClientId;
- jobjcr->impl->dcr = jobjcr->impl->read_dcr = new DeviceControlRecord;
- SetupNewDcrDevice(jobjcr, jobjcr->impl->dcr, dev, nullptr);
+ jobjcr->sd_impl->dcr = jobjcr->sd_impl->read_dcr = new DeviceControlRecord;
+ SetupNewDcrDevice(jobjcr, jobjcr->sd_impl->dcr, dev, nullptr);
return jobjcr;
}
diff --git a/core/src/stored/bsr.cc b/core/src/stored/bsr.cc
index 225cead36..2e39cdc1a 100644
--- a/core/src/stored/bsr.cc
+++ b/core/src/stored/bsr.cc
@@ -39,7 +39,7 @@
#include "include/bareos.h"
#include "stored/bsr.h"
#include "stored/device_control_record.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/stored.h"
#include "include/jcr.h"
@@ -795,13 +795,13 @@ static VolumeList* new_restore_volume()
*/
static bool AddRestoreVolume(JobControlRecord* jcr, VolumeList* vol)
{
- VolumeList* next = jcr->impl->VolList;
+ VolumeList* next = jcr->sd_impl->VolList;
/* Add volume to volume manager's read list */
AddReadVolume(jcr, vol->VolumeName);
- if (!next) { /* list empty ? */
- jcr->impl->VolList = vol; /* yes, add volume */
+ if (!next) { /* list empty ? */
+ jcr->sd_impl->VolList = vol; /* yes, add volume */
} else {
/* Loop through all but last */
for (; next->next; next = next->next) {
@@ -835,10 +835,10 @@ void CreateRestoreVolumeList(JobControlRecord* jcr)
VolumeList* vol;
// Build a list of volumes to be processed
- jcr->impl->NumReadVolumes = 0;
- jcr->impl->CurReadVolume = 0;
- if (jcr->impl->read_session.bsr) {
- BootStrapRecord* bsr = jcr->impl->read_session.bsr;
+ jcr->sd_impl->NumReadVolumes = 0;
+ jcr->sd_impl->CurReadVolume = 0;
+ if (jcr->sd_impl->read_session.bsr) {
+ BootStrapRecord* bsr = jcr->sd_impl->read_session.bsr;
if (!bsr->volume || !bsr->volume->VolumeName[0]) { return; }
for (; bsr; bsr = bsr->next) {
BsrVolume* bsrvol;
@@ -858,7 +858,7 @@ void CreateRestoreVolumeList(JobControlRecord* jcr)
vol->Slot = bsrvol->Slot;
vol->start_file = sfile;
if (AddRestoreVolume(jcr, vol)) {
- jcr->impl->NumReadVolumes++;
+ jcr->sd_impl->NumReadVolumes++;
Dmsg2(400, "Added volume=%s mediatype=%s\n", vol->VolumeName,
vol->MediaType);
} else {
@@ -870,15 +870,15 @@ void CreateRestoreVolumeList(JobControlRecord* jcr)
}
} else {
/* This is the old way -- deprecated */
- for (p = jcr->impl->dcr->VolumeName; p && *p;) {
+ for (p = jcr->sd_impl->dcr->VolumeName; p && *p;) {
n = strchr(p, '|'); /* volume name separator */
if (n) { *n++ = 0; /* Terminate name */ }
vol = new_restore_volume();
bstrncpy(vol->VolumeName, p, sizeof(vol->VolumeName));
- bstrncpy(vol->MediaType, jcr->impl->dcr->media_type,
+ bstrncpy(vol->MediaType, jcr->sd_impl->dcr->media_type,
sizeof(vol->MediaType));
if (AddRestoreVolume(jcr, vol)) {
- jcr->impl->NumReadVolumes++;
+ jcr->sd_impl->NumReadVolumes++;
} else {
free((char*)vol);
}
@@ -889,7 +889,7 @@ void CreateRestoreVolumeList(JobControlRecord* jcr)
void FreeRestoreVolumeList(JobControlRecord* jcr)
{
- VolumeList* vol = jcr->impl->VolList;
+ VolumeList* vol = jcr->sd_impl->VolList;
VolumeList* tmp;
for (; vol;) {
@@ -898,7 +898,7 @@ void FreeRestoreVolumeList(JobControlRecord* jcr)
free(vol);
vol = tmp;
}
- jcr->impl->VolList = NULL;
+ jcr->sd_impl->VolList = NULL;
}
} /* namespace storagedaemon */
diff --git a/core/src/stored/btape.cc b/core/src/stored/btape.cc
index 39ae5ca7c..382c12343 100644
--- a/core/src/stored/btape.cc
+++ b/core/src/stored/btape.cc
@@ -42,7 +42,7 @@
#include "stored/btape_device_control_record.h"
#include "stored/butil.h"
#include "stored/device.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/label.h"
#include "stored/read_record.h"
#include "stored/sd_backends.h"
@@ -322,7 +322,7 @@ int main(int margc, char* margv[])
false); /* write device */
if (!jcr) { exit(1); }
- dev = jcr->impl->dcr->dev;
+ dev = jcr->sd_impl->dcr->dev;
if (!dev) { exit(1); }
if (!dev->IsTape()) {
@@ -2145,7 +2145,7 @@ static void fillcmd()
exit_code = 1;
return;
}
- block = jcr->impl->dcr->block;
+ block = jcr->sd_impl->dcr->block;
Dmsg0(100, "Just after AcquireDeviceForAppend\n");
// Write Begin Session Record
@@ -2165,7 +2165,7 @@ static void fillcmd()
FillBuffer(FILL_RANDOM, rec.data, rec.data_len);
// Generate data as if from File daemon, write to device
- jcr->impl->dcr->VolFirstIndex = 0;
+ jcr->sd_impl->dcr->VolFirstIndex = 0;
time(&jcr->run_time); /* start counting time for rates */
bstrftime(buf1, sizeof(buf1), jcr->run_time, "%H:%M:%S");
@@ -2309,15 +2309,17 @@ static void fillcmd()
Pmsg3(0,
_("\n\n%s Done filling tape at %d:%d. Now beginning re-read of "
"tape ...\n"),
- buf1, jcr->impl->dcr->dev->file, jcr->impl->dcr->dev->block_num);
+ buf1, jcr->sd_impl->dcr->dev->file,
+ jcr->sd_impl->dcr->dev->block_num);
} else {
Pmsg3(0,
_("\n\n%s Done filling tapes at %d:%d. Now beginning re-read of "
"first tape ...\n"),
- buf1, jcr->impl->dcr->dev->file, jcr->impl->dcr->dev->block_num);
+ buf1, jcr->sd_impl->dcr->dev->file,
+ jcr->sd_impl->dcr->dev->block_num);
}
- jcr->impl->dcr->block = block;
+ jcr->sd_impl->dcr->block = block;
if (!do_unfill()) {
Pmsg0(000, _("do_unfill failed.\n"));
exit_code = 1;
@@ -2410,13 +2412,13 @@ static bool do_unfill()
last_block = last_block1;
FreeRestoreVolumeList(jcr);
- jcr->impl->read_session.bsr = nullptr;
+ jcr->sd_impl->read_session.bsr = nullptr;
bstrncpy(dcr->VolumeName, "TestVolume1|TestVolume2", sizeof(dcr->VolumeName));
CreateRestoreVolumeList(jcr);
- if (jcr->impl->VolList != nullptr) {
- jcr->impl->VolList->Slot = 1;
- if (jcr->impl->VolList->next != nullptr) {
- jcr->impl->VolList->next->Slot = 2;
+ if (jcr->sd_impl->VolList != nullptr) {
+ jcr->sd_impl->VolList->Slot = 1;
+ if (jcr->sd_impl->VolList->next != nullptr) {
+ jcr->sd_impl->VolList->next->Slot = 2;
}
}
@@ -2437,7 +2439,7 @@ static bool do_unfill()
dev->close(dcr);
dev->num_writers = 0;
- jcr->impl->dcr->clear_will_write();
+ jcr->sd_impl->dcr->clear_will_write();
if (!AcquireDeviceForRead(dcr)) {
Pmsg1(-1, "%s", dev->errmsg);
@@ -2663,7 +2665,7 @@ static int FlushBlock(DeviceBlock* block)
stop = -1; /* stop, but do simplified test */
} else {
/* Full test in progress */
- if (!FixupDeviceBlockWriteError(jcr->impl->dcr)) {
+ if (!FixupDeviceBlockWriteError(jcr->sd_impl->dcr)) {
Pmsg1(000, _("Cannot fixup device error. %s\n"), dev->bstrerror());
ok = false;
dev->Unlock();
@@ -3007,7 +3009,7 @@ static bool MyMountNextReadVolume(DeviceControlRecord* dcr)
static void SetVolumeName(const char* VolName, int volnum)
{
- DeviceControlRecord* dcr = jcr->impl->dcr;
+ DeviceControlRecord* dcr = jcr->sd_impl->dcr;
volumename = VolName;
vol_num = volnum;
dev->setVolCatName(VolName);
diff --git a/core/src/stored/butil.cc b/core/src/stored/butil.cc
index d8bea286a..74f6311e2 100644
--- a/core/src/stored/butil.cc
+++ b/core/src/stored/butil.cc
@@ -39,7 +39,7 @@
#include "stored/device.h"
#include "stored/device_control_record.h"
#include "stored/bsr.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "lib/parse_bsr.h"
#include "lib/parse_conf.h"
#include "include/jcr.h"
@@ -62,28 +62,28 @@ JobControlRecord* SetupDummyJcr(const char* name,
DirectorResource* director)
{
JobControlRecord* jcr = new_jcr(MyFreeJcr);
- jcr->impl = new JobControlRecordPrivate;
+ jcr->sd_impl = new StoredJcrImpl;
- jcr->impl->read_session.bsr = bsr;
- jcr->impl->director = director;
+ jcr->sd_impl->read_session.bsr = bsr;
+ jcr->sd_impl->director = director;
jcr->VolSessionId = 1;
jcr->VolSessionTime = (uint32_t)time(NULL);
- jcr->impl->NumReadVolumes = 0;
- jcr->impl->NumWriteVolumes = 0;
+ jcr->sd_impl->NumReadVolumes = 0;
+ jcr->sd_impl->NumWriteVolumes = 0;
jcr->JobId = 0;
jcr->setJobType(JT_CONSOLE);
jcr->setJobLevel(L_FULL);
jcr->setJobStatus(JS_Terminated);
jcr->where = strdup("");
- jcr->impl->job_name = GetPoolMemory(PM_FNAME);
- PmStrcpy(jcr->impl->job_name, "Dummy.Job.Name");
+ jcr->sd_impl->job_name = GetPoolMemory(PM_FNAME);
+ PmStrcpy(jcr->sd_impl->job_name, "Dummy.Job.Name");
jcr->client_name = GetPoolMemory(PM_FNAME);
PmStrcpy(jcr->client_name, "Dummy.Client.Name");
bstrncpy(jcr->Job, name, sizeof(jcr->Job));
- jcr->impl->fileset_name = GetPoolMemory(PM_FNAME);
- PmStrcpy(jcr->impl->fileset_name, "Dummy.fileset.name");
- jcr->impl->fileset_md5 = GetPoolMemory(PM_FNAME);
- PmStrcpy(jcr->impl->fileset_md5, "Dummy.fileset.md5");
+ jcr->sd_impl->fileset_name = GetPoolMemory(PM_FNAME);
+ PmStrcpy(jcr->sd_impl->fileset_name, "Dummy.fileset.name");
+ jcr->sd_impl->fileset_md5 = GetPoolMemory(PM_FNAME);
+ PmStrcpy(jcr->sd_impl->fileset_md5, "Dummy.fileset.md5");
NewPlugins(jcr); /* instantiate plugins */
@@ -153,7 +153,7 @@ static bool setup_to_access_device(DeviceControlRecord* dcr,
} else {
VolName[0] = 0;
}
- if (!jcr->impl->read_session.bsr && VolName[0] == 0) {
+ if (!jcr->sd_impl->read_session.bsr && VolName[0] == 0) {
if (!bstrncmp(dev_name, "/dev/", 5)) {
/* Try stripping file part */
p = dev_name + strlen(dev_name);
@@ -178,7 +178,7 @@ static bool setup_to_access_device(DeviceControlRecord* dcr,
return false;
}
device_resource->dev = dev;
- jcr->impl->dcr = dcr;
+ jcr->sd_impl->dcr = dcr;
SetupNewDcrDevice(jcr, dcr, dev, NULL);
if (!readonly) { dcr->SetWillWrite(); }
@@ -193,7 +193,7 @@ static bool setup_to_access_device(DeviceControlRecord* dcr,
if (readonly) { /* read only access? */
Dmsg0(100, "Acquire device for read\n");
if (!AcquireDeviceForRead(dcr)) { return false; }
- jcr->impl->read_dcr = dcr;
+ jcr->sd_impl->read_dcr = dcr;
} else {
if (!FirstOpenDevice(dcr)) {
Jmsg1(jcr, M_FATAL, 0, _("Cannot open %s\n"), dev->print_name());
@@ -210,9 +210,9 @@ static bool setup_to_access_device(DeviceControlRecord* dcr,
*/
static void MyFreeJcr(JobControlRecord* jcr)
{
- if (jcr->impl->job_name) {
- FreePoolMemory(jcr->impl->job_name);
- jcr->impl->job_name = NULL;
+ if (jcr->sd_impl->job_name) {
+ FreePoolMemory(jcr->sd_impl->job_name);
+ jcr->sd_impl->job_name = NULL;
}
if (jcr->client_name) {
@@ -220,14 +220,14 @@ static void MyFreeJcr(JobControlRecord* jcr)
jcr->client_name = NULL;
}
- if (jcr->impl->fileset_name) {
- FreePoolMemory(jcr->impl->fileset_name);
- jcr->impl->fileset_name = NULL;
+ if (jcr->sd_impl->fileset_name) {
+ FreePoolMemory(jcr->sd_impl->fileset_name);
+ jcr->sd_impl->fileset_name = NULL;
}
- if (jcr->impl->fileset_md5) {
- FreePoolMemory(jcr->impl->fileset_md5);
- jcr->impl->fileset_md5 = NULL;
+ if (jcr->sd_impl->fileset_md5) {
+ FreePoolMemory(jcr->sd_impl->fileset_md5);
+ jcr->sd_impl->fileset_md5 = NULL;
}
if (jcr->comment) {
@@ -235,16 +235,16 @@ static void MyFreeJcr(JobControlRecord* jcr)
jcr->comment = NULL;
}
- if (jcr->impl->VolList) { FreeRestoreVolumeList(jcr); }
+ if (jcr->sd_impl->VolList) { FreeRestoreVolumeList(jcr); }
- if (jcr->impl->dcr) {
- FreeDeviceControlRecord(jcr->impl->dcr);
- jcr->impl->dcr = NULL;
+ if (jcr->sd_impl->dcr) {
+ FreeDeviceControlRecord(jcr->sd_impl->dcr);
+ jcr->sd_impl->dcr = NULL;
}
- if (jcr->impl) {
- delete jcr->impl;
- jcr->impl = nullptr;
+ if (jcr->sd_impl) {
+ delete jcr->sd_impl;
+ jcr->sd_impl = nullptr;
}
return;
diff --git a/core/src/stored/dev.cc b/core/src/stored/dev.cc
index f5374c1ca..5070c0bec 100644
--- a/core/src/stored/dev.cc
+++ b/core/src/stored/dev.cc
@@ -76,7 +76,7 @@
#include "stored/autochanger.h"
#include "stored/bsr.h"
#include "stored/device_control_record.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/sd_backends.h"
#include "lib/btimers.h"
#include "include/jcr.h"
@@ -311,27 +311,29 @@ void InitDeviceWaitTimers(DeviceControlRecord* dcr)
dev->num_wait = 0;
dev->poll = false;
- jcr->impl->device_wait_times.min_wait = 60 * 60;
- jcr->impl->device_wait_times.max_wait = 24 * 60 * 60;
- jcr->impl->device_wait_times.max_num_wait
+ jcr->sd_impl->device_wait_times.min_wait = 60 * 60;
+ jcr->sd_impl->device_wait_times.max_wait = 24 * 60 * 60;
+ jcr->sd_impl->device_wait_times.max_num_wait
= 9; /* 5 waits =~ 1 day, then 1 day at a time */
- jcr->impl->device_wait_times.wait_sec = jcr->impl->device_wait_times.min_wait;
- jcr->impl->device_wait_times.rem_wait_sec
- = jcr->impl->device_wait_times.wait_sec;
- jcr->impl->device_wait_times.num_wait = 0;
+ jcr->sd_impl->device_wait_times.wait_sec
+ = jcr->sd_impl->device_wait_times.min_wait;
+ jcr->sd_impl->device_wait_times.rem_wait_sec
+ = jcr->sd_impl->device_wait_times.wait_sec;
+ jcr->sd_impl->device_wait_times.num_wait = 0;
}
void InitJcrDeviceWaitTimers(JobControlRecord* jcr)
{
/* ******FIXME******* put these on config variables */
- jcr->impl->device_wait_times.min_wait = 60 * 60;
- jcr->impl->device_wait_times.max_wait = 24 * 60 * 60;
- jcr->impl->device_wait_times.max_num_wait
+ jcr->sd_impl->device_wait_times.min_wait = 60 * 60;
+ jcr->sd_impl->device_wait_times.max_wait = 24 * 60 * 60;
+ jcr->sd_impl->device_wait_times.max_num_wait
= 9; /* 5 waits =~ 1 day, then 1 day at a time */
- jcr->impl->device_wait_times.wait_sec = jcr->impl->device_wait_times.min_wait;
- jcr->impl->device_wait_times.rem_wait_sec
- = jcr->impl->device_wait_times.wait_sec;
- jcr->impl->device_wait_times.num_wait = 0;
+ jcr->sd_impl->device_wait_times.wait_sec
+ = jcr->sd_impl->device_wait_times.min_wait;
+ jcr->sd_impl->device_wait_times.rem_wait_sec
+ = jcr->sd_impl->device_wait_times.wait_sec;
+ jcr->sd_impl->device_wait_times.num_wait = 0;
}
/**
diff --git a/core/src/stored/device.cc b/core/src/stored/device.cc
index a43f14fba..690d6ed94 100644
--- a/core/src/stored/device.cc
+++ b/core/src/stored/device.cc
@@ -3,7 +3,7 @@
Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
Copyright (C) 2011-2012 Planets Communications B.V.
- Copyright (C) 2013-2020 Bareos GmbH & Co. KG
+ Copyright (C) 2013-2022 Bareos GmbH & Co. KG
This program is Free Software; you can redistribute it and/or
modify it under the terms of version three of the GNU Affero General Public
@@ -52,7 +52,7 @@
#include "stored/stored.h" /* pull in Storage Daemon headers */
#include "stored/device.h"
#include "stored/device_control_record.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/match_bsr.h"
#include "lib/edit.h"
#include "include/jcr.h"
@@ -167,7 +167,7 @@ bool FixupDeviceBlockWriteError(DeviceControlRecord* dcr, int retries)
}
/* Clear NewVol now because DirGetVolumeInfo() already done */
- jcr->impl->dcr->NewVol = false;
+ jcr->sd_impl->dcr->NewVol = false;
SetNewVolumeParameters(dcr);
jcr->run_time += time(NULL) - wait_time; /* correct run time for mount wait */
@@ -225,7 +225,7 @@ void SetNewVolumeParameters(DeviceControlRecord* dcr)
Jmsg1(jcr, M_ERROR, 0, "%s", jcr->errmsg);
}
SetNewFileParameters(dcr);
- jcr->impl->NumWriteVolumes++;
+ jcr->sd_impl->NumWriteVolumes++;
dcr->NewVol = false;
}
@@ -305,9 +305,9 @@ BootStrapRecord* PositionDeviceToFirstFile(JobControlRecord* jcr,
* Now find and position to first file and block
* on this tape.
*/
- if (jcr->impl->read_session.bsr) {
- jcr->impl->read_session.bsr->Reposition = true;
- bsr = find_next_bsr(jcr->impl->read_session.bsr, dev);
+ if (jcr->sd_impl->read_session.bsr) {
+ jcr->sd_impl->read_session.bsr->Reposition = true;
+ bsr = find_next_bsr(jcr->sd_impl->read_session.bsr, dev);
if (GetBsrStartAddr(bsr, &file, &block) > 0) {
Jmsg(jcr, M_INFO, 0,
_("Forward spacing Volume \"%s\" to file:block %u:%u.\n"),
@@ -331,15 +331,15 @@ bool TryDeviceRepositioning(JobControlRecord* jcr,
BootStrapRecord* bsr;
Device* dev = dcr->dev;
- bsr = find_next_bsr(jcr->impl->read_session.bsr, dev);
- if (bsr == NULL && jcr->impl->read_session.bsr->mount_next_volume) {
+ bsr = find_next_bsr(jcr->sd_impl->read_session.bsr, dev);
+ if (bsr == NULL && jcr->sd_impl->read_session.bsr->mount_next_volume) {
Dmsg0(500, "Would mount next volume here\n");
Dmsg2(500, "Current position (file:block) %u:%u\n", dev->file,
dev->block_num);
- jcr->impl->read_session.bsr->mount_next_volume = false;
+ jcr->sd_impl->read_session.bsr->mount_next_volume = false;
if (!dev->AtEot()) {
/* Set EOT flag to force mount of next Volume */
- jcr->impl->read_session.mount_next_volume = true;
+ jcr->sd_impl->read_session.mount_next_volume = true;
dev->SetEot();
}
rec->Block = 0;
diff --git a/core/src/stored/dir_cmd.cc b/core/src/stored/dir_cmd.cc
index 3a91ad245..2047de07e 100644
--- a/core/src/stored/dir_cmd.cc
+++ b/core/src/stored/dir_cmd.cc
@@ -50,7 +50,7 @@
#include "stored/device_control_record.h"
#include "stored/sd_device_control_record.h"
#include "stored/fd_cmds.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/job.h"
#include "stored/label.h"
#include "stored/ndmp_tape.h"
@@ -259,7 +259,7 @@ void* HandleDirectorConnection(BareosSocket* dir)
jcr->dir_bsock->SetJcr(jcr);
// Initialize Start Job condition variable
- errstat = pthread_cond_init(&jcr->impl->job_start_wait, NULL);
+ errstat = pthread_cond_init(&jcr->sd_impl->job_start_wait, NULL);
if (errstat != 0) {
BErrNo be;
Jmsg1(jcr, M_FATAL, 0,
@@ -269,7 +269,7 @@ void* HandleDirectorConnection(BareosSocket* dir)
}
// Initialize End Job condition variable
- errstat = pthread_cond_init(&jcr->impl->job_end_wait, NULL);
+ errstat = pthread_cond_init(&jcr->sd_impl->job_end_wait, NULL);
if (errstat != 0) {
BErrNo be;
Jmsg1(jcr, M_FATAL, 0, _("Unable to init job end cond variable: ERR=%s\n"),
@@ -302,7 +302,7 @@ void* HandleDirectorConnection(BareosSocket* dir)
found = false;
for (i = 0; cmds[i].cmd; i++) {
if (bstrncmp(cmds[i].cmd, dir->msg, strlen(cmds[i].cmd))) {
- if ((!cmds[i].monitoraccess) && (jcr->impl->director->monitor)) {
+ if ((!cmds[i].monitoraccess) && (jcr->sd_impl->director->monitor)) {
Dmsg1(100, "Command \"%s\" is invalid.\n", cmds[i].cmd);
dir->fsend(invalid_cmd);
dir->signal(BNET_EOD);
@@ -523,7 +523,8 @@ static bool CancelCmd(JobControlRecord* cjcr)
Dmsg2(800, "Cancel JobId=%d %p\n", jcr->JobId, jcr);
if (!jcr->authenticated
&& (oldStatus == JS_WaitFD || oldStatus == JS_WaitSD)) {
- pthread_cond_signal(&jcr->impl->job_start_wait); /* wake waiting thread */
+ pthread_cond_signal(
+ &jcr->sd_impl->job_start_wait); /* wake waiting thread */
}
if (jcr->file_bsock) {
@@ -533,23 +534,23 @@ static bool CancelCmd(JobControlRecord* cjcr)
} else {
if (oldStatus != JS_WaitSD) {
// Still waiting for FD to connect, release it
- pthread_cond_signal(&jcr->impl->job_start_wait); /* wake waiting job */
+ pthread_cond_signal(&jcr->sd_impl->job_start_wait); /* wake waiting job */
Dmsg2(800, "Signal FD connect jid=%d %p\n", jcr->JobId, jcr);
}
}
// If thread waiting on mount, wake him
- if (jcr->impl->dcr && jcr->impl->dcr->dev
- && jcr->impl->dcr->dev->waiting_for_mount()) {
- pthread_cond_broadcast(&jcr->impl->dcr->dev->wait_next_vol);
+ if (jcr->sd_impl->dcr && jcr->sd_impl->dcr->dev
+ && jcr->sd_impl->dcr->dev->waiting_for_mount()) {
+ pthread_cond_broadcast(&jcr->sd_impl->dcr->dev->wait_next_vol);
Dmsg1(100, "JobId=%u broadcast wait_device_release\n",
(uint32_t)jcr->JobId);
ReleaseDeviceCond();
}
- if (jcr->impl->read_dcr && jcr->impl->read_dcr->dev
- && jcr->impl->read_dcr->dev->waiting_for_mount()) {
- pthread_cond_broadcast(&jcr->impl->read_dcr->dev->wait_next_vol);
+ if (jcr->sd_impl->read_dcr && jcr->sd_impl->read_dcr->dev
+ && jcr->sd_impl->read_dcr->dev->waiting_for_mount()) {
+ pthread_cond_broadcast(&jcr->sd_impl->read_dcr->dev->wait_next_vol);
Dmsg1(100, "JobId=%u broadcast wait_device_release\n",
(uint32_t)jcr->JobId);
ReleaseDeviceCond();
@@ -573,7 +574,7 @@ static bool CancelCmd(JobControlRecord* cjcr)
}
}
- pthread_cond_signal(&jcr->impl->job_end_wait); /* wake waiting job */
+ pthread_cond_signal(&jcr->sd_impl->job_end_wait); /* wake waiting job */
jcr->MyThreadSendSignal(TIMEOUT_SIGNAL);
dir->fsend(_("3000 JobId=%ld Job=\"%s\" marked to be %s.\n"), jcr->JobId,
@@ -1319,14 +1320,14 @@ static inline bool GetBootstrapFile(JobControlRecord* jcr, BareosSocket* sock)
}
fclose(bs);
Dmsg0(10, "=== end bootstrap file ===\n");
- jcr->impl->read_session.bsr
+ jcr->sd_impl->read_session.bsr
= libbareos::parse_bsr(jcr, jcr->RestoreBootstrap);
- if (!jcr->impl->read_session.bsr) {
+ if (!jcr->sd_impl->read_session.bsr) {
Jmsg(jcr, M_FATAL, 0, _("Error parsing bootstrap file.\n"));
goto bail_out;
}
if (debug_level >= 10) {
- libbareos::DumpBsr(jcr->impl->read_session.bsr, true);
+ libbareos::DumpBsr(jcr->sd_impl->read_session.bsr, true);
}
/* If we got a bootstrap, we are reading, so create read volume list */
CreateRestoreVolumeList(jcr);
@@ -1654,8 +1655,8 @@ static bool ReplicateCmd(JobControlRecord* jcr)
storage_daemon_socket->SetSourceAddress(me->SDsrc_addr);
if (!jcr->max_bandwidth) {
- if (jcr->impl->director->max_bandwidth_per_job) {
- jcr->max_bandwidth = jcr->impl->director->max_bandwidth_per_job;
+ if (jcr->sd_impl->director->max_bandwidth_per_job) {
+ jcr->max_bandwidth = jcr->sd_impl->director->max_bandwidth_per_job;
} else if (me->max_bandwidth_per_job) {
jcr->max_bandwidth = me->max_bandwidth_per_job;
}
@@ -1710,7 +1711,7 @@ static bool ReplicateCmd(JobControlRecord* jcr)
connect_state(ReplicateCmdState::kAuthenticated);
Dmsg0(110, "Authenticated with SD.\n");
- jcr->impl->remote_replicate = true;
+ jcr->sd_impl->remote_replicate = true;
storage_daemon_socket.release(); /* jcr->store_bsock */
return dir->fsend(OK_replicate);
@@ -1823,10 +1824,10 @@ static bool PluginoptionsCmd(JobControlRecord* jcr)
}
UnbashSpaces(plugin_options);
- if (!jcr->impl->plugin_options) {
- jcr->impl->plugin_options = new alist<const char*>(10, owned_by_alist);
+ if (!jcr->sd_impl->plugin_options) {
+ jcr->sd_impl->plugin_options = new alist<const char*>(10, owned_by_alist);
}
- jcr->impl->plugin_options->append(strdup(plugin_options));
+ jcr->sd_impl->plugin_options->append(strdup(plugin_options));
// Send OK to Director
return dir->fsend(OKpluginoptions);
diff --git a/core/src/stored/fd_cmds.cc b/core/src/stored/fd_cmds.cc
index 917061b6d..f44a4bc64 100644
--- a/core/src/stored/fd_cmds.cc
+++ b/core/src/stored/fd_cmds.cc
@@ -38,7 +38,7 @@
#include "stored/authenticate.h"
#include "stored/device_control_record.h"
#include "stored/fd_cmds.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/read.h"
#include "stored/sd_stats.h"
#include "lib/bnet.h"
@@ -147,7 +147,7 @@ void* HandleFiledConnection(BareosSocket* fd, char* job_name)
UpdateJobStatistics(jcr, now);
}
- pthread_cond_signal(&jcr->impl->job_start_wait); /* wake waiting job */
+ pthread_cond_signal(&jcr->sd_impl->job_start_wait); /* wake waiting job */
FreeJcr(jcr);
return NULL;
@@ -250,7 +250,7 @@ static bool AppendDataCmd(JobControlRecord* jcr)
BareosSocket* fd = jcr->file_bsock;
Dmsg1(120, "Append data: %s", fd->msg);
- if (jcr->impl->session_opened) {
+ if (jcr->sd_impl->session_opened) {
Dmsg1(110, "<filed: %s", fd->msg);
jcr->setJobType(JT_BACKUP);
if (DoAppendData(jcr, fd, "FD")) {
@@ -272,7 +272,7 @@ static bool AppendEndSession(JobControlRecord* jcr)
BareosSocket* fd = jcr->file_bsock;
Dmsg1(120, "stored<filed: %s", fd->msg);
- if (!jcr->impl->session_opened) {
+ if (!jcr->sd_impl->session_opened) {
PmStrcpy(jcr->errmsg, _("Attempt to close non-open session.\n"));
fd->fsend(NOT_opened);
return false;
@@ -286,13 +286,13 @@ static bool AppendOpenSession(JobControlRecord* jcr)
BareosSocket* fd = jcr->file_bsock;
Dmsg1(120, "Append open session: %s", fd->msg);
- if (jcr->impl->session_opened) {
+ if (jcr->sd_impl->session_opened) {
PmStrcpy(jcr->errmsg, _("Attempt to open already open session.\n"));
fd->fsend(NO_open);
return false;
}
- jcr->impl->session_opened = true;
+ jcr->sd_impl->session_opened = true;
/* Send "Ticket" to File Daemon */
fd->fsend(OK_open, jcr->VolSessionId);
@@ -311,7 +311,7 @@ static bool AppendCloseSession(JobControlRecord* jcr)
BareosSocket* fd = jcr->file_bsock;
Dmsg1(120, "<filed: %s", fd->msg);
- if (!jcr->impl->session_opened) {
+ if (!jcr->sd_impl->session_opened) {
PmStrcpy(jcr->errmsg, _("Attempt to close non-open session.\n"));
fd->fsend(NOT_opened);
return false;
@@ -323,7 +323,7 @@ static bool AppendCloseSession(JobControlRecord* jcr)
fd->signal(BNET_EOD); /* send EOD to File daemon */
- jcr->impl->session_opened = false;
+ jcr->sd_impl->session_opened = false;
return true;
}
@@ -338,7 +338,7 @@ static bool ReadDataCmd(JobControlRecord* jcr)
BareosSocket* fd = jcr->file_bsock;
Dmsg1(120, "Read data: %s", fd->msg);
- if (jcr->impl->session_opened) {
+ if (jcr->sd_impl->session_opened) {
Dmsg1(120, "<filed: %s", fd->msg);
return DoReadData(jcr);
} else {
@@ -358,38 +358,38 @@ static bool ReadOpenSession(JobControlRecord* jcr)
BareosSocket* fd = jcr->file_bsock;
Dmsg1(120, "%s\n", fd->msg);
- if (jcr->impl->session_opened) {
+ if (jcr->sd_impl->session_opened) {
PmStrcpy(jcr->errmsg, _("Attempt to open read on non-open session.\n"));
fd->fsend(NO_open);
return false;
}
- if (sscanf(fd->msg, read_open, jcr->impl->read_dcr->VolumeName,
- &jcr->impl->read_session.read_VolSessionId,
- &jcr->impl->read_session.read_VolSessionTime,
- &jcr->impl->read_session.read_StartFile,
- &jcr->impl->read_session.read_EndFile,
- &jcr->impl->read_session.read_StartBlock,
- &jcr->impl->read_session.read_EndBlock)
+ if (sscanf(fd->msg, read_open, jcr->sd_impl->read_dcr->VolumeName,
+ &jcr->sd_impl->read_session.read_VolSessionId,
+ &jcr->sd_impl->read_session.read_VolSessionTime,
+ &jcr->sd_impl->read_session.read_StartFile,
+ &jcr->sd_impl->read_session.read_EndFile,
+ &jcr->sd_impl->read_session.read_StartBlock,
+ &jcr->sd_impl->read_session.read_EndBlock)
== 7) {
- if (jcr->impl->session_opened) {
+ if (jcr->sd_impl->session_opened) {
PmStrcpy(jcr->errmsg, _("Attempt to open read on non-open session.\n"));
fd->fsend(NOT_opened);
return false;
}
Dmsg4(100,
"ReadOpenSession got: JobId=%d Vol=%s VolSessId=%ld VolSessT=%ld\n",
- jcr->JobId, jcr->impl->read_dcr->VolumeName,
- jcr->impl->read_session.read_VolSessionId,
- jcr->impl->read_session.read_VolSessionTime);
+ jcr->JobId, jcr->sd_impl->read_dcr->VolumeName,
+ jcr->sd_impl->read_session.read_VolSessionId,
+ jcr->sd_impl->read_session.read_VolSessionTime);
Dmsg4(100, " StartF=%ld EndF=%ld StartB=%ld EndB=%ld\n",
- jcr->impl->read_session.read_StartFile,
- jcr->impl->read_session.read_EndFile,
- jcr->impl->read_session.read_StartBlock,
- jcr->impl->read_session.read_EndBlock);
+ jcr->sd_impl->read_session.read_StartFile,
+ jcr->sd_impl->read_session.read_EndFile,
+ jcr->sd_impl->read_session.read_StartBlock,
+ jcr->sd_impl->read_session.read_EndBlock);
}
- jcr->impl->session_opened = true;
+ jcr->sd_impl->session_opened = true;
jcr->setJobType(JT_RESTORE);
// Send "Ticket" to File Daemon
@@ -408,7 +408,7 @@ static bool ReadCloseSession(JobControlRecord* jcr)
BareosSocket* fd = jcr->file_bsock;
Dmsg1(120, "Read close session: %s\n", fd->msg);
- if (!jcr->impl->session_opened) {
+ if (!jcr->sd_impl->session_opened) {
fd->fsend(NOT_opened);
return false;
}
@@ -419,7 +419,7 @@ static bool ReadCloseSession(JobControlRecord* jcr)
fd->signal(BNET_EOD); /* send EOD to File daemon */
- jcr->impl->session_opened = false;
+ jcr->sd_impl->session_opened = false;
return true;
}
diff --git a/core/src/stored/job.cc b/core/src/stored/job.cc
index 623ca8aca..931c3b2a6 100644
--- a/core/src/stored/job.cc
+++ b/core/src/stored/job.cc
@@ -31,7 +31,7 @@
#include "stored/bsr.h"
#include "stored/acquire.h"
#include "stored/fd_cmds.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/ndmp_tape.h"
#include "stored/read_record.h"
#include "stored/stored_globals.h"
@@ -132,27 +132,27 @@ bool job_cmd(JobControlRecord* jcr)
}
bstrncpy(jcr->Job, job, sizeof(jcr->Job));
UnbashSpaces(job_name);
- jcr->impl->job_name = GetPoolMemory(PM_NAME);
- PmStrcpy(jcr->impl->job_name, job_name);
+ jcr->sd_impl->job_name = GetPoolMemory(PM_NAME);
+ PmStrcpy(jcr->sd_impl->job_name, job_name);
UnbashSpaces(client_name);
jcr->client_name = GetPoolMemory(PM_NAME);
PmStrcpy(jcr->client_name, client_name);
UnbashSpaces(fileset_name);
- jcr->impl->fileset_name = GetPoolMemory(PM_NAME);
- PmStrcpy(jcr->impl->fileset_name, fileset_name);
+ jcr->sd_impl->fileset_name = GetPoolMemory(PM_NAME);
+ PmStrcpy(jcr->sd_impl->fileset_name, fileset_name);
jcr->setJobType(JobType);
jcr->setJobLevel(level);
- jcr->impl->no_attributes = no_attributes;
- jcr->impl->spool_attributes = spool_attributes;
- jcr->impl->spool_data = spool_data;
- jcr->impl->spool_size = str_to_int64(spool_size);
- jcr->impl->fileset_md5 = GetPoolMemory(PM_NAME);
- PmStrcpy(jcr->impl->fileset_md5, fileset_md5);
- jcr->impl->PreferMountedVols = PreferMountedVols;
- jcr->impl->RemainingQuota = quota;
+ jcr->sd_impl->no_attributes = no_attributes;
+ jcr->sd_impl->spool_attributes = spool_attributes;
+ jcr->sd_impl->spool_data = spool_data;
+ jcr->sd_impl->spool_size = str_to_int64(spool_size);
+ jcr->sd_impl->fileset_md5 = GetPoolMemory(PM_NAME);
+ PmStrcpy(jcr->sd_impl->fileset_md5, fileset_md5);
+ jcr->sd_impl->PreferMountedVols = PreferMountedVols;
+ jcr->sd_impl->RemainingQuota = quota;
UnbashSpaces(backup_format);
- jcr->impl->backup_format = GetPoolMemory(PM_NAME);
- PmStrcpy(jcr->impl->backup_format, backup_format);
+ jcr->sd_impl->backup_format = GetPoolMemory(PM_NAME);
+ PmStrcpy(jcr->sd_impl->backup_format, backup_format);
jcr->authenticated = false;
Dmsg1(50, "Quota set as %llu\n", quota);
@@ -195,8 +195,8 @@ bool DoJobRun(JobControlRecord* jcr)
*/
lock_mutex(mutex);
while (!jcr->authenticated && !JobCanceled(jcr)) {
- errstat
- = pthread_cond_timedwait(&jcr->impl->job_start_wait, &mutex, &timeout);
+ errstat = pthread_cond_timedwait(&jcr->sd_impl->job_start_wait, &mutex,
+ &timeout);
if (errstat == ETIMEDOUT || errstat == EINVAL || errstat == EPERM) {
break;
}
@@ -222,7 +222,7 @@ bool DoJobRun(JobControlRecord* jcr)
*/
Dmsg2(800, "Wait for end job jid=%d %p\n", jcr->JobId, jcr);
lock_mutex(mutex);
- pthread_cond_wait(&jcr->impl->job_end_wait, &mutex);
+ pthread_cond_wait(&jcr->sd_impl->job_end_wait, &mutex);
unlock_mutex(mutex);
}
Dmsg2(800, "Done jid=%d %p\n", jcr->JobId, jcr);
@@ -287,7 +287,7 @@ bool nextRunCmd(JobControlRecord* jcr)
lock_mutex(mutex);
while (!jcr->authenticated && !JobCanceled(jcr)) {
- errstat = pthread_cond_timedwait(&jcr->impl->job_start_wait, &mutex,
+ errstat = pthread_cond_timedwait(&jcr->sd_impl->job_start_wait, &mutex,
&timeout);
if (errstat == ETIMEDOUT || errstat == EINVAL || errstat == EPERM) {
break;
@@ -311,7 +311,7 @@ bool nextRunCmd(JobControlRecord* jcr)
*/
Dmsg2(800, "Wait for end job jid=%d %p\n", jcr->JobId, jcr);
lock_mutex(mutex);
- pthread_cond_wait(&jcr->impl->job_end_wait, &mutex);
+ pthread_cond_wait(&jcr->sd_impl->job_end_wait, &mutex);
unlock_mutex(mutex);
}
Dmsg2(800, "Done jid=%d %p\n", jcr->JobId, jcr);
@@ -407,27 +407,27 @@ void StoredFreeJcr(JobControlRecord* jcr)
jcr->file_bsock = NULL;
}
- if (jcr->impl->job_name) { FreePoolMemory(jcr->impl->job_name); }
+ if (jcr->sd_impl->job_name) { FreePoolMemory(jcr->sd_impl->job_name); }
if (jcr->client_name) {
FreeMemory(jcr->client_name);
jcr->client_name = NULL;
}
- if (jcr->impl->fileset_name) { FreeMemory(jcr->impl->fileset_name); }
+ if (jcr->sd_impl->fileset_name) { FreeMemory(jcr->sd_impl->fileset_name); }
- if (jcr->impl->fileset_md5) { FreeMemory(jcr->impl->fileset_md5); }
+ if (jcr->sd_impl->fileset_md5) { FreeMemory(jcr->sd_impl->fileset_md5); }
- if (jcr->impl->backup_format) { FreeMemory(jcr->impl->backup_format); }
+ if (jcr->sd_impl->backup_format) { FreeMemory(jcr->sd_impl->backup_format); }
- if (jcr->impl->read_session.bsr) {
- libbareos::FreeBsr(jcr->impl->read_session.bsr);
- jcr->impl->read_session.bsr = NULL;
+ if (jcr->sd_impl->read_session.bsr) {
+ libbareos::FreeBsr(jcr->sd_impl->read_session.bsr);
+ jcr->sd_impl->read_session.bsr = NULL;
}
- if (jcr->impl->read_session.rctx) {
- FreeReadContext(jcr->impl->read_session.rctx);
- jcr->impl->read_session.rctx = NULL;
+ if (jcr->sd_impl->read_session.rctx) {
+ FreeReadContext(jcr->sd_impl->read_session.rctx);
+ jcr->sd_impl->read_session.rctx = NULL;
}
if (jcr->compress.deflate_buffer || jcr->compress.inflate_buffer) {
@@ -442,46 +442,48 @@ void StoredFreeJcr(JobControlRecord* jcr)
jcr->RestoreBootstrap = NULL;
}
- if (jcr->impl->next_dev || jcr->impl->prev_dev) {
+ if (jcr->sd_impl->next_dev || jcr->sd_impl->prev_dev) {
Emsg0(M_FATAL, 0, _("In FreeJcr(), but still attached to device!!!!\n"));
}
- pthread_cond_destroy(&jcr->impl->job_start_wait);
- pthread_cond_destroy(&jcr->impl->job_end_wait);
+ pthread_cond_destroy(&jcr->sd_impl->job_start_wait);
+ pthread_cond_destroy(&jcr->sd_impl->job_end_wait);
// Avoid a double free
- if (jcr->impl->dcr == jcr->impl->read_dcr) { jcr->impl->read_dcr = NULL; }
+ if (jcr->sd_impl->dcr == jcr->sd_impl->read_dcr) {
+ jcr->sd_impl->read_dcr = NULL;
+ }
- if (jcr->impl->dcr) {
- FreeDeviceControlRecord(jcr->impl->dcr);
- jcr->impl->dcr = NULL;
+ if (jcr->sd_impl->dcr) {
+ FreeDeviceControlRecord(jcr->sd_impl->dcr);
+ jcr->sd_impl->dcr = NULL;
}
- if (jcr->impl->read_dcr) {
- FreeDeviceControlRecord(jcr->impl->read_dcr);
- jcr->impl->read_dcr = NULL;
+ if (jcr->sd_impl->read_dcr) {
+ FreeDeviceControlRecord(jcr->sd_impl->read_dcr);
+ jcr->sd_impl->read_dcr = NULL;
}
- if (jcr->impl->plugin_options) { delete jcr->impl->plugin_options; }
+ if (jcr->sd_impl->plugin_options) { delete jcr->sd_impl->plugin_options; }
- if (jcr->impl->read_store) {
+ if (jcr->sd_impl->read_store) {
DirectorStorage* store = nullptr;
- foreach_alist (store, jcr->impl->read_store) {
+ foreach_alist (store, jcr->sd_impl->read_store) {
delete store->device;
delete store;
}
- delete jcr->impl->read_store;
- jcr->impl->read_store = NULL;
+ delete jcr->sd_impl->read_store;
+ jcr->sd_impl->read_store = NULL;
}
- if (jcr->impl->write_store) {
+ if (jcr->sd_impl->write_store) {
DirectorStorage* store = nullptr;
- foreach_alist (store, jcr->impl->write_store) {
+ foreach_alist (store, jcr->sd_impl->write_store) {
delete store->device;
delete store;
}
- delete jcr->impl->write_store;
- jcr->impl->write_store = NULL;
+ delete jcr->sd_impl->write_store;
+ jcr->sd_impl->write_store = NULL;
}
FreePlugins(jcr); /* release instantiated plugins */
@@ -492,9 +494,9 @@ void StoredFreeJcr(JobControlRecord* jcr)
GetFirstPortHostOrder(me->SDaddrs));
}
- if (jcr->impl) {
- delete jcr->impl;
- jcr->impl = nullptr;
+ if (jcr->sd_impl) {
+ delete jcr->sd_impl;
+ jcr->sd_impl = nullptr;
}
Dmsg0(200, "End stored FreeJcr\n");
@@ -505,7 +507,7 @@ void StoredFreeJcr(JobControlRecord* jcr)
JobControlRecord* NewStoredJcr()
{
JobControlRecord* jcr = new_jcr(StoredFreeJcr);
- jcr->impl = new JobControlRecordPrivate;
+ jcr->sd_impl = new StoredJcrImpl;
return jcr;
}
diff --git a/core/src/stored/label.cc b/core/src/stored/label.cc
index c2f6e1a80..141140cab 100644
--- a/core/src/stored/label.cc
+++ b/core/src/stored/label.cc
@@ -32,7 +32,7 @@
#include "stored/dev.h"
#include "stored/device.h"
#include "stored/device_control_record.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/label.h"
#include "lib/edit.h"
#include "include/jcr.h"
@@ -128,7 +128,7 @@ int ReadDevVolumeLabel(DeviceControlRecord* dcr)
Mmsg(jcr->errmsg,
_("Wrong Volume mounted on device %s: Wanted %s have %s\n"),
dcr->dev->print_name(), VolName, dcr->dev->VolHdr.VolumeName);
- if (!dcr->dev->poll && jcr->impl->label_errors++ > 100) {
+ if (!dcr->dev->poll && jcr->sd_impl->label_errors++ > 100) {
Jmsg(jcr, M_FATAL, 0, _("Too many tries: %s"), jcr->errmsg);
}
goto bail_out;
@@ -172,7 +172,7 @@ int ReadDevVolumeLabel(DeviceControlRecord* dcr)
if (!dcr->dev->IsVolumeToUnload()) { dcr->dev->ClearUnload(); }
if (!ok) {
- if (forge_on || jcr->impl->ignore_label_errors) {
+ if (forge_on || jcr->sd_impl->ignore_label_errors) {
dcr->dev->SetLabeled(); /* set has Bareos label */
Jmsg(jcr, M_ERROR, 0, "%s", jcr->errmsg);
goto ok_out;
@@ -206,7 +206,7 @@ int ReadDevVolumeLabel(DeviceControlRecord* dcr)
Mmsg(jcr->errmsg, _("Volume on %s has bad Bareos label type: %x\n"),
dcr->dev->print_name(), dcr->dev->VolHdr.LabelType);
Dmsg1(130, "%s", jcr->errmsg);
- if (!dcr->dev->poll && jcr->impl->label_errors++ > 100) {
+ if (!dcr->dev->poll && jcr->sd_impl->label_errors++ > 100) {
Jmsg(jcr, M_FATAL, 0, _("Too many tries: %s"), jcr->errmsg);
}
Dmsg0(150, "return VOL_LABEL_ERROR\n");
@@ -229,7 +229,7 @@ int ReadDevVolumeLabel(DeviceControlRecord* dcr)
* Cancel Job if too many label errors
* => we are in a loop
*/
- if (!dcr->dev->poll && jcr->impl->label_errors++ > 100) {
+ if (!dcr->dev->poll && jcr->sd_impl->label_errors++ > 100) {
Jmsg(jcr, M_FATAL, 0, "Too many tries: %s", jcr->errmsg);
}
Dmsg0(150, "return VOL_NAME_ERROR\n");
@@ -520,8 +520,8 @@ static void CreateVolumeLabelRecord(DeviceControlRecord* dcr,
rec->FileIndex = dev->VolHdr.LabelType;
rec->VolSessionId = jcr->VolSessionId;
rec->VolSessionTime = jcr->VolSessionTime;
- rec->Stream = jcr->impl->NumWriteVolumes;
- rec->maskedStream = jcr->impl->NumWriteVolumes;
+ rec->Stream = jcr->sd_impl->NumWriteVolumes;
+ rec->maskedStream = jcr->sd_impl->NumWriteVolumes;
Dmsg2(150, "Created Vol label rec: FI=%s len=%d\n",
FI_to_ascii(buf, rec->FileIndex), rec->data_len);
}
@@ -603,16 +603,16 @@ static void CreateSessionLabel(DeviceControlRecord* dcr,
SerString(dcr->pool_name);
SerString(dcr->pool_type);
- SerString(jcr->impl->job_name); /* base Job name */
+ SerString(jcr->sd_impl->job_name); /* base Job name */
SerString(jcr->client_name);
/* Added in VerNum 10 */
SerString(jcr->Job); /* Unique name of this Job */
- SerString(jcr->impl->fileset_name);
+ SerString(jcr->sd_impl->fileset_name);
ser_uint32(jcr->getJobType());
ser_uint32(jcr->getJobLevel());
/* Added in VerNum 11 */
- SerString(jcr->impl->fileset_md5);
+ SerString(jcr->sd_impl->fileset_md5);
if (label == EOS_LABEL) {
ser_uint32(jcr->JobFiles);
diff --git a/core/src/stored/mac.cc b/core/src/stored/mac.cc
index 52936d1a6..0d68bbb4f 100644
--- a/core/src/stored/mac.cc
+++ b/core/src/stored/mac.cc
@@ -35,7 +35,7 @@
#include "stored/append.h"
#include "stored/device.h"
#include "stored/device_control_record.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/label.h"
#include "stored/mount.h"
#include "stored/read_record.h"
@@ -113,7 +113,7 @@ static bool CloneRecordInternally(DeviceControlRecord* dcr, DeviceRecord* rec)
bool retval = false;
bool translated_record = false;
JobControlRecord* jcr = dcr->jcr;
- Device* dev = jcr->impl->dcr->dev;
+ Device* dev = jcr->sd_impl->dcr->dev;
char buf1[100], buf2[100];
/*
@@ -139,10 +139,10 @@ static bool CloneRecordInternally(DeviceControlRecord* dcr, DeviceRecord* rec)
if (jcr->is_JobType(JT_MIGRATE) || jcr->is_JobType(JT_COPY)) {
bstrncpy(jcr->Job, label->Job, sizeof(jcr->Job));
- PmStrcpy(jcr->impl->job_name, label->JobName);
+ PmStrcpy(jcr->sd_impl->job_name, label->JobName);
PmStrcpy(jcr->client_name, label->ClientName);
- PmStrcpy(jcr->impl->fileset_name, label->FileSetName);
- PmStrcpy(jcr->impl->fileset_md5, label->FileSetMD5);
+ PmStrcpy(jcr->sd_impl->fileset_name, label->FileSetName);
+ PmStrcpy(jcr->sd_impl->fileset_md5, label->FileSetMD5);
}
jcr->setJobType(label->JobType);
jcr->setJobLevel(label->JobLevel);
@@ -155,7 +155,7 @@ static bool CloneRecordInternally(DeviceControlRecord* dcr, DeviceRecord* rec)
jcr->start_time = jcr->sched_time;
/* write the SOS Label with the existing timestamp infos */
- if (!WriteSessionLabel(jcr->impl->dcr, SOS_LABEL)) {
+ if (!WriteSessionLabel(jcr->sd_impl->dcr, SOS_LABEL)) {
Jmsg1(jcr, M_FATAL, 0, _("Write session label failed. ERR=%s\n"),
dev->bstrerror());
jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
@@ -201,9 +201,10 @@ static bool CloneRecordInternally(DeviceControlRecord* dcr, DeviceRecord* rec)
stream_to_ascii(buf2, rec->Stream, rec->FileIndex), rec->data_len);
// Perform record translations.
- jcr->impl->dcr->before_rec = rec;
- jcr->impl->dcr->after_rec = NULL;
- if (GeneratePluginEvent(jcr, bSdEventWriteRecordTranslation, jcr->impl->dcr)
+ jcr->sd_impl->dcr->before_rec = rec;
+ jcr->sd_impl->dcr->after_rec = NULL;
+ if (GeneratePluginEvent(jcr, bSdEventWriteRecordTranslation,
+ jcr->sd_impl->dcr)
!= bRC_OK) {
goto bail_out;
}
@@ -214,17 +215,17 @@ static bool CloneRecordInternally(DeviceControlRecord* dcr, DeviceRecord* rec)
* taken place we just point the after_rec pointer to same DeviceRecord as in
* the before_rec pointer.
*/
- if (!jcr->impl->dcr->after_rec) {
- jcr->impl->dcr->after_rec = jcr->impl->dcr->before_rec;
+ if (!jcr->sd_impl->dcr->after_rec) {
+ jcr->sd_impl->dcr->after_rec = jcr->sd_impl->dcr->before_rec;
} else {
translated_record = true;
}
- while (!WriteRecordToBlock(jcr->impl->dcr, jcr->impl->dcr->after_rec)) {
+ while (!WriteRecordToBlock(jcr->sd_impl->dcr, jcr->sd_impl->dcr->after_rec)) {
Dmsg4(200, "!WriteRecordToBlock blkpos=%u:%u len=%d rem=%d\n", dev->file,
- dev->block_num, jcr->impl->dcr->after_rec->data_len,
- jcr->impl->dcr->after_rec->remainder);
- if (!jcr->impl->dcr->WriteBlockToDevice()) {
+ dev->block_num, jcr->sd_impl->dcr->after_rec->data_len,
+ jcr->sd_impl->dcr->after_rec->remainder);
+ if (!jcr->sd_impl->dcr->WriteBlockToDevice()) {
Dmsg2(90, "Got WriteBlockToDev error on device %s. %s\n",
dev->print_name(), dev->bstrerror());
Jmsg2(jcr, M_FATAL, 0, _("Fatal append error on device %s: ERR=%s\n"),
@@ -235,36 +236,36 @@ static bool CloneRecordInternally(DeviceControlRecord* dcr, DeviceRecord* rec)
}
// Restore packet
- jcr->impl->dcr->after_rec->VolSessionId
- = jcr->impl->dcr->after_rec->last_VolSessionId;
- jcr->impl->dcr->after_rec->VolSessionTime
- = jcr->impl->dcr->after_rec->last_VolSessionTime;
+ jcr->sd_impl->dcr->after_rec->VolSessionId
+ = jcr->sd_impl->dcr->after_rec->last_VolSessionId;
+ jcr->sd_impl->dcr->after_rec->VolSessionTime
+ = jcr->sd_impl->dcr->after_rec->last_VolSessionTime;
- if (jcr->impl->dcr->after_rec->FileIndex < 0) {
+ if (jcr->sd_impl->dcr->after_rec->FileIndex < 0) {
retval = true; /* don't send LABELs to Dir */
goto bail_out;
}
- jcr->JobBytes
- += jcr->impl->dcr->after_rec->data_len; /* increment bytes of this job */
+ jcr->JobBytes += jcr->sd_impl->dcr->after_rec
+ ->data_len; /* increment bytes of this job */
Dmsg5(500, "wrote_record JobId=%d FI=%s SessId=%d Strm=%s len=%d\n",
- jcr->JobId, FI_to_ascii(buf1, jcr->impl->dcr->after_rec->FileIndex),
- jcr->impl->dcr->after_rec->VolSessionId,
- stream_to_ascii(buf2, jcr->impl->dcr->after_rec->Stream,
- jcr->impl->dcr->after_rec->FileIndex),
- jcr->impl->dcr->after_rec->data_len);
-
- if (IsAttribute(jcr->impl->dcr->after_rec)) {
- SendAttrsToDir(jcr, jcr->impl->dcr->after_rec);
+ jcr->JobId, FI_to_ascii(buf1, jcr->sd_impl->dcr->after_rec->FileIndex),
+ jcr->sd_impl->dcr->after_rec->VolSessionId,
+ stream_to_ascii(buf2, jcr->sd_impl->dcr->after_rec->Stream,
+ jcr->sd_impl->dcr->after_rec->FileIndex),
+ jcr->sd_impl->dcr->after_rec->data_len);
+
+ if (IsAttribute(jcr->sd_impl->dcr->after_rec)) {
+ SendAttrsToDir(jcr, jcr->sd_impl->dcr->after_rec);
}
retval = true;
bail_out:
if (translated_record) {
- FreeRecord(jcr->impl->dcr->after_rec);
- jcr->impl->dcr->after_rec = NULL;
+ FreeRecord(jcr->sd_impl->dcr->after_rec);
+ jcr->sd_impl->dcr->after_rec = NULL;
}
return retval;
@@ -393,22 +394,22 @@ static inline void CheckAutoXflation(JobControlRecord* jcr)
if (me->autoxflateonreplication) { return; }
// Check autodeflation.
- switch (jcr->impl->read_dcr->autodeflate) {
+ switch (jcr->sd_impl->read_dcr->autodeflate) {
case AutoXflateMode::IO_DIRECTION_IN:
case AutoXflateMode::IO_DIRECTION_INOUT:
Dmsg0(200, "Clearing autodeflate on read_dcr\n");
- jcr->impl->read_dcr->autodeflate = AutoXflateMode::IO_DIRECTION_NONE;
+ jcr->sd_impl->read_dcr->autodeflate = AutoXflateMode::IO_DIRECTION_NONE;
break;
default:
break;
}
- if (jcr->impl->dcr) {
- switch (jcr->impl->dcr->autodeflate) {
+ if (jcr->sd_impl->dcr) {
+ switch (jcr->sd_impl->dcr->autodeflate) {
case AutoXflateMode::IO_DIRECTION_OUT:
case AutoXflateMode::IO_DIRECTION_INOUT:
Dmsg0(200, "Clearing autodeflate on write dcr\n");
- jcr->impl->dcr->autodeflate = AutoXflateMode::IO_DIRECTION_NONE;
+ jcr->sd_impl->dcr->autodeflate = AutoXflateMode::IO_DIRECTION_NONE;
break;
default:
break;
@@ -416,22 +417,22 @@ static inline void CheckAutoXflation(JobControlRecord* jcr)
}
// Check autoinflation.
- switch (jcr->impl->read_dcr->autoinflate) {
+ switch (jcr->sd_impl->read_dcr->autoinflate) {
case AutoXflateMode::IO_DIRECTION_IN:
case AutoXflateMode::IO_DIRECTION_INOUT:
Dmsg0(200, "Clearing autoinflate on read_dcr\n");
- jcr->impl->read_dcr->autoinflate = AutoXflateMode::IO_DIRECTION_NONE;
+ jcr->sd_impl->read_dcr->autoinflate = AutoXflateMode::IO_DIRECTION_NONE;
break;
default:
break;
}
- if (jcr->impl->dcr) {
- switch (jcr->impl->dcr->autoinflate) {
+ if (jcr->sd_impl->dcr) {
+ switch (jcr->sd_impl->dcr->autoinflate) {
case AutoXflateMode::IO_DIRECTION_OUT:
case AutoXflateMode::IO_DIRECTION_INOUT:
Dmsg0(200, "Clearing autoinflate on write dcr\n");
- jcr->impl->dcr->autoinflate = AutoXflateMode::IO_DIRECTION_NONE;
+ jcr->sd_impl->dcr->autoinflate = AutoXflateMode::IO_DIRECTION_NONE;
break;
default:
break;
@@ -448,7 +449,7 @@ bool DoMacRun(JobControlRecord* jcr)
bool ok = true;
bool acquire_fail = false;
BareosSocket* dir = jcr->dir_bsock;
- Device* dev = jcr->impl->dcr->dev;
+ Device* dev = jcr->sd_impl->dcr->dev;
switch (jcr->getJobType()) {
case JT_MIGRATE:
@@ -470,7 +471,7 @@ bool DoMacRun(JobControlRecord* jcr)
Dmsg0(20, "Start read data.\n");
- if (jcr->impl->NumReadVolumes == 0) {
+ if (jcr->sd_impl->NumReadVolumes == 0) {
Jmsg(jcr, M_FATAL, 0, _("No Volume names found for %s.\n"), Type);
goto bail_out;
}
@@ -479,27 +480,29 @@ bool DoMacRun(JobControlRecord* jcr)
CheckAutoXflation(jcr);
// See if we perform both read and write or read only.
- if (jcr->impl->remote_replicate) {
+ if (jcr->sd_impl->remote_replicate) {
BareosSocket* sd;
- if (!jcr->impl->read_dcr) {
+ if (!jcr->sd_impl->read_dcr) {
Jmsg(jcr, M_FATAL, 0, _("Read device not properly initialized.\n"));
goto bail_out;
}
- Dmsg1(100, "read_dcr=%p\n", jcr->impl->read_dcr);
+ Dmsg1(100, "read_dcr=%p\n", jcr->sd_impl->read_dcr);
Dmsg3(200, "Found %d volumes names for %s. First=%s\n",
- jcr->impl->NumReadVolumes, Type, jcr->impl->VolList->VolumeName);
+ jcr->sd_impl->NumReadVolumes, Type,
+ jcr->sd_impl->VolList->VolumeName);
// Ready devices for reading.
- if (!AcquireDeviceForRead(jcr->impl->read_dcr)) {
+ if (!AcquireDeviceForRead(jcr->sd_impl->read_dcr)) {
ok = false;
acquire_fail = true;
goto bail_out;
}
Dmsg2(200, "===== After acquire pos %u:%u\n",
- jcr->impl->read_dcr->dev->file, jcr->impl->read_dcr->dev->block_num);
+ jcr->sd_impl->read_dcr->dev->file,
+ jcr->sd_impl->read_dcr->dev->block_num);
jcr->sendJobStatus(JS_Running);
@@ -518,12 +521,12 @@ bool DoMacRun(JobControlRecord* jcr)
// Expect to receive back the Ticket number.
if (BgetMsg(sd) >= 0) {
Dmsg1(110, "<stored: %s", sd->msg);
- if (sscanf(sd->msg, OK_start_replicate, &jcr->impl->Ticket) != 1) {
+ if (sscanf(sd->msg, OK_start_replicate, &jcr->sd_impl->Ticket) != 1) {
Jmsg(jcr, M_FATAL, 0, _("Bad response to start replicate: %s\n"),
sd->msg);
goto bail_out;
}
- Dmsg1(110, "Got Ticket=%d\n", jcr->impl->Ticket);
+ Dmsg1(110, "Got Ticket=%d\n", jcr->sd_impl->Ticket);
} else {
Jmsg(jcr, M_FATAL, 0,
_("Bad response from stored to start replicate command\n"));
@@ -531,7 +534,7 @@ bool DoMacRun(JobControlRecord* jcr)
}
// Let the remote SD know we are now really going to send the data.
- sd->fsend(ReplicateData, jcr->impl->Ticket);
+ sd->fsend(ReplicateData, jcr->sd_impl->Ticket);
Dmsg1(110, ">stored: %s", sd->msg);
// Expect to get response to the replicate data cmd from Storage daemon
@@ -545,7 +548,7 @@ bool DoMacRun(JobControlRecord* jcr)
UpdateJobStatistics(jcr, now);
// Read all data and send it to remote SD.
- ok = ReadRecords(jcr->impl->read_dcr, CloneRecordToRemoteSd,
+ ok = ReadRecords(jcr->sd_impl->read_dcr, CloneRecordToRemoteSd,
MountNextReadVolume);
/*
@@ -579,26 +582,27 @@ bool DoMacRun(JobControlRecord* jcr)
/* Inform Storage daemon that we are done */
sd->signal(BNET_TERMINATE);
} else {
- if (!jcr->impl->read_dcr) {
+ if (!jcr->sd_impl->read_dcr) {
Jmsg(jcr, M_FATAL, 0, _("Read device not properly initialized.\n"));
goto bail_out;
}
- Dmsg2(100, "read_dcr=%p write_dcr=%p\n", jcr->impl->read_dcr,
- jcr->impl->dcr);
+ Dmsg2(100, "read_dcr=%p write_dcr=%p\n", jcr->sd_impl->read_dcr,
+ jcr->sd_impl->dcr);
Dmsg3(200, "Found %d volumes names for %s. First=%s\n",
- jcr->impl->NumReadVolumes, Type, jcr->impl->VolList->VolumeName);
+ jcr->sd_impl->NumReadVolumes, Type,
+ jcr->sd_impl->VolList->VolumeName);
// Ready devices for reading and writing.
- if (!AcquireDeviceForAppend(jcr->impl->dcr)
- || !AcquireDeviceForRead(jcr->impl->read_dcr)) {
+ if (!AcquireDeviceForAppend(jcr->sd_impl->dcr)
+ || !AcquireDeviceForRead(jcr->sd_impl->read_dcr)) {
ok = false;
acquire_fail = true;
goto bail_out;
}
- Dmsg2(200, "===== After acquire pos %u:%u\n", jcr->impl->dcr->dev->file,
- jcr->impl->dcr->dev->block_num);
+ Dmsg2(200, "===== After acquire pos %u:%u\n", jcr->sd_impl->dcr->dev->file,
+ jcr->sd_impl->dcr->dev->block_num);
jcr->sendJobStatus(JS_Running);
@@ -606,7 +610,7 @@ bool DoMacRun(JobControlRecord* jcr)
now = (utime_t)time(NULL);
UpdateJobStatistics(jcr, now);
- if (!BeginDataSpool(jcr->impl->dcr)) {
+ if (!BeginDataSpool(jcr->sd_impl->dcr)) {
ok = false;
goto bail_out;
}
@@ -616,20 +620,20 @@ bool DoMacRun(JobControlRecord* jcr)
goto bail_out;
}
- jcr->impl->dcr->VolFirstIndex = jcr->impl->dcr->VolLastIndex = 0;
+ jcr->sd_impl->dcr->VolFirstIndex = jcr->sd_impl->dcr->VolLastIndex = 0;
jcr->run_time = time(NULL);
- SetStartVolPosition(jcr->impl->dcr);
+ SetStartVolPosition(jcr->sd_impl->dcr);
jcr->JobFiles = 0;
// Read all data and make a local clone of it.
- ok = ReadRecords(jcr->impl->read_dcr, CloneRecordInternally,
+ ok = ReadRecords(jcr->sd_impl->read_dcr, CloneRecordInternally,
MountNextReadVolume);
}
bail_out:
if (!ok) { jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated); }
- if (!acquire_fail && !jcr->impl->remote_replicate && jcr->impl->dcr) {
+ if (!acquire_fail && !jcr->sd_impl->remote_replicate && jcr->sd_impl->dcr) {
/*
* Don't use time_t for job_elapsed as time_t can be 32 or 64 bits,
* and the subsequent Jmsg() editing will break
@@ -647,7 +651,7 @@ bail_out:
jcr->setJobStatusWithPriorityCheck(JS_Terminated);
// Write End Of Session Label
- DeviceControlRecord* dcr = jcr->impl->dcr;
+ DeviceControlRecord* dcr = jcr->sd_impl->dcr;
if (!WriteSessionLabel(dcr, EOS_LABEL)) {
// Print only if ok and not cancelled to avoid spurious messages
@@ -662,7 +666,7 @@ bail_out:
jcr->setJobStatusWithPriorityCheck(currentJobStatus);
}
// Flush out final partial block of this session
- if (!jcr->impl->dcr->WriteBlockToDevice()) {
+ if (!jcr->sd_impl->dcr->WriteBlockToDevice()) {
Jmsg2(jcr, M_FATAL, 0, _("Fatal append error on device %s: ERR=%s\n"),
dev->print_name(), dev->bstrerror());
Dmsg0(100, _("Set ok=FALSE after WriteBlockToDevice.\n"));
@@ -674,10 +678,10 @@ bail_out:
if (!ok) {
- DiscardDataSpool(jcr->impl->dcr);
+ DiscardDataSpool(jcr->sd_impl->dcr);
} else {
// Note: if commit is OK, the device will remain blocked
- CommitDataSpool(jcr->impl->dcr);
+ CommitDataSpool(jcr->sd_impl->dcr);
}
job_elapsed = time(NULL) - jcr->run_time;
@@ -696,11 +700,11 @@ bail_out:
}
}
- if (!jcr->impl->remote_replicate && jcr->impl->dcr) {
- if (!ReleaseDevice(jcr->impl->dcr)) { ok = false; }
+ if (!jcr->sd_impl->remote_replicate && jcr->sd_impl->dcr) {
+ if (!ReleaseDevice(jcr->sd_impl->dcr)) { ok = false; }
}
- if (jcr->impl->read_dcr) {
- if (!ReleaseDevice(jcr->impl->read_dcr)) { ok = false; }
+ if (jcr->sd_impl->read_dcr) {
+ if (!ReleaseDevice(jcr->sd_impl->read_dcr)) { ok = false; }
}
jcr->sendJobStatus(); /* update director */
diff --git a/core/src/stored/mount.cc b/core/src/stored/mount.cc
index 5f2891d06..c2785ee82 100644
--- a/core/src/stored/mount.cc
+++ b/core/src/stored/mount.cc
@@ -31,7 +31,7 @@
#include "stored/acquire.h"
#include "stored/autochanger.h"
#include "stored/device_control_record.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/label.h"
#include "lib/edit.h"
#include "include/jcr.h"
@@ -911,13 +911,13 @@ bool MountNextReadVolume(DeviceControlRecord* dcr)
{
Device* dev = dcr->dev;
JobControlRecord* jcr = dcr->jcr;
- Dmsg2(90, "NumReadVolumes=%d CurReadVolume=%d\n", jcr->impl->NumReadVolumes,
- jcr->impl->CurReadVolume);
+ Dmsg2(90, "NumReadVolumes=%d CurReadVolume=%d\n",
+ jcr->sd_impl->NumReadVolumes, jcr->sd_impl->CurReadVolume);
VolumeUnused(dcr); /* release current volume */
// End Of Tape -- mount next Volume (if another specified)
- if (jcr->impl->NumReadVolumes > 1
- && jcr->impl->CurReadVolume < jcr->impl->NumReadVolumes) {
+ if (jcr->sd_impl->NumReadVolumes > 1
+ && jcr->sd_impl->CurReadVolume < jcr->sd_impl->NumReadVolumes) {
dev->Lock();
dev->close(dcr);
dev->SetRead();
diff --git a/core/src/stored/ndmp_tape.cc b/core/src/stored/ndmp_tape.cc
index ada800e5f..b08f1a2a6 100644
--- a/core/src/stored/ndmp_tape.cc
+++ b/core/src/stored/ndmp_tape.cc
@@ -45,7 +45,7 @@
# include "stored/bsr.h"
# include "stored/device.h"
# include "stored/device_control_record.h"
-# include "stored/jcr_private.h"
+# include "stored/stored_jcr_impl.h"
# include "stored/label.h"
# include "stored/mount.h"
# include "stored/read_record.h"
@@ -293,7 +293,7 @@ static inline bool bndmp_write_data_to_block(JobControlRecord* jcr,
uint32_t data_length)
{
bool retval = false;
- DeviceControlRecord* dcr = jcr->impl->dcr;
+ DeviceControlRecord* dcr = jcr->sd_impl->dcr;
POOLMEM* rec_data;
if (!dcr) {
@@ -341,8 +341,8 @@ static inline bool bndmp_read_data_from_block(JobControlRecord* jcr,
uint32_t wanted_data_length,
uint32_t* data_length)
{
- DeviceControlRecord* dcr = jcr->impl->read_dcr;
- READ_CTX* rctx = jcr->impl->read_session.rctx;
+ DeviceControlRecord* dcr = jcr->sd_impl->read_dcr;
+ READ_CTX* rctx = jcr->sd_impl->read_session.rctx;
bool done = false;
bool ok = true;
@@ -446,7 +446,7 @@ static inline bool bndmp_read_data_from_block(JobControlRecord* jcr,
// Generate virtual file attributes for the whole NDMP stream.
static inline bool BndmpCreateVirtualFile(JobControlRecord* jcr, char* filename)
{
- DeviceControlRecord* dcr = jcr->impl->dcr;
+ DeviceControlRecord* dcr = jcr->sd_impl->dcr;
struct stat statp;
time_t now = time(NULL);
PoolMem attribs(PM_NAME), data(PM_NAME);
@@ -544,7 +544,7 @@ extern "C" ndmp9_error bndmp_tape_open(struct ndm_session* sess,
/* There is a native storage daemon session waiting for the FD to connect.
* In NDMP terms this is the same as a FD connecting so wake any waiting
* threads. */
- pthread_cond_signal(&jcr->impl->job_start_wait);
+ pthread_cond_signal(&jcr->sd_impl->job_start_wait);
/* Save the JobControlRecord to ndm_session binding so everything furher
* knows which JobControlRecord belongs to which NDMP session. We have
@@ -568,9 +568,9 @@ extern "C" ndmp9_error bndmp_tape_open(struct ndm_session* sess,
// Depending on the open mode select the right DeviceControlRecord.
if (will_write) {
- dcr = jcr->impl->dcr;
+ dcr = jcr->sd_impl->dcr;
} else {
- dcr = jcr->impl->read_dcr;
+ dcr = jcr->sd_impl->read_dcr;
}
if (!dcr) {
@@ -592,7 +592,7 @@ extern "C" ndmp9_error bndmp_tape_open(struct ndm_session* sess,
/* One NDMP backup Job can be one or more save sessions so we keep
* track if we already acquired the storage. */
- if (!jcr->impl->acquired_storage) {
+ if (!jcr->sd_impl->acquired_storage) {
// Actually acquire the device which we reserved.
if (!AcquireDeviceForAppend(dcr)) { goto bail_out; }
@@ -603,7 +603,7 @@ extern "C" ndmp9_error bndmp_tape_open(struct ndm_session* sess,
}
// Keep track that we acquired the storage.
- jcr->impl->acquired_storage = true;
+ jcr->sd_impl->acquired_storage = true;
Dmsg1(50, "Begin append device=%s\n", dcr->dev->print_name());
@@ -648,16 +648,16 @@ extern "C" ndmp9_error bndmp_tape_open(struct ndm_session* sess,
READ_CTX* rctx;
// Setup internal system for reading data (if not done before).
- if (!jcr->impl->acquired_storage) {
+ if (!jcr->sd_impl->acquired_storage) {
Dmsg0(20, "Start read data.\n");
- if (jcr->impl->NumReadVolumes == 0) {
+ if (jcr->sd_impl->NumReadVolumes == 0) {
Jmsg(jcr, M_FATAL, 0, _("No Volume names found for restore.\n"));
goto bail_out;
}
Dmsg2(200, "Found %d volumes names to restore. First=%s\n",
- jcr->impl->NumReadVolumes, jcr->impl->VolList->VolumeName);
+ jcr->sd_impl->NumReadVolumes, jcr->sd_impl->VolList->VolumeName);
// Ready device for reading
if (!AcquireDeviceForRead(dcr)) { goto bail_out; }
@@ -669,7 +669,7 @@ extern "C" ndmp9_error bndmp_tape_open(struct ndm_session* sess,
}
// Keep track that we acquired the storage.
- jcr->impl->acquired_storage = true;
+ jcr->sd_impl->acquired_storage = true;
// Change the Job to running state.
jcr->sendJobStatus(JS_Running);
@@ -677,11 +677,11 @@ extern "C" ndmp9_error bndmp_tape_open(struct ndm_session* sess,
Dmsg1(50, "Begin reading device=%s\n", dcr->dev->print_name());
PositionDeviceToFirstFile(jcr, dcr);
- jcr->impl->read_session.mount_next_volume = false;
+ jcr->sd_impl->read_session.mount_next_volume = false;
// Allocate a new read context for this Job.
rctx = new_read_context();
- jcr->impl->read_session.rctx = rctx;
+ jcr->sd_impl->read_session.rctx = rctx;
// Read the first block and setup record processing.
if (!ReadNextBlockFromDevice(dcr, &rctx->sessrec, NULL,
@@ -751,7 +751,8 @@ extern "C" ndmp9_error BndmpTapeClose(struct ndm_session* sess)
}
}
- pthread_cond_signal(&jcr->impl->job_end_wait); /* wake any waiting thread */
+ pthread_cond_signal(
+ &jcr->sd_impl->job_end_wait); /* wake any waiting thread */
ndmos_tape_initialize(sess);
@@ -921,7 +922,7 @@ static inline void UnregisterCallbackHooks(struct ndm_session* sess)
void EndOfNdmpBackup(JobControlRecord* jcr)
{
- DeviceControlRecord* dcr = jcr->impl->dcr;
+ DeviceControlRecord* dcr = jcr->sd_impl->dcr;
char ec[50];
/* Don't use time_t for job_elapsed as time_t can be 32 or 64 bits,
@@ -973,9 +974,9 @@ void EndOfNdmpBackup(JobControlRecord* jcr)
}
// Release the device -- and send final Vol info to DIR and unlock it.
- if (jcr->impl->acquired_storage) {
+ if (jcr->sd_impl->acquired_storage) {
ReleaseDevice(dcr);
- jcr->impl->acquired_storage = false;
+ jcr->sd_impl->acquired_storage = false;
} else {
dcr->UnreserveDevice();
}
@@ -986,16 +987,16 @@ void EndOfNdmpBackup(JobControlRecord* jcr)
void EndOfNdmpRestore(JobControlRecord* jcr)
{
- if (jcr->impl->read_session.rctx) {
- FreeReadContext(jcr->impl->read_session.rctx);
- jcr->impl->read_session.rctx = NULL;
+ if (jcr->sd_impl->read_session.rctx) {
+ FreeReadContext(jcr->sd_impl->read_session.rctx);
+ jcr->sd_impl->read_session.rctx = NULL;
}
- if (jcr->impl->acquired_storage) {
- ReleaseDevice(jcr->impl->read_dcr);
- jcr->impl->acquired_storage = false;
+ if (jcr->sd_impl->acquired_storage) {
+ ReleaseDevice(jcr->sd_impl->read_dcr);
+ jcr->sd_impl->acquired_storage = false;
} else {
- jcr->impl->read_dcr->UnreserveDevice();
+ jcr->sd_impl->read_dcr->UnreserveDevice();
}
}
diff --git a/core/src/stored/read.cc b/core/src/stored/read.cc
index f418d61eb..de0688d78 100644
--- a/core/src/stored/read.cc
+++ b/core/src/stored/read.cc
@@ -31,7 +31,7 @@
#include "stored/acquire.h"
#include "stored/bsr.h"
#include "stored/device_control_record.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/mount.h"
#include "stored/read_record.h"
#include "lib/bnet.h"
@@ -57,7 +57,7 @@ static char rec_header[] = "rechdr %ld %ld %ld %ld %ld";
bool DoReadData(JobControlRecord* jcr)
{
BareosSocket* fd = jcr->file_bsock;
- DeviceControlRecord* dcr = jcr->impl->read_dcr;
+ DeviceControlRecord* dcr = jcr->sd_impl->read_dcr;
bool ok = true;
Dmsg0(20, "Start read data.\n");
@@ -67,14 +67,14 @@ bool DoReadData(JobControlRecord* jcr)
return false;
}
- if (jcr->impl->NumReadVolumes == 0) {
+ if (jcr->sd_impl->NumReadVolumes == 0) {
Jmsg(jcr, M_FATAL, 0, _("No Volume names found for restore.\n"));
fd->fsend(FD_error);
return false;
}
Dmsg2(200, "Found %d volumes names to restore. First=%s\n",
- jcr->impl->NumReadVolumes, jcr->impl->VolList->VolumeName);
+ jcr->sd_impl->NumReadVolumes, jcr->sd_impl->VolList->VolumeName);
// Ready device for reading
if (!AcquireDeviceForRead(dcr)) {
@@ -96,7 +96,7 @@ bool DoReadData(JobControlRecord* jcr)
// Send end of data to FD
fd->signal(BNET_EOD);
- if (!ReleaseDevice(jcr->impl->read_dcr)) { ok = false; }
+ if (!ReleaseDevice(jcr->sd_impl->read_dcr)) { ok = false; }
Dmsg0(30, "Done reading.\n");
return ok;
diff --git a/core/src/stored/read_record.cc b/core/src/stored/read_record.cc
index 84f0ceebb..97bc59e3c 100644
--- a/core/src/stored/read_record.cc
+++ b/core/src/stored/read_record.cc
@@ -38,7 +38,7 @@
#include "stored/butil.h"
#include "stored/device.h"
#include "stored/device_control_record.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/label.h"
#include "stored/match_bsr.h"
#include "stored/read_ctx.h"
@@ -216,15 +216,15 @@ bool ReadNextBlockFromDevice(DeviceControlRecord* dcr,
trec->FileIndex = EOT_LABEL;
trec->File = dcr->dev->file;
*status = RecordCb(dcr, trec);
- if (jcr->impl->read_session.mount_next_volume) {
- jcr->impl->read_session.mount_next_volume = false;
+ if (jcr->sd_impl->read_session.mount_next_volume) {
+ jcr->sd_impl->read_session.mount_next_volume = false;
dcr->dev->ClearEot();
}
FreeRecord(trec);
}
return false;
}
- jcr->impl->read_session.mount_next_volume = false;
+ jcr->sd_impl->read_session.mount_next_volume = false;
/*
* We just have a new tape up, now read the label (first record)
@@ -253,7 +253,7 @@ bool ReadNextBlockFromDevice(DeviceControlRecord* dcr,
} else {
// I/O error or strange end of tape
DisplayTapeErrorStatus(jcr, dcr->dev);
- if (forge_on || jcr->impl->ignore_label_errors) {
+ if (forge_on || jcr->sd_impl->ignore_label_errors) {
dcr->dev->fsr(1); /* try skipping bad record */
Pmsg0(000, _("Did fsr in attemp to skip bad record.\n"));
continue;
@@ -317,10 +317,10 @@ bool ReadNextRecordFromBlock(DeviceControlRecord* dcr,
// Some sort of label?
if (rec->FileIndex < 0) {
HandleSessionRecord(dcr->dev, rec, &rctx->sessrec);
- if (jcr->impl->read_session.bsr) {
+ if (jcr->sd_impl->read_session.bsr) {
// We just check block FI and FT not FileIndex
rec->match_stat
- = MatchBsrBlock(jcr->impl->read_session.bsr, dcr->block);
+ = MatchBsrBlock(jcr->sd_impl->read_session.bsr, dcr->block);
} else {
rec->match_stat = 0;
}
@@ -329,9 +329,9 @@ bool ReadNextRecordFromBlock(DeviceControlRecord* dcr,
}
// Apply BootStrapRecord filter
- if (jcr->impl->read_session.bsr) {
- rec->match_stat = MatchBsr(jcr->impl->read_session.bsr, rec, &dev->VolHdr,
- &rctx->sessrec, jcr);
+ if (jcr->sd_impl->read_session.bsr) {
+ rec->match_stat = MatchBsr(jcr->sd_impl->read_session.bsr, rec,
+ &dev->VolHdr, &rctx->sessrec, jcr);
if (rec->match_stat == -1) { /* no more possible matches */
*done = true; /* all items found, stop */
Dmsg2(debuglevel, "All done=(file:block) %u:%u\n", dev->file,
@@ -362,7 +362,7 @@ bool ReadNextRecordFromBlock(DeviceControlRecord* dcr,
if (rctx->lastFileIndex != READ_NO_FILEINDEX
&& rctx->lastFileIndex != rec->FileIndex) {
- if (IsThisBsrDone(jcr->impl->read_session.bsr, rec)
+ if (IsThisBsrDone(jcr->sd_impl->read_session.bsr, rec)
&& TryDeviceRepositioning(jcr, rec, dcr)) {
Dmsg2(debuglevel, "This bsr done, break pos %u:%u\n", dev->file,
dev->block_num);
@@ -397,7 +397,7 @@ bool ReadRecords(DeviceControlRecord* dcr,
rctx = new_read_context();
PositionDeviceToFirstFile(jcr, dcr);
- jcr->impl->read_session.mount_next_volume = false;
+ jcr->sd_impl->read_session.mount_next_volume = false;
while (ok && !done) {
if (JobCanceled(jcr)) {
diff --git a/core/src/stored/record.cc b/core/src/stored/record.cc
index ed23db09b..ca5bcb034 100644
--- a/core/src/stored/record.cc
+++ b/core/src/stored/record.cc
@@ -29,7 +29,7 @@
*/
#include "include/bareos.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/stored.h"
#include "stored/device_control_record.h"
#include "lib/attribs.h"
@@ -670,7 +670,8 @@ bool DeviceControlRecord::WriteRecord()
}
jcr->JobBytes += after_rec->data_len; /* increment bytes this job */
- if (jcr->impl->RemainingQuota && jcr->JobBytes > jcr->impl->RemainingQuota) {
+ if (jcr->sd_impl->RemainingQuota
+ && jcr->JobBytes > jcr->sd_impl->RemainingQuota) {
Jmsg0(jcr, M_FATAL, 0, _("Quota Exceeded. Job Terminated.\n"));
goto bail_out;
}
diff --git a/core/src/stored/reserve.cc b/core/src/stored/reserve.cc
index a3ab22a79..aee7c366a 100644
--- a/core/src/stored/reserve.cc
+++ b/core/src/stored/reserve.cc
@@ -35,7 +35,7 @@
#include "stored/sd_device_control_record.h"
#include "stored/acquire.h"
#include "stored/autochanger.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/wait.h"
#include "lib/berrno.h"
#include "lib/util.h"
@@ -201,7 +201,7 @@ static bool UseDeviceCmd(JobControlRecord* jcr)
* If there are multiple devices, the director sends us
* use_device for each device that it wants to use.
*/
- jcr->impl->reserve_msgs = new alist<const char*>(10, not_owned_by_alist);
+ jcr->sd_impl->reserve_msgs = new alist<const char*>(10, not_owned_by_alist);
do {
Dmsg1(debuglevel, "<dird: %s", dir->msg);
ok = sscanf(dir->msg, use_storage, StoreName.c_str(), media_type.c_str(),
@@ -211,9 +211,9 @@ static bool UseDeviceCmd(JobControlRecord* jcr)
alist<DirectorStorage*>* dirstore
= new alist<DirectorStorage*>(10, not_owned_by_alist);
if (append) {
- jcr->impl->write_store = dirstore;
+ jcr->sd_impl->write_store = dirstore;
} else {
- jcr->impl->read_store = dirstore;
+ jcr->sd_impl->read_store = dirstore;
}
rctx.append = append;
UnbashSpaces(StoreName);
@@ -241,11 +241,11 @@ static bool UseDeviceCmd(JobControlRecord* jcr)
} while (ok && dir->recv() >= 0);
InitJcrDeviceWaitTimers(jcr);
- jcr->impl->dcr = new StorageDaemonDeviceControlRecord;
- SetupNewDcrDevice(jcr, jcr->impl->dcr, NULL, NULL);
- if (rctx.append) { jcr->impl->dcr->SetWillWrite(); }
+ jcr->sd_impl->dcr = new StorageDaemonDeviceControlRecord;
+ SetupNewDcrDevice(jcr, jcr->sd_impl->dcr, NULL, NULL);
+ if (rctx.append) { jcr->sd_impl->dcr->SetWillWrite(); }
- if (!jcr->impl->dcr) {
+ if (!jcr->sd_impl->dcr) {
BareosSocket* dir = jcr->dir_bsock;
dir->fsend(_("3939 Could not get dcr\n"));
Dmsg1(debuglevel, ">dird: %s", dir->msg);
@@ -270,9 +270,9 @@ static bool UseDeviceCmd(JobControlRecord* jcr)
// Put new dcr in proper location
if (rctx.append) {
- rctx.jcr->impl->dcr = jcr->impl->dcr;
+ rctx.jcr->sd_impl->dcr = jcr->sd_impl->dcr;
} else {
- rctx.jcr->impl->read_dcr = jcr->impl->dcr;
+ rctx.jcr->sd_impl->read_dcr = jcr->sd_impl->dcr;
}
LockReservations();
@@ -282,7 +282,7 @@ static bool UseDeviceCmd(JobControlRecord* jcr)
rctx.have_volume = false;
rctx.VolumeName[0] = 0;
rctx.any_drive = false;
- if (!jcr->impl->PreferMountedVols) {
+ if (!jcr->sd_impl->PreferMountedVols) {
/*
* Here we try to find a drive that is not used.
* This will maximize the use of available drives.
@@ -407,12 +407,12 @@ bool FindSuitableDeviceForJob(JobControlRecord* jcr, ReserveContext& rctx)
DirectorStorage* store = nullptr;
const char* device_name = nullptr;
alist<DirectorStorage*>* dirstore;
- DeviceControlRecord* dcr = jcr->impl->dcr;
+ DeviceControlRecord* dcr = jcr->sd_impl->dcr;
if (rctx.append) {
- dirstore = jcr->impl->write_store;
+ dirstore = jcr->sd_impl->write_store;
} else {
- dirstore = jcr->impl->read_store;
+ dirstore = jcr->sd_impl->read_store;
}
Dmsg5(debuglevel,
"Start find_suit_dev PrefMnt=%d exact=%d suitable=%d chgronly=%d "
@@ -565,11 +565,11 @@ int SearchResForDevice(ReserveContext& rctx)
if (rctx.store->append == SD_APPEND) {
Dmsg2(debuglevel, "Device %s reserved=%d for append.\n",
rctx.device_resource->resource_name_,
- rctx.jcr->impl->dcr->dev->NumReserved());
+ rctx.jcr->sd_impl->dcr->dev->NumReserved());
} else {
Dmsg2(debuglevel, "Device %s reserved=%d for read.\n",
rctx.device_resource->resource_name_,
- rctx.jcr->impl->read_dcr->dev->NumReserved());
+ rctx.jcr->sd_impl->read_dcr->dev->NumReserved());
}
return status;
}
@@ -592,11 +592,11 @@ int SearchResForDevice(ReserveContext& rctx)
if (rctx.store->append == SD_APPEND) {
Dmsg2(debuglevel, "Device %s reserved=%d for append.\n",
rctx.device_resource->resource_name_,
- rctx.jcr->impl->dcr->dev->NumReserved());
+ rctx.jcr->sd_impl->dcr->dev->NumReserved());
} else {
Dmsg2(debuglevel, "Device %s reserved=%d for read.\n",
rctx.device_resource->resource_name_,
- rctx.jcr->impl->read_dcr->dev->NumReserved());
+ rctx.jcr->sd_impl->read_dcr->dev->NumReserved());
}
return status;
}
@@ -624,11 +624,11 @@ int SearchResForDevice(ReserveContext& rctx)
if (rctx.store->append == SD_APPEND) {
Dmsg2(debuglevel, "Device %s reserved=%d for append.\n",
rctx.device_resource->resource_name_,
- rctx.jcr->impl->dcr->dev->NumReserved());
+ rctx.jcr->sd_impl->dcr->dev->NumReserved());
} else {
Dmsg2(debuglevel, "Device %s reserved=%d for read.\n",
rctx.device_resource->resource_name_,
- rctx.jcr->impl->read_dcr->dev->NumReserved());
+ rctx.jcr->sd_impl->read_dcr->dev->NumReserved());
}
return status;
}
@@ -685,13 +685,13 @@ static int ReserveDevice(ReserveContext& rctx)
Dmsg1(debuglevel, "try reserve %s\n", rctx.device_resource->resource_name_);
if (rctx.store->append) {
- SetupNewDcrDevice(rctx.jcr, rctx.jcr->impl->dcr, rctx.device_resource->dev,
- NULL);
- dcr = rctx.jcr->impl->dcr;
+ SetupNewDcrDevice(rctx.jcr, rctx.jcr->sd_impl->dcr,
+ rctx.device_resource->dev, NULL);
+ dcr = rctx.jcr->sd_impl->dcr;
} else {
- SetupNewDcrDevice(rctx.jcr, rctx.jcr->impl->read_dcr,
+ SetupNewDcrDevice(rctx.jcr, rctx.jcr->sd_impl->read_dcr,
rctx.device_resource->dev, NULL);
- dcr = rctx.jcr->impl->read_dcr;
+ dcr = rctx.jcr->sd_impl->read_dcr;
}
if (!dcr) {
@@ -714,7 +714,7 @@ static int ReserveDevice(ReserveContext& rctx)
ok = ReserveDeviceForAppend(dcr, rctx);
if (!ok) { goto bail_out; }
- rctx.jcr->impl->dcr = dcr;
+ rctx.jcr->sd_impl->dcr = dcr;
Dmsg5(debuglevel, "Reserved=%d dev_name=%s mediatype=%s pool=%s ok=%d\n",
dcr->dev->NumReserved(), dcr->dev_name, dcr->media_type,
dcr->pool_name, ok);
@@ -773,7 +773,7 @@ static int ReserveDevice(ReserveContext& rctx)
} else {
ok = ReserveDeviceForRead(dcr);
if (ok) {
- rctx.jcr->impl->read_dcr = dcr;
+ rctx.jcr->sd_impl->read_dcr = dcr;
Dmsg5(debuglevel,
"Read reserved=%d dev_name=%s mediatype=%s pool=%s ok=%d\n",
dcr->dev->NumReserved(), dcr->dev_name, dcr->media_type,
@@ -1139,7 +1139,7 @@ static void QueueReserveMessage(JobControlRecord* jcr)
jcr->lock();
- auto msgs = jcr->impl->reserve_msgs;
+ auto msgs = jcr->sd_impl->reserve_msgs;
if (!msgs) { goto bail_out; }
// Look for duplicate message. If found, do not insert
for (i = msgs->size() - 1; i >= 0; i--) {
@@ -1151,7 +1151,7 @@ static void QueueReserveMessage(JobControlRecord* jcr)
}
// Message unique, so insert it.
- jcr->impl->reserve_msgs->push(strdup(jcr->errmsg));
+ jcr->sd_impl->reserve_msgs->push(strdup(jcr->errmsg));
bail_out:
jcr->unlock();
@@ -1163,7 +1163,7 @@ static void PopReserveMessages(JobControlRecord* jcr)
char* msg;
jcr->lock();
- auto msgs = jcr->impl->reserve_msgs;
+ auto msgs = jcr->sd_impl->reserve_msgs;
if (!msgs) { goto bail_out; }
while ((msg = (char*)msgs->pop())) { free(msg); }
bail_out:
@@ -1175,9 +1175,9 @@ void ReleaseReserveMessages(JobControlRecord* jcr)
{
PopReserveMessages(jcr);
jcr->lock();
- if (!jcr->impl->reserve_msgs) { goto bail_out; }
- delete jcr->impl->reserve_msgs;
- jcr->impl->reserve_msgs = NULL;
+ if (!jcr->sd_impl->reserve_msgs) { goto bail_out; }
+ delete jcr->sd_impl->reserve_msgs;
+ jcr->sd_impl->reserve_msgs = NULL;
bail_out:
jcr->unlock();
diff --git a/core/src/stored/sd_cmds.cc b/core/src/stored/sd_cmds.cc
index 9cfc6bb0c..0cd00bbd3 100644
--- a/core/src/stored/sd_cmds.cc
+++ b/core/src/stored/sd_cmds.cc
@@ -36,7 +36,7 @@
#include "stored/stored_globals.h"
#include "stored/append.h"
#include "stored/authenticate.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/sd_stats.h"
#include "stored/sd_stats.h"
#include "lib/bnet.h"
@@ -138,7 +138,7 @@ void* handle_stored_connection(BareosSocket* sd, char* job_name)
jcr->setJobStatusWithPriorityCheck(JS_ErrorTerminated);
}
- pthread_cond_signal(&jcr->impl->job_start_wait); /* wake waiting job */
+ pthread_cond_signal(&jcr->sd_impl->job_start_wait); /* wake waiting job */
FreeJcr(jcr);
return NULL;
@@ -225,7 +225,7 @@ bool DoListenRun(JobControlRecord* jcr)
*/
lock_mutex(mutex);
while (!jcr->authenticated && !JobCanceled(jcr)) {
- errstat = pthread_cond_wait(&jcr->impl->job_start_wait, &mutex);
+ errstat = pthread_cond_wait(&jcr->sd_impl->job_start_wait, &mutex);
if (errstat == EINVAL || errstat == EPERM) { break; }
Dmsg1(800, "=== Auth cond errstat=%d\n", errstat);
}
@@ -280,13 +280,13 @@ static bool StartReplicationSession(JobControlRecord* jcr)
BareosSocket* sd = jcr->store_bsock;
Dmsg1(120, "Start replication session: %s", sd->msg);
- if (jcr->impl->session_opened) {
+ if (jcr->sd_impl->session_opened) {
PmStrcpy(jcr->errmsg, _("Attempt to open already open session.\n"));
sd->fsend(NO_open);
return false;
}
- jcr->impl->session_opened = true;
+ jcr->sd_impl->session_opened = true;
// Send "Ticket" to Storage Daemon
sd->fsend(OK_start_replicate, jcr->VolSessionId);
@@ -305,7 +305,7 @@ static bool ReplicateData(JobControlRecord* jcr)
BareosSocket* sd = jcr->store_bsock;
Dmsg1(120, "Replicate data: %s", sd->msg);
- if (jcr->impl->session_opened) {
+ if (jcr->sd_impl->session_opened) {
utime_t now;
// Update the initial Job Statistics.
@@ -334,7 +334,7 @@ static bool EndReplicationSession(JobControlRecord* jcr)
BareosSocket* sd = jcr->store_bsock;
Dmsg1(120, "stored<stored: %s", sd->msg);
- if (!jcr->impl->session_opened) {
+ if (!jcr->sd_impl->session_opened) {
PmStrcpy(jcr->errmsg, _("Attempt to close non-open session.\n"));
sd->fsend(NOT_opened);
return false;
diff --git a/core/src/stored/sd_plugins.cc b/core/src/stored/sd_plugins.cc
index 53d4ed56a..1077915dd 100644
--- a/core/src/stored/sd_plugins.cc
+++ b/core/src/stored/sd_plugins.cc
@@ -30,7 +30,7 @@
#include "stored/stored.h"
#include "stored/stored_globals.h"
#include "stored/device_control_record.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "sd_plugins.h"
#include "lib/crypto_cache.h"
#include "stored/sd_stats.h"
@@ -501,7 +501,7 @@ static inline PluginContext* instantiate_plugin(JobControlRecord* jcr,
/**
* Send a bSdEventNewPluginOptions event to all plugins configured in
- * jcr->impl_->plugin_options.
+ * jcr->sd_impl_->plugin_options.
*/
void DispatchNewPluginOptions(JobControlRecord* jcr)
{
@@ -517,11 +517,11 @@ void DispatchNewPluginOptions(JobControlRecord* jcr)
if (!sd_plugin_list || sd_plugin_list->empty()) { return; }
- if (jcr->impl->plugin_options && jcr->impl->plugin_options->size()) {
+ if (jcr->sd_impl->plugin_options && jcr->sd_impl->plugin_options->size()) {
eventType = bSdEventNewPluginOptions;
event.eventType = eventType;
- foreach_alist_index (i, plugin_options, jcr->impl->plugin_options) {
+ foreach_alist_index (i, plugin_options, jcr->sd_impl->plugin_options) {
// Make a private copy of plugin options.
PmStrcpy(priv_plugin_options, plugin_options);
@@ -671,7 +671,7 @@ static bRC bareosGetValue(PluginContext* ctx, bsdrVariable var, void* value)
if (jcr) {
switch (var) {
case bsdVarJob:
- *((char**)value) = jcr->impl->job_name;
+ *((char**)value) = jcr->sd_impl->job_name;
Dmsg1(debuglevel, "sd-plugin: return bsdVarJobName=%s\n",
NPRT(*((char**)value)));
break;
@@ -695,8 +695,8 @@ static bRC bareosGetValue(PluginContext* ctx, bsdrVariable var, void* value)
NPRT(*((char**)value)));
break;
case bsdVarPool:
- if (jcr->impl->dcr) {
- *((char**)value) = jcr->impl->dcr->pool_name;
+ if (jcr->sd_impl->dcr) {
+ *((char**)value) = jcr->sd_impl->dcr->pool_name;
Dmsg1(debuglevel, "sd-plugin: return bsdVarPool=%s\n",
NPRT(*((char**)value)));
} else {
@@ -704,8 +704,8 @@ static bRC bareosGetValue(PluginContext* ctx, bsdrVariable var, void* value)
}
break;
case bsdVarPoolType:
- if (jcr->impl->dcr) {
- *((char**)value) = jcr->impl->dcr->pool_type;
+ if (jcr->sd_impl->dcr) {
+ *((char**)value) = jcr->sd_impl->dcr->pool_type;
Dmsg1(debuglevel, "sd-plugin: return bsdVarPoolType=%s\n",
NPRT(*((char**)value)));
} else {
@@ -713,8 +713,8 @@ static bRC bareosGetValue(PluginContext* ctx, bsdrVariable var, void* value)
}
break;
case bsdVarStorage:
- if (jcr->impl->dcr && jcr->impl->dcr->device_resource) {
- *((char**)value) = jcr->impl->dcr->device_resource->resource_name_;
+ if (jcr->sd_impl->dcr && jcr->sd_impl->dcr->device_resource) {
+ *((char**)value) = jcr->sd_impl->dcr->device_resource->resource_name_;
Dmsg1(debuglevel, "sd-plugin: return bsdVarStorage=%s\n",
NPRT(*((char**)value)));
} else {
@@ -722,8 +722,8 @@ static bRC bareosGetValue(PluginContext* ctx, bsdrVariable var, void* value)
}
break;
case bsdVarMediaType:
- if (jcr->impl->dcr) {
- *((char**)value) = jcr->impl->dcr->media_type;
+ if (jcr->sd_impl->dcr) {
+ *((char**)value) = jcr->sd_impl->dcr->media_type;
Dmsg1(debuglevel, "sd-plugin: return bsdVarMediaType=%s\n",
NPRT(*((char**)value)));
} else {
@@ -741,8 +741,8 @@ static bRC bareosGetValue(PluginContext* ctx, bsdrVariable var, void* value)
jcr->getJobStatus());
break;
case bsdVarVolumeName:
- if (jcr->impl->dcr) {
- *((char**)value) = jcr->impl->dcr->VolumeName;
+ if (jcr->sd_impl->dcr) {
+ *((char**)value) = jcr->sd_impl->dcr->VolumeName;
Dmsg1(debuglevel, "sd-plugin: return bsdVarVolumeName=%s\n",
NPRT(*((char**)value)));
} else {
diff --git a/core/src/stored/sd_stats.cc b/core/src/stored/sd_stats.cc
index 0e0f8e6f8..96831d7ab 100644
--- a/core/src/stored/sd_stats.cc
+++ b/core/src/stored/sd_stats.cc
@@ -29,7 +29,7 @@
#include "stored/stored.h"
#include "stored/stored_globals.h"
#include "stored/device_control_record.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "lib/util.h"
#include "include/jcr.h"
#include "lib/parse_conf.h"
@@ -294,8 +294,9 @@ void UpdateJobStatistics(JobControlRecord* jcr, utime_t now)
job_stat->timestamp = now;
job_stat->JobFiles = jcr->JobFiles;
job_stat->JobBytes = jcr->JobBytes;
- if (jcr->impl->dcr && jcr->impl->dcr->device_resource) {
- job_stat->DevName = strdup(jcr->impl->dcr->device_resource->resource_name_);
+ if (jcr->sd_impl->dcr && jcr->sd_impl->dcr->device_resource) {
+ job_stat->DevName
+ = strdup(jcr->sd_impl->dcr->device_resource->resource_name_);
} else {
job_stat->DevName = strdup("unknown");
}
diff --git a/core/src/stored/spool.cc b/core/src/stored/spool.cc
index 770421aa6..cd66e8a4c 100644
--- a/core/src/stored/spool.cc
+++ b/core/src/stored/spool.cc
@@ -31,7 +31,7 @@
#include "stored/acquire.h"
#include "stored/device.h"
#include "stored/device_control_record.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "lib/berrno.h"
#include "lib/bsock.h"
#include "lib/edit.h"
@@ -118,7 +118,7 @@ bool BeginDataSpool(DeviceControlRecord* dcr)
{
bool status = true;
- if (dcr->jcr->impl->spool_data) {
+ if (dcr->jcr->sd_impl->spool_data) {
Dmsg0(100, "Turning on data spooling\n");
dcr->spool_data = true;
status = OpenDataSpoolFile(dcr);
@@ -186,7 +186,7 @@ static bool OpenDataSpoolFile(DeviceControlRecord* dcr)
if ((spool_fd = open(name, O_CREAT | O_TRUNC | O_RDWR | O_BINARY, 0640))
>= 0) {
dcr->spool_fd = spool_fd;
- dcr->jcr->impl->spool_attributes = true;
+ dcr->jcr->sd_impl->spool_attributes = true;
} else {
BErrNo be;
@@ -249,7 +249,7 @@ static bool DespoolData(DeviceControlRecord* dcr, bool commit)
BareosSocket* dir = jcr->dir_bsock;
Dmsg0(100, "Despooling data\n");
- if (jcr->impl->dcr->job_spool_size == 0) {
+ if (jcr->sd_impl->dcr->job_spool_size == 0) {
Jmsg(jcr, M_WARNING, 0,
_("Despooling zero bytes. Your disk is probably FULL!\n"));
}
@@ -263,13 +263,13 @@ static bool DespoolData(DeviceControlRecord* dcr, bool commit)
Jmsg(jcr, M_INFO, 0,
_("Committing spooled data to Volume \"%s\". Despooling %s bytes "
"...\n"),
- jcr->impl->dcr->VolumeName,
- edit_uint64_with_commas(jcr->impl->dcr->job_spool_size, ec1));
+ jcr->sd_impl->dcr->VolumeName,
+ edit_uint64_with_commas(jcr->sd_impl->dcr->job_spool_size, ec1));
jcr->setJobStatusWithPriorityCheck(JS_DataCommitting);
} else {
Jmsg(jcr, M_INFO, 0,
_("Writing spooled data to Volume. Despooling %s bytes ...\n"),
- edit_uint64_with_commas(jcr->impl->dcr->job_spool_size, ec1));
+ edit_uint64_with_commas(jcr->sd_impl->dcr->job_spool_size, ec1));
jcr->setJobStatusWithPriorityCheck(JS_DataDespooling);
}
jcr->sendJobStatus(JS_DataDespooling);
@@ -373,8 +373,8 @@ static bool DespoolData(DeviceControlRecord* dcr, bool commit)
"Bytes/second\n"),
despool_elapsed / 3600, despool_elapsed % 3600 / 60,
despool_elapsed % 60,
- edit_uint64_with_suffix(jcr->impl->dcr->job_spool_size / despool_elapsed,
- ec1));
+ edit_uint64_with_suffix(
+ jcr->sd_impl->dcr->job_spool_size / despool_elapsed, ec1));
dcr->block = block; /* reset block */
@@ -674,7 +674,7 @@ static bool WriteSpoolData(DeviceControlRecord* dcr)
bool AttributesAreSpooled(JobControlRecord* jcr)
{
- return jcr->impl->spool_attributes && jcr->dir_bsock->spool_fd_ != -1;
+ return jcr->sd_impl->spool_attributes && jcr->dir_bsock->spool_fd_ != -1;
}
/**
@@ -686,7 +686,7 @@ bool AttributesAreSpooled(JobControlRecord* jcr)
*/
bool BeginAttributeSpool(JobControlRecord* jcr)
{
- if (!jcr->impl->no_attributes && jcr->impl->spool_attributes) {
+ if (!jcr->sd_impl->no_attributes && jcr->sd_impl->spool_attributes) {
return OpenAttrSpoolFile(jcr, jcr->dir_bsock);
}
return true;
diff --git a/core/src/stored/status.cc b/core/src/stored/status.cc
index 3e76b991f..5432af94e 100644
--- a/core/src/stored/status.cc
+++ b/core/src/stored/status.cc
@@ -31,7 +31,7 @@
#include "stored/stored.h"
#include "stored/stored_globals.h"
#include "stored/device_control_record.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/spool.h"
#include "stored/status.h"
#include "lib/status_packet.h"
@@ -667,8 +667,8 @@ static void ListRunningJobs(StatusPacket* sp)
job_type_to_str(jcr->getJobType()), jcr->Job);
sp->send(msg, len);
}
- dcr = jcr->impl->dcr;
- rdcr = jcr->impl->read_dcr;
+ dcr = jcr->sd_impl->dcr;
+ rdcr = jcr->sd_impl->read_dcr;
if ((dcr && dcr->device_resource) || (rdcr && rdcr->device_resource)) {
bstrncpy(JobName, jcr->Job, sizeof(JobName));
/* There are three periods after the Job name */
@@ -754,7 +754,7 @@ static inline void SendDriveReserveMessages(JobControlRecord* jcr,
char* msg;
jcr->lock();
- msgs = jcr->impl->reserve_msgs;
+ msgs = jcr->sd_impl->reserve_msgs;
if (!msgs || msgs->size() == 0) { goto bail_out; }
for (i = msgs->size() - 1; i >= 0; i--) {
msg = (char*)msgs->get(i);
@@ -782,7 +782,7 @@ static void ListJobsWaitingOnReservation(StatusPacket* sp)
}
foreach_jcr (jcr) {
- if (!jcr->impl->reserve_msgs) { continue; }
+ if (!jcr->sd_impl->reserve_msgs) { continue; }
SendDriveReserveMessages(jcr, sp);
}
endeach_jcr(jcr);
diff --git a/core/src/stored/stored.cc b/core/src/stored/stored.cc
index 57e19939c..efd17e9c8 100644
--- a/core/src/stored/stored.cc
+++ b/core/src/stored/stored.cc
@@ -38,7 +38,7 @@
#include "stored/autochanger.h"
#include "stored/bsr.h"
#include "stored/device.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/job.h"
#include "stored/label.h"
#include "stored/ndmp_tape.h"
@@ -505,7 +505,7 @@ extern "C" void* device_initialization(void*)
jcr->setJobType(JT_SYSTEM);
// Initialize job start condition variable
- errstat = pthread_cond_init(&jcr->impl->job_start_wait, nullptr);
+ errstat = pthread_cond_init(&jcr->sd_impl->job_start_wait, nullptr);
if (errstat != 0) {
BErrNo be;
Jmsg1(jcr, M_ABORT, 0,
@@ -514,7 +514,7 @@ extern "C" void* device_initialization(void*)
}
// Initialize job end condition variable
- errstat = pthread_cond_init(&jcr->impl->job_end_wait, nullptr);
+ errstat = pthread_cond_init(&jcr->sd_impl->job_end_wait, nullptr);
if (errstat != 0) {
BErrNo be;
Jmsg1(jcr, M_ABORT, 0,
@@ -534,9 +534,9 @@ extern "C" void* device_initialization(void*)
}
dcr = new StorageDaemonDeviceControlRecord;
- jcr->impl->dcr = dcr;
+ jcr->sd_impl->dcr = dcr;
SetupNewDcrDevice(jcr, dcr, dev, nullptr);
- jcr->impl->dcr->SetWillWrite();
+ jcr->sd_impl->dcr->SetWillWrite();
GeneratePluginEvent(jcr, bSdEventDeviceInit, dcr);
if (dev->AttachedToAutochanger()) {
// If autochanger set slot in dev structure
@@ -550,7 +550,7 @@ extern "C" void* device_initialization(void*)
dev->print_name());
Dmsg1(20, "Could not open device %s\n", dev->print_name());
FreeDeviceControlRecord(dcr);
- jcr->impl->dcr = nullptr;
+ jcr->sd_impl->dcr = nullptr;
continue;
}
}
@@ -568,7 +568,7 @@ extern "C" void* device_initialization(void*)
}
}
FreeDeviceControlRecord(dcr);
- jcr->impl->dcr = nullptr;
+ jcr->sd_impl->dcr = nullptr;
}
FreeJcr(jcr);
init_done = true;
@@ -620,16 +620,16 @@ static
jcr->MyThreadSendSignal(TIMEOUT_SIGNAL);
Dmsg1(100, "term_stored killing JobId=%d\n", jcr->JobId);
/* ***FIXME*** wiffle through all dcrs */
- if (jcr->impl->dcr && jcr->impl->dcr->dev
- && jcr->impl->dcr->dev->blocked()) {
- pthread_cond_broadcast(&jcr->impl->dcr->dev->wait_next_vol);
+ if (jcr->sd_impl->dcr && jcr->sd_impl->dcr->dev
+ && jcr->sd_impl->dcr->dev->blocked()) {
+ pthread_cond_broadcast(&jcr->sd_impl->dcr->dev->wait_next_vol);
Dmsg1(100, "JobId=%u broadcast wait_device_release\n",
(uint32_t)jcr->JobId);
ReleaseDeviceCond();
}
- if (jcr->impl->read_dcr && jcr->impl->read_dcr->dev
- && jcr->impl->read_dcr->dev->blocked()) {
- pthread_cond_broadcast(&jcr->impl->read_dcr->dev->wait_next_vol);
+ if (jcr->sd_impl->read_dcr && jcr->sd_impl->read_dcr->dev
+ && jcr->sd_impl->read_dcr->dev->blocked()) {
+ pthread_cond_broadcast(&jcr->sd_impl->read_dcr->dev->wait_next_vol);
Dmsg1(100, "JobId=%u broadcast wait_device_release\n",
(uint32_t)jcr->JobId);
ReleaseDeviceCond();
diff --git a/core/src/stored/jcr_private.h b/core/src/stored/stored_jcr_impl.h
index 485ad3273..fb459b210 100644
--- a/core/src/stored/jcr_private.h
+++ b/core/src/stored/stored_jcr_impl.h
@@ -3,7 +3,7 @@
Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
Copyright (C) 2011-2012 Planets Communications B.V.
- Copyright (C) 2013-2021 Bareos GmbH & Co. KG
+ Copyright (C) 2013-2022 Bareos GmbH & Co. KG
This program is Free Software; you can redistribute it and/or
modify it under the terms of version three of the GNU Affero General Public
@@ -21,8 +21,8 @@
02110-1301, USA.
*/
-#ifndef BAREOS_STORED_JCR_PRIVATE_H_
-#define BAREOS_STORED_JCR_PRIVATE_H_
+#ifndef BAREOS_STORED_STORED_JCR_IMPL_H_
+#define BAREOS_STORED_STORED_JCR_IMPL_H_
#include "stored/read_ctx.h"
#include "stored/stored_conf.h"
@@ -65,7 +65,7 @@ struct DeviceWaitTimes {
/* clang-format off */
-struct JobControlRecordPrivate {
+struct StoredJcrImpl {
JobControlRecord* next_dev{}; /**< Next JobControlRecord attached to device */
JobControlRecord* prev_dev{}; /**< Previous JobControlRecord attached to device */
pthread_cond_t job_start_wait = PTHREAD_COND_INITIALIZER; /**< Wait for FD to start Job */
@@ -104,4 +104,4 @@ struct JobControlRecordPrivate {
};
/* clang-format on */
-#endif // BAREOS_STORED_JCR_PRIVATE_H_
+#endif // BAREOS_STORED_STORED_JCR_IMPL_H_
diff --git a/core/src/tests/catalog.cc b/core/src/tests/catalog.cc
index 48024395b..07bd57658 100644
--- a/core/src/tests/catalog.cc
+++ b/core/src/tests/catalog.cc
@@ -26,7 +26,7 @@
#include "dird/get_database_connection.h"
#include "dird/dird_conf.h"
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
@@ -99,11 +99,11 @@ void CatalogTest::SetUp()
// connect to database
{
jcr = directordaemon::NewDirectorJcr(directordaemon::DirdFreeJcr);
- jcr->impl->res.catalog
+ jcr->dir_impl->res.catalog
= (directordaemon::CatalogResource*)my_config->GetResWithName(
directordaemon::R_CATALOG, catalog_backend_name.c_str());
- ASSERT_NE(jcr->impl->res.catalog, nullptr);
+ ASSERT_NE(jcr->dir_impl->res.catalog, nullptr);
auto backenddir = std::vector<std::string>{backend_dir};
DbSetBackendDirs(backenddir);
diff --git a/core/src/tests/dir_fd_connection.cc b/core/src/tests/dir_fd_connection.cc
index 04d15f035..c19132c34 100644
--- a/core/src/tests/dir_fd_connection.cc
+++ b/core/src/tests/dir_fd_connection.cc
@@ -39,7 +39,7 @@ TEST(DirectorToClientConnection, DoesNotConnectWhenDisabled)
JobControlRecord* jcr
= directordaemon::NewDirectorJcr(directordaemon::DirdFreeJcr);
- jcr->impl->res.client = static_cast<directordaemon::ClientResource*>(
+ jcr->dir_impl->res.client = static_cast<directordaemon::ClientResource*>(
directordaemon::my_config->GetResWithName(directordaemon::R_CLIENT,
"fd-no-connection"));
directordaemon::UaContext* ua = nullptr;
diff --git a/core/src/tests/messages_resource.cc b/core/src/tests/messages_resource.cc
index e87dee44f..bff646252 100644
--- a/core/src/tests/messages_resource.cc
+++ b/core/src/tests/messages_resource.cc
@@ -31,7 +31,7 @@
#include "dird/dird_globals.h"
#include "dird/get_database_connection.h"
#include "dird/job.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "lib/messages_resource.h"
#include "lib/parse_conf.h"
#include "lib/util.h"
diff --git a/core/src/tests/run_on_incoming_connect_interval.cc b/core/src/tests/run_on_incoming_connect_interval.cc
index 0ee6573ce..fa41fa5e6 100644
--- a/core/src/tests/run_on_incoming_connect_interval.cc
+++ b/core/src/tests/run_on_incoming_connect_interval.cc
@@ -33,7 +33,7 @@
#include "cats/cats.h"
#include "dird/dird_conf.h"
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/job.h"
#include "dird/run_on_incoming_connect_interval.h"
#include "dird/scheduler.h"
@@ -145,7 +145,7 @@ static void SchedulerJobCallback(JobControlRecord* jcr)
++test_results.job_counter;
// add job-name to map
- test_results.job_names[jcr->impl->res.job->resource_name_]++;
+ test_results.job_names[jcr->dir_impl->res.job->resource_name_]++;
FreeJcr(jcr);
}
diff --git a/core/src/tests/scheduler.cc b/core/src/tests/scheduler.cc
index 07b97bc63..bc44beea8 100644
--- a/core/src/tests/scheduler.cc
+++ b/core/src/tests/scheduler.cc
@@ -29,7 +29,7 @@
#include "dird/dird_globals.h"
-#include "dird/jcr_private.h"
+#include "dird/director_jcr_impl.h"
#include "dird/scheduler.h"
#include "dird/dird_conf.h"
#define DIRECTOR_DAEMON
@@ -144,7 +144,9 @@ void SimulatedTimeSource::ExecuteJob(JobControlRecord* jcr)
list_of_job_execution_time_stamps.emplace_back(
time_adapter->time_source_->SystemTime());
- if (debug) { std::cout << jcr->impl->res.job->resource_name_ << std::endl; }
+ if (debug) {
+ std::cout << jcr->dir_impl->res.job->resource_name_ << std::endl;
+ }
if (counter_of_number_of_jobs_run == maximum_number_of_jobs_run) {
scheduler->Terminate();
diff --git a/core/src/tests/sd_backend.cc b/core/src/tests/sd_backend.cc
index 89b6c6365..8d1755903 100644
--- a/core/src/tests/sd_backend.cc
+++ b/core/src/tests/sd_backend.cc
@@ -38,7 +38,7 @@
#include "lib/parse_conf.h"
#include "stored/butil.h"
#include "stored/device_control_record.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/job.h"
#include "stored/sd_plugins.h"
#include "stored/sd_stats.h"
diff --git a/core/src/tests/sd_reservation.cc b/core/src/tests/sd_reservation.cc
index 748dc8886..38a9a0fb7 100644
--- a/core/src/tests/sd_reservation.cc
+++ b/core/src/tests/sd_reservation.cc
@@ -40,7 +40,7 @@
#include "lib/edit.h"
#include "lib/parse_conf.h"
#include "stored/device_control_record.h"
-#include "stored/jcr_private.h"
+#include "stored/stored_jcr_impl.h"
#include "stored/job.h"
#include "stored/sd_plugins.h"
#include "stored/sd_stats.h"
@@ -135,7 +135,7 @@ void WaitThenUnreserve(std::unique_ptr<TestJob>&);
void WaitThenUnreserve(std::unique_ptr<TestJob>& job)
{
std::this_thread::sleep_for(std::chrono::milliseconds(10));
- job->jcr->impl->dcr->UnreserveDevice();
+ job->jcr->sd_impl->dcr->UnreserveDevice();
ReleaseDeviceCond();
}
diff --git a/core/src/win32/filed/vss.cc b/core/src/win32/filed/vss.cc
index 8b68e24b2..ca626f77a 100644
--- a/core/src/win32/filed/vss.cc
+++ b/core/src/win32/filed/vss.cc
@@ -2,7 +2,7 @@
BAREOSĀ® - Backup Archiving REcovery Open Sourced
Copyright (C) 2005-2010 Free Software Foundation Europe e.V.
- Copyright (C) 2014-2019 Bareos GmbH & Co. KG
+ Copyright (C) 2014-2022 Bareos GmbH & Co. KG
This program is Free Software; you can redistribute it and/or
modify it under the terms of version three of the GNU Affero General Public
@@ -33,7 +33,7 @@
# include "include/bareos.h"
# include "filed/filed.h"
-# include "filed/jcr_private.h"
+# include "filed/filed_jcr_impl.h"
# include "lib/thread_specific_data.h"
# include "ms_atl.h"
@@ -54,9 +54,9 @@ static bool VSSPathConvert(const char* szFilePath,
{
JobControlRecord* jcr = GetJcrFromThreadSpecificData();
- if (jcr && jcr->impl->pVSSClient) {
- return jcr->impl->pVSSClient->GetShadowPath(szFilePath, szShadowPath,
- nBuflen);
+ if (jcr && jcr->fd_impl->pVSSClient) {
+ return jcr->fd_impl->pVSSClient->GetShadowPath(szFilePath, szShadowPath,
+ nBuflen);
}
return false;
@@ -68,9 +68,9 @@ static bool VSSPathConvertW(const wchar_t* szFilePath,
{
JobControlRecord* jcr = GetJcrFromThreadSpecificData();
- if (jcr && jcr->impl->pVSSClient) {
- return jcr->impl->pVSSClient->GetShadowPathW(szFilePath, szShadowPath,
- nBuflen);
+ if (jcr && jcr->fd_impl->pVSSClient) {
+ return jcr->fd_impl->pVSSClient->GetShadowPathW(szFilePath, szShadowPath,
+ nBuflen);
}
return false;
@@ -82,15 +82,15 @@ void VSSInit(JobControlRecord* jcr)
if (g_MajorVersion == 5) {
switch (g_MinorVersion) {
case 1:
- jcr->impl->pVSSClient = new VSSClientXP();
+ jcr->fd_impl->pVSSClient = new VSSClientXP();
break;
case 2:
- jcr->impl->pVSSClient = new VSSClient2003();
+ jcr->fd_impl->pVSSClient = new VSSClient2003();
break;
}
// Vista or Longhorn or later
} else if (g_MajorVersion >= 6) {
- jcr->impl->pVSSClient = new VSSClientVista();
+ jcr->fd_impl->pVSSClient = new VSSClientVista();
}
// Setup the callback functions.