]> git.sur5r.net Git - bacula/bacula/commitdiff
Make estimate command accurate compatible. Should fix #1318
authorEric Bollengier <eric@eb.homelinux.org>
Thu, 2 Jul 2009 11:36:26 +0000 (11:36 +0000)
committerEric Bollengier <eric@eb.homelinux.org>
Thu, 2 Jul 2009 11:36:26 +0000 (11:36 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@8947 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/dird/backup.c
bacula/src/dird/protos.h
bacula/src/dird/ua_cmds.c
bacula/src/filed/accurate.c
bacula/src/filed/estimate.c
bacula/src/filed/protos.h
bacula/technotes

index 2c30e83aa17e4f3d38bcf9115c97de2fc239b683..029dfa0c89179ab8bb34bb8068062310be01394b 100644 (file)
@@ -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 */
index dc66f8d3c521d1b6ae1857f6fef00218d2bbba3e..ba73912b275f294b0c2bb0b1210fe486a57f7370 100644 (file)
@@ -57,6 +57,8 @@ extern bool do_backup_init(JCR *jcr);
 extern bool do_backup(JCR *jcr);
 extern void backup_cleanup(JCR *jcr, int TermCode);
 extern void update_bootstrap_file(JCR *jcr);
+extern bool send_accurate_current_files(JCR *jcr);
+
 
 /* vbackup.c */
 extern bool do_vbackup_init(JCR *jcr);
index ca513b64582ff166c6a91f46ec3693a9564095bc..2e5defaa99f08828645a544c1b0214a024445225 100644 (file)
@@ -1274,6 +1274,15 @@ static int estimate_cmd(UAContext *ua, const char *cmd)
       goto bail_out;
    }
 
+   /*
+    * If the job is in accurate mode, we send the list of
+    * all files to FD.
+    */
+   jcr->accurate = job->accurate;
+   if (!send_accurate_current_files(jcr)) {
+      goto bail_out;
+   }
+
    bnet_fsend(jcr->file_bsock, "estimate listing=%d\n", listing);
    while (bnet_recv(jcr->file_bsock) >= 0) {
       ua->send_msg("%s", jcr->file_bsock->msg);
index d7ff0437573a5c3c59bc15a7035703566d5a22d3..e36ad80e5f5a1e164ca5524f093796fef768a021 100644 (file)
@@ -128,12 +128,17 @@ bool accurate_send_deleted_list(JCR *jcr)
    term_find_files(ff_pkt);
 bail_out:
    /* TODO: clean htable when this function is not reached ? */
+   accurate_free(jcr);
+   return true;
+}
+
+void accurate_free(JCR *jcr)
+{
    if (jcr->file_list) {
       jcr->file_list->destroy();
       free(jcr->file_list);
       jcr->file_list = NULL;
    }
-   return true;
 }
 
 static bool accurate_add_file(JCR *jcr, char *fname, char *lstat)
@@ -231,7 +236,6 @@ int accurate_cmd(JCR *jcr)
    if (!jcr->accurate || job_canceled(jcr) || jcr->get_JobLevel()==L_FULL) {
       return true;
    }
-
    if (sscanf(dir->msg, "accurate files=%ld", &nb) != 1) {
       dir->fsend(_("2991 Bad accurate command\n"));
       return false;
index a4fd06d8dacbe37f5a2d4b134efd0c15ddfd84e5..c4fe78f9050a79e4c7368dc8c87a3184391cda10 100644 (file)
@@ -50,8 +50,14 @@ int make_estimate(JCR *jcr)
    set_jcr_job_status(jcr, JS_Running);
 
    set_find_options((FF_PKT *)jcr->ff, jcr->incremental, jcr->mtime);
+   /* in accurate mode, we overwrite the find_one check function */
+   if (jcr->accurate) {
+      set_find_changed_function((FF_PKT *)jcr->ff, accurate_check_file);
+   } 
+
    stat = find_files(jcr, (FF_PKT *)jcr->ff, tally_file, NULL);
 
+   accurate_free(jcr);
    return stat;
 }
 
index 72300f18c680a131f6dc4c6de6384c405d392a74..b5daaa8c1903a05a74e6c3d933d9864c409a7745 100644 (file)
@@ -54,6 +54,7 @@ bool parse_acl_stream(JCR *jcr, int stream);
 bool accurate_send_deleted_list(JCR *jcr);
 bool accurate_check_file(JCR *jcr, FF_PKT *ff_pkt);
 bool accurate_mark_file_as_seen(JCR *jcr, char *fname);
+void accurate_free(JCR *jcr);
 
 /* from backup.c */
 bool encode_and_send_attributes(JCR *jcr, FF_PKT *ff_pkt, int &data_stream);
index 959cbf212b13e4477b629c1f54327e726899d5a4..f229aecb4d32eab95fb87fc39aee9699b44fa101 100644 (file)
@@ -4,6 +4,7 @@ General:
 
 02Jul09
 kes  Another fix for bug #1311 to get the correct last_full_time
+ebl  Make estimate command accurate compatible. Should fix #1318
 01Jul09
 kes  Fix bug #1317 Allow duplicate jobs = no does not work
 kes  Eliminate double job report when do_xxx_init() returns failure