X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fdird%2Fbackup.c;h=029dfa0c89179ab8bb34bb8068062310be01394b;hb=a88224a3ce120783d72e770ff9a04fcac635333a;hp=18286b5f7dc695ff3201a499a463990cda78030b;hpb=4e502c79e55a6e7de8f9109e96322481d189acd9;p=bacula%2Fbacula diff --git a/bacula/src/dird/backup.c b/bacula/src/dird/backup.c index 18286b5f7d..029dfa0c89 100644 --- a/bacula/src/dird/backup.c +++ b/bacula/src/dird/backup.c @@ -1,7 +1,7 @@ /* Bacula® - The Network Backup Solution - Copyright (C) 2000-2008 Free Software Foundation Europe e.V. + Copyright (C) 2000-2009 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. @@ -144,8 +144,9 @@ bool send_accurate_current_files(JCR *jcr) Jmsg(jcr, M_FATAL, 0, _("Cannot find previous jobids.\n")); return false; } - Jmsg(jcr, M_INFO, 0, _("Sending Accurate information.\n")); - + if (jcr->JobId) { /* display the message only for real jobs */ + Jmsg(jcr, M_INFO, 0, _("Sending Accurate information.\n")); + } /* to be able to allocate the right size for htable */ POOLMEM *nb = get_pool_memory(PM_FNAME); *nb = 0; /* clear buffer */ @@ -348,7 +349,8 @@ int wait_for_job_termination(JCR *jcr, int timeout) int32_t n = 0; BSOCK *fd = jcr->file_bsock; bool fd_ok = false; - uint32_t JobFiles, Errors; + uint32_t JobFiles, JobErrors; + uint32_t JobWarnings = 0; uint64_t ReadBytes = 0; uint64_t JobBytes = 0; int VSS = 0; @@ -365,9 +367,9 @@ int wait_for_job_termination(JCR *jcr, int timeout) while ((n = bget_dirmsg(fd)) >= 0) { if (!fd_ok && (sscanf(fd->msg, EndJob, &jcr->FDJobStatus, &JobFiles, - &ReadBytes, &JobBytes, &Errors, &VSS, &Encrypt) == 7 || + &ReadBytes, &JobBytes, &JobErrors, &VSS, &Encrypt) == 7 || sscanf(fd->msg, OldEndJob, &jcr->FDJobStatus, &JobFiles, - &ReadBytes, &JobBytes, &Errors) == 5)) { + &ReadBytes, &JobBytes, &JobErrors) == 5)) { fd_ok = true; set_jcr_job_status(jcr, jcr->FDJobStatus); Dmsg1(100, "FDStatus=%c\n", (char)jcr->JobStatus); @@ -395,15 +397,16 @@ int wait_for_job_termination(JCR *jcr, int timeout) cancel_storage_daemon_job(jcr); } - /* Note, the SD stores in jcr->JobFiles/ReadBytes/JobBytes/Errors */ + /* Note, the SD stores in jcr->JobFiles/ReadBytes/JobBytes/JobErrors */ wait_for_storage_daemon_termination(jcr); /* Return values from FD */ if (fd_ok) { jcr->JobFiles = JobFiles; - jcr->Errors = Errors; + jcr->JobErrors += JobErrors; /* Keep total errors */ jcr->ReadBytes = ReadBytes; jcr->JobBytes = JobBytes; + jcr->JobWarnings = JobWarnings; jcr->VSS = VSS; jcr->Encrypt = Encrypt; } else { @@ -476,12 +479,15 @@ void backup_cleanup(JCR *jcr, int TermCode) switch (jcr->JobStatus) { case JS_Terminated: - if (jcr->Errors || jcr->SDErrors) { + if (jcr->JobErrors || jcr->SDErrors) { term_msg = _("Backup OK -- with warnings"); } else { term_msg = _("Backup OK"); } break; + case JS_Warnings: + term_msg = _("Backup OK -- with warnings"); + break; case JS_FatalError: case JS_ErrorTerminated: term_msg = _("*** Backup Error ***"); @@ -608,7 +614,7 @@ void backup_cleanup(JCR *jcr, int TermCode) jcr->VolSessionTime, edit_uint64_with_commas(mr.VolBytes, ec7), edit_uint64_with_suffix(mr.VolBytes, ec8), - jcr->Errors, + jcr->JobErrors, jcr->SDErrors, fd_term_msg, sd_term_msg, @@ -630,7 +636,7 @@ void update_bootstrap_file(JCR *jcr) VOL_PARAMS *VolParams = NULL; int VolCount; - char edt[50]; + char edt[50], ed1[50], ed2[50]; if (*fname == '|') { got_pipe = 1; @@ -664,10 +670,9 @@ void update_bootstrap_file(JCR *jcr) } fprintf(fd, "VolSessionId=%u\n", jcr->VolSessionId); fprintf(fd, "VolSessionTime=%u\n", jcr->VolSessionTime); - fprintf(fd, "VolFile=%u-%u\n", VolParams[i].StartFile, - VolParams[i].EndFile); - fprintf(fd, "VolBlock=%u-%u\n", VolParams[i].StartBlock, - VolParams[i].EndBlock); + fprintf(fd, "VolAddr=%s-%s\n", + edit_uint64(VolParams[i].StartAddr, ed1), + edit_uint64(VolParams[i].EndAddr, ed2)); fprintf(fd, "FileIndex=%d-%d\n", VolParams[i].FirstIndex, VolParams[i].LastIndex); }