From: Kern S. <ke...@us...> - 2006-04-23 15:15:20
|
Update of /cvsroot/bacula/bacula/src/dird In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23853/src/dird Modified Files: migrate.c Log Message: Add code for starting multiple migrations Index: migrate.c =================================================================== RCS file: /cvsroot/bacula/bacula/src/dird/migrate.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- migrate.c 23 Apr 2006 13:07:40 -0000 1.14 +++ migrate.c 23 Apr 2006 15:15:05 -0000 1.15 @@ -43,6 +43,7 @@ struct idpkt; static bool regex_find_jobids(JCR *jcr, idpkt *ids, const char *query1, const char *query2, const char *type); +static void start_migration_job(JCR *jcr); /* * Called here before the job is run to do the job @@ -449,8 +450,9 @@ ids.count = 0; if (jcr->MigrateJobId != 0) { - jcr->previous_jr.JobId = jcr->MigrateJobId; Dmsg1(000, "previous jobid=%u\n", jcr->MigrateJobId); + edit_uint64(jcr->MigrateJobId, ids.list); + ids.count = 1; } else { switch (jcr->job->selection_type) { case MT_JOB: @@ -513,6 +515,8 @@ JobId = 0; stat = get_next_jobid_from_list(&p, &JobId); Dmsg2(000, "get_next_jobid stat=%d JobId=%u\n", stat, JobId); + jcr->MigrateJobId = JobId; + start_migration_job(jcr); if (stat < 0) { Jmsg(jcr, M_FATAL, 0, _("Invalid JobId found.\n")); goto bail_out; @@ -522,7 +526,7 @@ } jcr->previous_jr.JobId = JobId; - Dmsg1(000, "Last jobid=%d\n", jcr->previous_jr.JobId); + Dmsg1(000, "Previous jobid=%d\n", jcr->previous_jr.JobId); if (!db_get_job_record(jcr, jcr->db, &jcr->previous_jr)) { Jmsg(jcr, M_FATAL, 0, _("Could not get job record for JobId %s to migrate. ERR=%s"), @@ -542,6 +546,25 @@ return false; } +static void start_migration_job(JCR *jcr) +{ + UAContext *ua = new_ua_context(jcr); + char ed1[50]; + ua->batch = true; + Mmsg(ua->cmd, "run %s jobid=%s", jcr->job->hdr.name, + edit_uint64(jcr->MigrateJobId, ed1)); + Dmsg1(000, "=============== Migration cmd=%s\n", ua->cmd); + parse_ua_args(ua); /* parse command */ +// int stat = run_cmd(ua, ua->cmd); + int stat = (int)jcr->MigrateJobId; + if (stat == 0) { + Jmsg(jcr, M_ERROR, 0, _("Could not start migration job.\n")); + } else { + Jmsg(jcr, M_INFO, 0, _("Migration JobId %d started.\n"), stat); + } + free_ua_context(ua); +} + static bool regex_find_jobids(JCR *jcr, idpkt *ids, const char *query1, const char *query2, const char *type) { |