}
/* If pool storage specified, use it instead of job storage */
- copy_storage(jcr, jcr->pool->storage, _("Pool resource"));
+ copy_wstorage(jcr, jcr->pool->storage, _("Pool resource"));
- if (!jcr->storage) {
+ if (!jcr->wstorage) {
Jmsg(jcr, M_FATAL, 0, _("No Storage specification found in Job or Pool.\n"));
return false;
}
/* ***FIXME*** */
/* If pool storage specified, use it for restore */
- copy_storage(prev_jcr, pool->storage, _("Pool resource"));
+ copy_rstorage(prev_jcr, pool->storage, _("Pool resource"));
+ copy_rstorage(jcr, pool->storage, _("Pool resource"));
/* If the original backup pool has a NextPool, make sure a
* record exists in the database.
}
/* If pool storage specified, use it instead of job storage for backup */
- copy_storage(jcr, jcr->pool->storage, _("Pool resource"));
+ copy_wstorage(jcr, jcr->pool->storage, _("Pool resource"));
/* Print Job Start message */
Jmsg(jcr, M_INFO, 0, _("Start Migration JobId %s, Job=%s\n"),
* Now start a job with the Storage daemon
*/
Dmsg2(dbglevel, "Read store=%s, write store=%s\n",
- ((STORE *)prev_jcr->storage->first())->hdr.name,
- ((STORE *)jcr->storage->first())->hdr.name);
- if (!start_storage_daemon_job(jcr, prev_jcr->storage, jcr->storage)) {
+ ((STORE *)jcr->rstorage->first())->name(),
+ ((STORE *)jcr->wstorage->first())->name());
+ if (!start_storage_daemon_job(jcr, jcr->rstorage, jcr->wstorage)) {
return false;
}
Dmsg0(150, "Storage daemon connection OK\n");
wait_for_storage_daemon_termination(jcr);
set_jcr_job_status(jcr, jcr->SDJobStatus);
- if (jcr->JobStatus == JS_Terminated) {
- migration_cleanup(jcr, jcr->JobStatus);
- return true;
+ if (jcr->JobStatus != JS_Terminated) {
+ return false;
}
- return false;
+ migration_cleanup(jcr, jcr->JobStatus);
+ if (prev_jcr) {
+ UAContext *ua = new_ua_context(jcr);
+ purge_files_from_job(ua, jcr->previous_jr.JobId);
+ free_ua_context(ua);
+ }
+ return true;
}
struct idpkt {
/* Get JobIds from regex'ed Job names */
const char *sql_jobids_from_job =
- "SELECT DISTINCT Job.JobId FROM Job,Pool"
+ "SELECT DISTINCT Job.JobId,Job.StartTime FROM Job,Pool"
" WHERE Job.Name='%s' AND Pool.Name='%s' AND Job.PoolId=Pool.PoolId"
" ORDER by Job.StartTime";
/* Get JobIds from regex'ed Client names */
const char *sql_jobids_from_client =
- "SELECT DISTINCT Job.JobId FROM Job,Pool"
+ "SELECT DISTINCT Job.JobId,Job.StartTime FROM Job,Pool"
" WHERE Client.Name='%s' AND Pool.Name='%s' AND Job.PoolId=Pool.PoolId"
" AND Job.ClientId=Client.ClientId "
" ORDER by Job.StartTime";
/* Get JobIds from regex'ed Volume names */
const char *sql_jobids_from_vol =
- "SELECT DISTINCT Job.JobId FROM Media,JobMedia,Job"
+ "SELECT DISTINCT Job.JobId,Job.StartTime FROM Media,JobMedia,Job"
" WHERE Media.VolumeName='%s' AND Media.MediaId=JobMedia.MediaId"
" AND JobMedia.JobId=Job.JobId"
" ORDER by Job.StartTime";
" ORDER BY LastWritten ASC LIMIT 1";
const char *sql_jobids_from_mediaid =
- "SELECT DISTINCT Job.JobId FROM JobMedia,Job"
+ "SELECT DISTINCT Job.JobId,Job.StartTime FROM JobMedia,Job"
" WHERE JobMedia.JobId=Job.JobId AND JobMedia.MediaId=%s"
" ORDER by Job.StartTime";
edit_uint64(jcr->jr.JobId, ec8),
jcr->jr.Job,
level_to_str(jcr->JobLevel), jcr->since,
- jcr->client->hdr.name,
- jcr->fileset->hdr.name, jcr->FSCreateTime,
- jcr->pool->hdr.name, jcr->pool_source,
- jcr->store->hdr.name, jcr->storage_source,
+ jcr->client->name(),
+ jcr->fileset->name(), jcr->FSCreateTime,
+ jcr->pool->name(), jcr->pool_source,
+ jcr->wstore->name(), jcr->storage_source,
sdt,
edt,
edit_utime(RunTime, elapsed, sizeof(elapsed)),