]> git.sur5r.net Git - bacula/bacula/commitdiff
02Mar07
authorKern Sibbald <kern@sibbald.com>
Fri, 2 Mar 2007 18:02:46 +0000 (18:02 +0000)
committerKern Sibbald <kern@sibbald.com>
Fri, 2 Mar 2007 18:02:46 +0000 (18:02 +0000)
kes  Modify jobq.c to let simultaneous restore jobs run. This may
     cause them to fail if they cannot get a drive.
kes  Add Client Connect Wait to Storage daemon to permit users to
     modify the time the SD waits for a FD connection.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@4294 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/kernstodo
bacula/src/dird/jobq.c
bacula/src/stored/job.c
bacula/src/stored/stored_conf.c
bacula/src/stored/stored_conf.h
bacula/src/version.h
bacula/technotes-2.1

index 306bf100e22709e5839808608a80626d56d89928..0bcd308589e3799e572fbd4ab086050fcfeeb27a 100644 (file)
@@ -43,6 +43,8 @@ Document:
  
 
 Priority:
+- Add Catalog = to Pool resource so that pools will exist
+  in only one catalog -- currently Pools are "global".
 - Look at sg_logs -a /dev/sg0 for getting soft errors.
 - btape "test" command with Offline on Unmount = yes
 
