#include "dird.h"
#include "findlib/find.h"
-/* Imported Global Variables */
-extern int debug_level;
-
/* Commands sent to File daemon */
static char verifycmd[] = "verify level=%s\n";
static char storaddr[] = "storage address=%s port=%d ssl=0\n";
JobId_t verify_jobid = 0;
const char *Name;
- memset(&jcr->target_jr, 0, sizeof(jcr->target_jr));
+ free_wstorage(jcr); /* we don't write */
+
+ memset(&jcr->previous_jr, 0, sizeof(jcr->previous_jr));
Dmsg1(9, "bdird: created client %s record\n", jcr->client->hdr.name);
if (jcr->JobLevel == L_VERIFY_CATALOG ||
jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG ||
jcr->JobLevel == L_VERIFY_DISK_TO_CATALOG) {
- jcr->target_jr.JobId = verify_jobid;
- if (!db_get_job_record(jcr, jcr->db, &jcr->target_jr)) {
+ jcr->previous_jr.JobId = verify_jobid;
+ if (!db_get_job_record(jcr, jcr->db, &jcr->previous_jr)) {
Jmsg(jcr, M_FATAL, 0, _("Could not get job record for previous Job. ERR=%s"),
db_strerror(jcr->db));
return false;
}
- if (jcr->target_jr.JobStatus != 'T') {
+ if (jcr->previous_jr.JobStatus != 'T') {
Jmsg(jcr, M_FATAL, 0, _("Last Job %d did not terminate normally. JobStatus=%c\n"),
- verify_jobid, jcr->target_jr.JobStatus);
+ verify_jobid, jcr->previous_jr.JobStatus);
return false;
}
Jmsg(jcr, M_INFO, 0, _("Verifying against JobId=%d Job=%s\n"),
- jcr->target_jr.JobId, jcr->target_jr.Job);
+ jcr->previous_jr.JobId, jcr->previous_jr.Job);
}
/*
* File daemon but not used).
*/
if (jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG) {
- RESTORE_CTX rx;
- UAContext *ua;
- memset(&rx, 0, sizeof(rx));
- rx.bsr = new_bsr();
- rx.JobIds = "";
- rx.bsr->JobId = jcr->target_jr.JobId;
- ua = new_ua_context(jcr);
- complete_bsr(ua, rx.bsr);
- rx.bsr->fi = new_findex();
- rx.bsr->fi->findex = 1;
- rx.bsr->fi->findex2 = jcr->target_jr.JobFiles;
- jcr->ExpectedFiles = write_bsr_file(ua, rx);
- if (jcr->ExpectedFiles == 0) {
- free_ua_context(ua);
- free_bsr(rx.bsr);
+ if (!create_restore_bootstrap_file(jcr)) {
return false;
}
- if (jcr->RestoreBootstrap) {
- free(jcr->RestoreBootstrap);
- }
- POOLMEM *fname = get_pool_memory(PM_MESSAGE);
- make_unique_restore_filename(ua, &fname);
- jcr->RestoreBootstrap = bstrdup(fname);
- free_ua_context(ua);
- free_bsr(rx.bsr);
- free_pool_memory(fname);
- jcr->needs_sd = true;
-
} else {
jcr->sd_auth_key = bstrdup("dummy"); /* dummy Storage daemon key */
}
if (jcr->JobLevel == L_VERIFY_DISK_TO_CATALOG && jcr->verify_job) {
jcr->fileset = jcr->verify_job->fileset;
}
- Dmsg2(100, "ClientId=%u JobLevel=%c\n", jcr->target_jr.ClientId, jcr->JobLevel);
+ Dmsg2(100, "ClientId=%u JobLevel=%c\n", jcr->previous_jr.ClientId, jcr->JobLevel);
return true;
}
/*
* Now start a job with the Storage daemon
*/
- if (!start_storage_daemon_job(jcr, jcr->storage, NULL)) {
+ if (!start_storage_daemon_job(jcr, jcr->rstorage, NULL)) {
+ return false;
+ }
+ if (!bnet_fsend(jcr->store_bsock, "run")) {
return false;
}
/*
}
Dmsg0(50, "Storage daemon connection OK\n");
- if (!bnet_fsend(jcr->store_bsock, "run")) {
- return false;
- }
}
/*
* OK, now connect to the File daemon
/*
* send Storage daemon address to the File daemon
*/
- if (jcr->store->SDDport == 0) {
- jcr->store->SDDport = jcr->store->SDport;
+ if (jcr->rstore->SDDport == 0) {
+ jcr->rstore->SDDport = jcr->rstore->SDport;
}
- bnet_fsend(fd, storaddr, jcr->store->address, jcr->store->SDDport);
+ bnet_fsend(fd, storaddr, jcr->rstore->address, jcr->rstore->SDDport);
if (!response(jcr, fd, OKstore, "Storage", DISPLAY_ERROR)) {
return false;
}
return false;
}
- if (!send_run_before_and_after_commands(jcr)) {
+ if (!send_runscripts_commands(jcr)) {
return false;
}
Dmsg0(10, "Verify level=catalog\n");
jcr->sd_msg_thread_done = true; /* no SD msg thread, so it is done */
jcr->SDJobStatus = JS_Terminated;
- get_attributes_and_compare_to_catalog(jcr, jcr->target_jr.JobId);
+ get_attributes_and_compare_to_catalog(jcr, jcr->previous_jr.JobId);
break;
case L_VERIFY_VOLUME_TO_CATALOG:
Dmsg0(10, "Verify level=volume\n");
- get_attributes_and_compare_to_catalog(jcr, jcr->target_jr.JobId);
+ get_attributes_and_compare_to_catalog(jcr, jcr->previous_jr.JobId);
break;
case L_VERIFY_DISK_TO_CATALOG:
Dmsg0(10, "Verify level=disk_to_catalog\n");
jcr->sd_msg_thread_done = true; /* no SD msg thread, so it is done */
jcr->SDJobStatus = JS_Terminated;
- get_attributes_and_compare_to_catalog(jcr, jcr->target_jr.JobId);
+ get_attributes_and_compare_to_catalog(jcr, jcr->previous_jr.JobId);
break;
case L_VERIFY_INIT:
jcr->fileset->hdr.name,
level_to_str(jcr->JobLevel),
jcr->client->hdr.name,
- jcr->target_jr.JobId,
+ jcr->previous_jr.JobId,
Name,
sdt,
edt,
jcr->fileset->hdr.name,
level_to_str(jcr->JobLevel),
jcr->client->hdr.name,
- jcr->target_jr.JobId,
+ jcr->previous_jr.JobId,
Name,
sdt,
edt,
*/
fdbr.FileId = 0;
if (!db_get_file_attributes_record(jcr, jcr->db, jcr->fname,
- &jcr->target_jr, &fdbr)) {
+ &jcr->previous_jr, &fdbr)) {
Jmsg(jcr, M_INFO, 0, _("New file: %s\n"), jcr->fname);
Dmsg1(020, _("File not in catalog: %s\n"), jcr->fname);
stat = JS_Differences;
}
/* Now find all the files that are missing -- i.e. all files in
- * the database where the MarkedId != current JobId
+ * the database where the MarkId != current JobId
*/
jcr->fn_printed = false;
bsnprintf(buf, sizeof(buf),
"SELECT Path.Path,Filename.Name FROM File,Path,Filename "
"WHERE File.JobId=%d "
-"AND File.MarkedId!=%d AND File.PathId=Path.PathId "
+"AND File.MarkId!=%d AND File.PathId=Path.PathId "
"AND File.FilenameId=Filename.FilenameId",
JobId, jcr->JobId);
/* missing_handler is called for each file found */