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:
authorAndreas Rogge <andreas.rogge@bareos.com>2022-11-08 19:09:56 +0300
committerPhilipp Storz <philipp.storz@bareos.com>2022-11-09 19:29:39 +0300
commit9d22ae2a7dad8f79bd364576f771fff654d02fda (patch)
tree3f21333f570aef49259001ebca44844020772034
parent95f1be87cebe22d951cf9a551239632ce96e7937 (diff)
core: distinct names for JobControlRecordPrivate
When we moved the daemon-specific functionality of the JobControlRecord into JobControlRecordPrivate, we essentially introduced three different types that were all named JobControlRecordPrivate - one for the Director, one for the Storage Daemon and one for the File Daemon. This could lead to ODR violations when you tried to link parts of the daemons together. In fact, that implementation already behaved like a union of the three different types (i.e. requiring per-implementation initialisation and teardown, undefined behaviour when accessing via the wrong type, etc.). This patch renames the daemon's individual JobControlRecordPrivate to DirectorJcrImpl, StoredJcrImpl and FiledJcrImpl. The impl-pointer was changed to a union of dir_impl, sd_impl and fd_impl. With this change applied you can now build programs that use two or more of the JCR types.
-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
116 files changed, 3217 insertions, 3028 deletions
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.