index 780b2f258fb5d51f1d3921a24e821a538599b489..d811bda771ee16e9c2534eb139fde20a32e3808e 100644 (file)
@@ -682,13 +682,14 @@ static bool acquire_resources(JCR *jcr)
    jcr->acquired_resource_locks = false;
    if (jcr->rstore) {
       Dmsg1(200, "Rstore=%s\n", jcr->rstore->name());
-      /* 
-       * Let only one Restore/verify job run at a time regardless
-       *   of MaxConcurrentJobs.
-       */ 
-      if (jcr->rstore->NumConcurrentJobs == 0) {
+      if (jcr->rstore->NumConcurrentJobs == 0 &&
+          jcr->rstore->NumConcurrentJobs < jcr->rstore->MaxConcurrentJobs) {
+         /* Simple case, first job */
          jcr->rstore->NumConcurrentJobs = 1;
          Dmsg0(200, "Set rncj=1\n");
+      } else if (jcr->rstore->NumConcurrentJobs < jcr->rstore->MaxConcurrentJobs) {
+         jcr->rstore->NumConcurrentJobs++;
+         Dmsg1(200, "Inc rncj=%d\n", jcr->rstore->NumConcurrentJobs);
       } else {
          Dmsg1(200, "Fail rncj=%d\n", jcr->rstore->NumConcurrentJobs);
          set_jcr_job_status(jcr, JS_WaitStoreRes);
@@ -699,7 +700,7 @@ static bool acquire_resources(JCR *jcr)
    if (jcr->wstore) {
       Dmsg1(200, "Wstore=%s\n", jcr->wstore->name());
       if (jcr->rstore == jcr->wstore) {           /* deadlock */
-         jcr->rstore->NumConcurrentJobs = 0;      /* back out rstore */
+         jcr->rstore->NumConcurrentJobs--;        /* back out rstore */
          Jmsg(jcr, M_FATAL, 0, _("Job canceled. Attempt to read and write same device.\n"
             "    Read storage \"%s\" (From %s) -- Write storage \"%s\" (From %s)\n"), 
             jcr->rstore->name(), jcr->rstore_source, jcr->wstore->name(), jcr->wstore_source);
@@ -715,7 +716,7 @@ static bool acquire_resources(JCR *jcr)
          jcr->wstore->NumConcurrentJobs++;
          Dmsg1(200, "Inc wncj=%d\n", jcr->wstore->NumConcurrentJobs);
       } else if (jcr->rstore) {
-         jcr->rstore->NumConcurrentJobs = 0;      /* back out rstore */
+         jcr->rstore->NumConcurrentJobs--;        /* back out rstore */
          Dmsg1(200, "Fail wncj=%d\n", jcr->wstore->NumConcurrentJobs);
          skip_this_jcr = true;
       } else {
@@ -737,7 +738,7 @@ static bool acquire_resources(JCR *jcr)
          Dmsg1(200, "Dec wncj=%d\n", jcr->wstore->NumConcurrentJobs);
       }
       if (jcr->rstore) {
-         jcr->rstore->NumConcurrentJobs = 0;
+         jcr->rstore->NumConcurrentJobs--;  
          Dmsg1(200, "Dec rncj=%d\n", jcr->rstore->NumConcurrentJobs);
       }
       set_jcr_job_status(jcr, JS_WaitClientRes);
@@ -752,7 +753,7 @@ static bool acquire_resources(JCR *jcr)
          Dmsg1(200, "Dec wncj=%d\n", jcr->wstore->NumConcurrentJobs);
       }
       if (jcr->rstore) {
-         jcr->rstore->NumConcurrentJobs = 0;
+         jcr->rstore->NumConcurrentJobs--;
          Dmsg1(200, "Dec rncj=%d\n", jcr->rstore->NumConcurrentJobs);
       }
       jcr->client->NumConcurrentJobs--;
index 57cc0487e55f68c850f47dee9639c0b4e2f80a72..856e5315881044ec1828d6b00cb99a62b6171319 100644 (file)
@@ -1,11 +1,3 @@
-/*
- *   Job control and execution for Storage Daemon
- *
- *   Kern Sibbald, MM
- *
- *   Version $Id$
- *
- */
 /*
    Bacula® - The Network Backup Solution
 
    (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
    Switzerland, email:ftf@fsfeurope.org.
 */
+/*
+ *   Job control and execution for Storage Daemon
+ *
+ *   Kern Sibbald, MM
+ *
+ *   Version $Id$
+ *
+ */
 
 #include "bacula.h"
 #include "stored.h"
@@ -166,9 +166,10 @@ bool run_cmd(JCR *jcr)
 
    gettimeofday(&tv, &tz);
    timeout.tv_nsec = tv.tv_usec * 1000;
-   timeout.tv_sec = tv.tv_sec + 30 * 60;        /* wait 30 minutes */
+   timeout.tv_sec = tv.tv_sec + me->client_wait;
 
-   Dmsg1(100, "%s waiting on FD to contact SD\n", jcr->Job);
+   Dmsg2(100, "%s waiting %d sec for FD to contact SD\n", 
+        jcr->Job, (int)me->client_wait);
    /*
     * Wait for the File daemon to contact us to start the Job,
     *  when he does, we will be released, unless the 30 minutes
index ec5632a41a0e186d3fa363fa1ae0ea0b20c45992..bae09e0b2d7c8b3e802a46f14da6bf7954bf79ad 100644 (file)
@@ -1,14 +1,7 @@
-/*
- * Configuration file parser for Bacula Storage daemon
- *
- *     Kern Sibbald, March MM
- *
- *   Version $Id$
- */
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2007 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.
    (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
    Switzerland, email:ftf@fsfeurope.org.
 */
+/*
+ * Configuration file parser for Bacula Storage daemon
+ *
+ *     Kern Sibbald, March MM
+ *
+ *   Version $Id$
+ */
 
 #include "bacula.h"
 #include "stored.h"
@@ -86,6 +86,7 @@ static RES_ITEM store_items[] = {
    {"tlskey",                store_dir,       ITEM(res_store.tls_keyfile), 0, 0, 0},
    {"tlsdhfile",             store_dir,       ITEM(res_store.tls_dhfile), 0, 0, 0},
    {"tlsallowedcn",          store_alist_str, ITEM(res_store.tls_allowed_cns), 0, 0, 0},
+   {"clientconnectwait",     store_time,  ITEM(res_store.client_wait), 0, ITEM_DEFAULT, 30 * 60},
    {NULL, NULL, {0}, 0, 0, 0}
 };
 
index 42461d3aa3870bf5af9903fcdc37a14ceb85f09e..7b7467de910bb102e10d32d457b46a4b7c163772 100644 (file)
@@ -86,6 +86,7 @@ public:
    uint32_t max_concurrent_jobs;      /* maximum concurrent jobs to run */
    MSGS *messages;                    /* Daemon message handler */
    utime_t heartbeat_interval;        /* Interval to send hb to FD */
+   utime_t client_wait;               /* Time to wait for FD to connect */
    int tls_enable;                    /* Enable TLS */
    int tls_require;                   /* Require TLS */
    int tls_verify_peer;               /* TLS Verify Client Certificate */
index d19cf37086b3d30a27bc1b28fe4e756daab49e46..746cab77e5cbb3b2ec4a3b33e6385f3e816f0bb8 100644 (file)
@@ -4,8 +4,8 @@
 
 #undef  VERSION
 #define VERSION "2.1.4"
-#define BDATE   "21 February 2007"
-#define LSMDATE "21Feb07"
+#define BDATE   "02 March 2007"
+#define LSMDATE "02Mar07"
 
 #define PROG_COPYRIGHT "Copyright (C) %d-2007 Free Software Foundation Europe e.V.\n"
 #define BYEAR "2007"       /* year for copyright messages in progs */
index f31be91d432986b8b16009866d3b3357c6961cf9..d5457662647f2db99785baebcf2a0ebb849b999a 100644 (file)
@@ -1,6 +1,11 @@
               Technical notes on version 2.1
 
 General:
+02Mar07
+kes  Modify jobq.c to let simultaneous restore jobs run. This may 
+     cause them to fail if they cannot get a drive.
+kes  Add Client Connect Wait to Storage daemon to permit users to
+     modify the time the SD waits for a FD connection.
 29Feb07
 kes  Correct virtual changer check which was backwards. This caused
      volumes to be unloaded into slots already occupied.