bool do_vbackup_init(JCR *jcr)
{
- if (!get_or_create_fileset_record(jcr)) {
- Dmsg1(dbglevel, "JobId=%d no FileSet\n", (int)jcr->JobId);
- return false;
- }
+ /*
+ * if the read pool has not been allocated yet due to the job
+ * being upgraded to a virtual full then allocate it now
+ */
+ if (!jcr->rpool_source)
+ jcr->rpool_source = get_pool_memory(PM_MESSAGE);
- apply_pool_overrides(jcr);
-
- if (!allow_duplicate_job(jcr)) {
- return false;
- }
-
- jcr->jr.PoolId = get_or_create_pool_record(jcr, jcr->pool->name());
- if (jcr->jr.PoolId == 0) {
- Dmsg1(dbglevel, "JobId=%d no PoolId\n", (int)jcr->JobId);
- Jmsg(jcr, M_FATAL, 0, _("Could not get or create a Pool record.\n"));
- return false;
- }
/*
* Note, at this point, pool is the pool for this job. We
* transfer it to rpool (read pool), and a bit later,
jr.JobLevel = L_INCREMENTAL; /* Take Full+Diff+Incr */
db_get_accurate_jobids(jcr, jcr->db, &jr, &jobids);
+ if (jobids.count == 1) {
+ /* It's better to keep the input, we might already have copy/vf jobs */
+ jobids.reset();
+ jobids.add(jcr->JobIds);
+ }
+
} else if (sel.set_string(jcr->JobIds, true)) {
/* Found alljobid keyword */
if (jcr->use_all_JobIds) {
return false;
}
if (jobids.count == 1) {
- Jmsg(jcr, M_WARNING, 0, _("Only one Job found. Consolidation not needed.\n"));
- return false;
+ if (jcr->JobIds && strcmp(jcr->JobIds, jobids.list) == 0) {
+ Jmsg(jcr, M_INFO, 0, _("Only one Job found in argument. Consolidation forced.\n"));
+
+ } else {
+ Jmsg(jcr, M_WARNING, 0, _("Only one Job found. Consolidation not needed.\n"));
+ return false;
+ }
}
/* Remove number of JobIds we want to keep */