/*
Bacula® - The Network Backup Solution
- Copyright (C) 2000-2006 Free Software Foundation Europe e.V.
+ Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
The main author of Bacula is Kern Sibbald, with contributions from
many others, a complete list can be found in the file AUTHORS.
static char OKbackup[] = "2000 OK backup\n";
static char OKstore[] = "2000 OK storage\n";
static char EndJob[] = "2800 End Job TermCode=%d JobFiles=%u "
- "ReadBytes=%lld JobBytes=%lld Errors=%u\n";
-
+ "ReadBytes=%llu JobBytes=%llu Errors=%u "
+ "VSS=%d Encrypt=%d\n";
+/* Pre 1.39.29 (04Dec06) EndJob */
+static char OldEndJob[] = "2800 End Job TermCode=%d JobFiles=%u "
+ "ReadBytes=%llu JobBytes=%llu Errors=%u\n";
/*
* Called here before the job is run to do the job
* specific setup.
apply_pool_overrides(jcr);
- jcr->jr.PoolId = get_or_create_pool_record(jcr, jcr->pool->hdr.name);
+ jcr->jr.PoolId = get_or_create_pool_record(jcr, jcr->pool->name());
if (jcr->jr.PoolId == 0) {
return false;
}
set_jcr_job_status(jcr, JS_Running);
fd = jcr->file_bsock;
- if (!send_include_list(jcr)) {
+ if (!send_level_command(jcr)) {
goto bail_out;
}
- if (!send_exclude_list(jcr)) {
+ if (!send_runscripts_commands(jcr)) {
goto bail_out;
}
- if (!send_level_command(jcr)) {
+ if (!send_include_list(jcr)) {
+ goto bail_out;
+ }
+
+ if (!send_exclude_list(jcr)) {
goto bail_out;
}
goto bail_out;
}
- if (!send_runscripts_commands(jcr)) {
- goto bail_out;
- }
-
/*
* We re-update the job start record so that the start
* time is set after the run before job. This avoids
/* Pickup Job termination data */
stat = wait_for_job_termination(jcr);
+#ifdef HAVE_BATCH_FILE_INSERT
+ db_create_batch_file_record(jcr); /* used by bulk batch file insert */
+#endif
if (stat == JS_Terminated) {
backup_cleanup(jcr, stat);
return true;
BSOCK *fd = jcr->file_bsock;
bool fd_ok = false;
uint32_t JobFiles, Errors;
- uint64_t ReadBytes, JobBytes;
+ uint64_t ReadBytes = 0;
+ uint64_t JobBytes = 0;
+ int VSS = 0;
+ int Encrypt = 0;
set_jcr_job_status(jcr, JS_Running);
/* Wait for Client to terminate */
while ((n = bget_dirmsg(fd)) >= 0) {
- if (!fd_ok && sscanf(fd->msg, EndJob, &jcr->FDJobStatus, &JobFiles,
- &ReadBytes, &JobBytes, &Errors) == 5) {
+ if (!fd_ok &&
+ (sscanf(fd->msg, EndJob, &jcr->FDJobStatus, &JobFiles,
+ &ReadBytes, &JobBytes, &Errors, &VSS, &Encrypt) == 7 ||
+ sscanf(fd->msg, OldEndJob, &jcr->FDJobStatus, &JobFiles,
+ &ReadBytes, &JobBytes, &Errors) == 5)) {
fd_ok = true;
set_jcr_job_status(jcr, jcr->FDJobStatus);
Dmsg1(100, "FDStatus=%c\n", (char)jcr->JobStatus);
break;
}
}
+
if (is_bnet_error(fd)) {
Jmsg(jcr, M_FATAL, 0, _("Network error with FD during %s: ERR=%s\n"),
job_type_to_str(jcr->JobType), bnet_strerror(fd));
jcr->Errors = Errors;
jcr->ReadBytes = ReadBytes;
jcr->JobBytes = JobBytes;
+ jcr->VSS = VSS;
+ jcr->Encrypt = Encrypt;
} else {
Jmsg(jcr, M_FATAL, 0, _("No Job status returned from FD.\n"));
}
utime_t RunTime;
Dmsg2(100, "Enter backup_cleanup %d %c\n", TermCode, TermCode);
- dequeue_messages(jcr); /* display any queued messages */
memset(&mr, 0, sizeof(mr));
memset(&cr, 0, sizeof(cr));
- set_jcr_job_status(jcr, TermCode);
- update_job_end_record(jcr); /* update database */
+ update_job_end(jcr, TermCode);
if (!db_get_job_record(jcr, jcr->db, &jcr->jr)) {
Jmsg(jcr, M_WARNING, 0, _("Error getting job record for stats: %s"),
" SD Bytes Written: %s (%sB)\n"
" Rate: %.1f KB/s\n"
" Software Compression: %s\n"
+" VSS: %s\n"
+" Encryption: %s\n"
" Volume name(s): %s\n"
" Volume Session Id: %d\n"
" Volume Session Time: %d\n"
edit_uint64_with_suffix(jcr->SDJobBytes, ec6),
(float)kbps,
compress,
+ jcr->VSS?"yes":"no",
+ jcr->Encrypt?"yes":"no",
jcr->VolumeName,
jcr->VolSessionId,
jcr->VolSessionTime,