]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/patches/3.0.1-maxdiff.patch
Added preliminary AFS acl support. The code may need some testing on a real AFS enabl...
[bacula/bacula] / bacula / patches / 3.0.1-maxdiff.patch
index 143334e287bae88d9f9a73e481e58a50dc2cefaa..4fbd75f22aac144b9d8c14561b190047bf6a8b3c 100644 (file)
@@ -16,9 +16,9 @@
 
 Index: src/dird/fd_cmds.c
 ===================================================================
---- src/dird/fd_cmds.c (revision 8902)
+--- src/dird/fd_cmds.c (revision 8911)
 +++ src/dird/fd_cmds.c (working copy)
-@@ -198,22 +198,29 @@
+@@ -198,22 +198,33 @@
        now = (utime_t)time(NULL);
        jcr->jr.JobId = 0;     /* flag to return since time */
        have_full = db_find_job_start_time(jcr, jcr->db, &jcr->jr, &jcr->stime);
@@ -26,6 +26,8 @@ Index: src/dird/fd_cmds.c
 -      if (jcr->get_JobLevel() == L_INCREMENTAL && have_full && jcr->job->MaxDiffInterval > 0) {
 +      if (have_full) {
 +         last_full_time = str_to_utime(jcr->stime);
++      } else {
++         do_full = true;               /* No full, upgrade to one */
 +      }
 +      /* Make sure the last diff is recent enough */
 +      if (have_full && jcr->get_JobLevel() == L_INCREMENTAL && jcr->job->MaxDiffInterval > 0) {
@@ -33,6 +35,10 @@ Index: src/dird/fd_cmds.c
           if (db_find_last_job_start_time(jcr, jcr->db, &jcr->jr, &stime, L_DIFFERENTIAL)) {
              last_diff_time = str_to_utime(stime);
 -            do_diff = ((now - last_diff_time) >= jcr->job->MaxDiffInterval);
++            /* If no Diff since Full, use Full time */
++            if (last_diff_time < last_full_time) {
++               last_diff_time = last_full_time;
++            }
 +         } else {
 +            /* No last differential, so use last full time */
 +            last_diff_time = last_full_time;
@@ -45,8 +51,6 @@ Index: src/dird/fd_cmds.c
 +      /* Note, do_full takes precedence over do_diff */
 +      if (have_full && jcr->job->MaxFullInterval > 0) {
           do_full = ((now - last_full_time) >= jcr->job->MaxFullInterval);
-+      } else {
-+         do_full = true;
        }
        free_pool_memory(stime);
  
@@ -55,7 +59,7 @@ Index: src/dird/fd_cmds.c
           /* No recent Full job found, so upgrade this one to Full */
           Jmsg(jcr, M_INFO, 0, "%s", db_strerror(jcr->db));
           Jmsg(jcr, M_INFO, 0, _("No prior or suitable Full backup found in catalog. Doing FULL backup.\n"));
-@@ -221,7 +228,7 @@
+@@ -221,7 +232,7 @@
              level_to_str(jcr->get_JobLevel()));
           jcr->set_JobLevel(jcr->jr.JobLevel = L_FULL);
         } else if (do_diff) {