X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fstored%2Fjob.c;h=431071c582e0dc321414fabbad707ea26f9c5f97;hb=706490171cd2e5458defa3e4abfeca745d19d1f3;hp=733f20b042f4811d322b40adc9766599edf37c44;hpb=f2142e845f0c6e5518cf88f0910b48de0375c733;p=bacula%2Fbacula diff --git a/bacula/src/stored/job.c b/bacula/src/stored/job.c index 733f20b042..431071c582 100644 --- a/bacula/src/stored/job.c +++ b/bacula/src/stored/job.c @@ -20,7 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - Bacula® is a registered trademark of John Walker. + Bacula® is a registered trademark of Kern Sibbald. The licensor of Bacula is the Free Software Foundation Europe (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, Switzerland, email:ftf@fsfeurope.org. @@ -134,8 +134,8 @@ bool job_cmd(JCR *jcr) unbash_spaces(fileset_name); jcr->fileset_name = get_pool_memory(PM_NAME); pm_strcpy(jcr->fileset_name, fileset_name); - jcr->JobType = JobType; - jcr->JobLevel = level; + jcr->set_JobType(JobType); + jcr->set_JobLevel(level); jcr->no_attributes = no_attributes; jcr->spool_attributes = spool_attributes; jcr->spool_data = spool_data; @@ -146,6 +146,7 @@ bool job_cmd(JCR *jcr) jcr->PreferMountedVols = PreferMountedVols; jcr->authenticated = false; + jcr->need_fd = true; /* * Pass back an authorization key for the File daemon @@ -165,16 +166,15 @@ bool run_cmd(JCR *jcr) struct timeval tv; struct timezone tz; struct timespec timeout; - int errstat; + int errstat = 0; Dsm_check(1); Dmsg1(200, "Run_cmd: %s\n", jcr->dir_bsock->msg); - /* The following jobs don't need the FD */ - switch (jcr->JobType) { - case JT_COPY: - case JT_MIGRATE: - case JT_ARCHIVE: - jcr->authenticated = true; + + /* If we do not need the FD, we are doing a migrate, copy, or virtual + * backup. + */ + if (!jcr->need_fd) { do_mac(jcr); return false; } @@ -187,7 +187,7 @@ bool run_cmd(JCR *jcr) timeout.tv_sec = tv.tv_sec + me->client_wait; Dmsg3(050, "%s waiting %d sec for FD to contact SD key=%s\n", - jcr->Job, (int)me->client_wait, jcr->sd_auth_key); + jcr->Job, (int)(timeout.tv_sec-time(NULL)), jcr->sd_auth_key); /* * Wait for the File daemon to contact us to start the Job, @@ -201,6 +201,8 @@ bool run_cmd(JCR *jcr) break; } } + Dmsg3(100, "Auth=%d canceled=%d errstat=%d\n", jcr->authenticated, + job_canceled(jcr), errstat); V(mutex); memset(jcr->sd_auth_key, 0, strlen(jcr->sd_auth_key)); @@ -220,10 +222,14 @@ void handle_filed_connection(BSOCK *fd, char *job_name) { JCR *jcr; - bmicrosleep(0, 50000); /* wait 50 millisecs */ +/* + * With the following bmicrosleep on, running the + * SD under the debugger fails. + */ +// bmicrosleep(0, 50000); /* wait 50 millisecs */ if (!(jcr=get_jcr_by_full_name(job_name))) { Jmsg1(NULL, M_FATAL, 0, _("FD connect failed: Job name not found: %s\n"), job_name); - Dmsg1(3, "**** Job \"%s\" not found", job_name); + Dmsg1(3, "**** Job \"%s\" not found.\n", job_name); return; }