From: Eric Bollengier Date: Mon, 5 Oct 2009 13:35:00 +0000 (+0200) Subject: Make Checksum as default when not using FileSet->Include->Options->BaseJob X-Git-Tag: Release-7.0.0~2607 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=3418394c643515e013f01f5218bcadbf4539df73;p=bacula%2Fbacula Make Checksum as default when not using FileSet->Include->Options->BaseJob --- diff --git a/bacula/src/dird/backup.c b/bacula/src/dird/backup.c index 0a4f14b717..eb8e9f1217 100644 --- a/bacula/src/dird/backup.c +++ b/bacula/src/dird/backup.c @@ -168,6 +168,7 @@ static int accurate_list_handler(void *ctx, int num_fields, char **row) /* In this procedure, we check if the current fileset is using checksum * FileSet-> Include-> Options-> Accurate/Verify/BaseJob=checksum + * This procedure uses jcr->HasBase, so it must be call after the initialization */ static bool is_checksum_needed_by_fileset(JCR *jcr) { @@ -175,6 +176,7 @@ static bool is_checksum_needed_by_fileset(JCR *jcr) INCEXE *inc; FOPTS *fopts; bool in_block=false; + bool have_basejob_option=false; if (!jcr->job || !jcr->job->fileset) { return false; } @@ -193,7 +195,7 @@ static bool is_checksum_needed_by_fileset(JCR *jcr) in_block = (jcr->get_JobType() == JT_VERIFY); /* not used now */ break; case 'J': /* Basejob keyword */ - in_block = (jcr->get_JobLevel() == L_FULL); + have_basejob_option = in_block = jcr->HasBase; break; case 'C': /* Accurate keyword */ in_block = (jcr->get_JobLevel() != L_FULL); @@ -214,6 +216,13 @@ static bool is_checksum_needed_by_fileset(JCR *jcr) } } } + + /* By default for BaseJobs, we send the checksum */ + if (!have_basejob_option && jcr->HasBase) { + return true; + } + + Dmsg0(50, "Checksum will be sent to FD\n"); return false; } @@ -240,9 +249,6 @@ bool send_accurate_current_files(JCR *jcr) return true; } - /* Don't send and store the checksum if fileset doesn't require it */ - jcr->use_accurate_chksum = is_checksum_needed_by_fileset(jcr); - if (jcr->get_JobLevel() == L_FULL) { /* On Full mode, if no previous base job, no accurate things */ if (!get_base_jobids(jcr, &jobids)) { @@ -263,6 +269,9 @@ bool send_accurate_current_files(JCR *jcr) } } + /* Don't send and store the checksum if fileset doesn't require it */ + jcr->use_accurate_chksum = is_checksum_needed_by_fileset(jcr); + if (jcr->JobId) { /* display the message only for real jobs */ Jmsg(jcr, M_INFO, 0, _("Sending Accurate information.\n")); } @@ -576,6 +585,7 @@ void backup_cleanup(JCR *jcr, int TermCode) CLIENT_DBR cr; double kbps, compression; utime_t RunTime; + POOL_MEM base_info; if (jcr->get_JobLevel() == L_VIRTUAL_FULL) { vbackup_cleanup(jcr, TermCode); @@ -681,9 +691,10 @@ void backup_cleanup(JCR *jcr, int TermCode) jobstatus_to_ascii(jcr->SDJobStatus, sd_term_msg, sizeof(sd_term_msg)); if (jcr->HasBase) { - Dmsg3(0, "Base files/Used files %lld/%lld=%.2f%%\n", jcr->nb_base_files, - jcr->nb_base_files_used, - jcr->nb_base_files_used*100.0/jcr->nb_base_files); + Mmsg(base_info, " Base files/Used files: %lld/%lld (%.2f%%)\n", + jcr->nb_base_files, + jcr->nb_base_files_used, + jcr->nb_base_files_used*100.0/jcr->nb_base_files); } // bmicrosleep(15, 0); /* for debugging SIGHUP */ @@ -708,6 +719,7 @@ void backup_cleanup(JCR *jcr, int TermCode) " SD Bytes Written: %s (%sB)\n" " Rate: %.1f KB/s\n" " Software Compression: %s\n" +"%s" /* Basefile info */ " VSS: %s\n" " Encryption: %s\n" " Accurate: %s\n" @@ -743,6 +755,7 @@ void backup_cleanup(JCR *jcr, int TermCode) edit_uint64_with_suffix(jcr->SDJobBytes, ec6), kbps, compress, + base_info.c_str(), jcr->VSS?_("yes"):_("no"), jcr->Encrypt?_("yes"):_("no"), jcr->accurate?_("yes"):_("no"), diff --git a/bacula/src/filed/accurate.c b/bacula/src/filed/accurate.c index 2075de877a..83574d323e 100644 --- a/bacula/src/filed/accurate.c +++ b/bacula/src/filed/accurate.c @@ -191,8 +191,8 @@ bool accurate_finish(JCR *jcr) accurate_free(jcr); if (jcr->get_JobLevel() == L_FULL) { - Dmsg1(0, "Space saved with Base jobs: %lld MB\n", - jcr->base_size/(1024*1024)); + Jmsg(jcr, M_INFO, 0, _("Space saved with Base jobs: %lld MB\n"), + jcr->base_size/(1024*1024)); } } return ret;