/*
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.
have_full = db_find_job_start_time(jcr, jcr->db, &jcr->jr, &jcr->stime);
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) {
/* Lookup last diff job */
if (db_find_last_job_start_time(jcr, jcr->db, &jcr->jr, &stime, L_DIFFERENTIAL)) {
last_diff_time = str_to_utime(stime);
+ /* 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;
/* 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);