]> git.sur5r.net Git - bacula/bacula/commitdiff
Rework dir_find_next_appendable_volume to make a bit more effort
authorKern Sibbald <kern@sibbald.com>
Tue, 11 Mar 2008 09:15:20 +0000 (09:15 +0000)
committerKern Sibbald <kern@sibbald.com>
Tue, 11 Mar 2008 09:15:20 +0000 (09:15 +0000)
     to find a suitable volume before giving up.

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

bacula/src/stored/askdir.c
bacula/src/version.h
bacula/technotes-2.3

index a6767897be04c0c4fa70180fc6e5aa9d485f5043..6d1d2ce823ff6e37e86d6042f1eb0e2118325f3f 100644 (file)
@@ -252,20 +252,19 @@ bool dir_find_next_appendable_volume(DCR *dcr)
 {
     JCR *jcr = dcr->jcr;
     BSOCK *dir = jcr->dir_bsock;
-    bool found = false;
 
     Dmsg2(200, "dir_find_next_appendable_volume: reserved=%d Vol=%s\n", 
        dcr->reserved_device, dcr->VolumeName);
 
     /*
-     * Try the twenty oldest or most available volumes.  Note,
+     * Try the fourty oldest or most available volumes.  Note,
      *   the most available could already be mounted on another
      *   drive, so we continue looking for a not in use Volume.
      */
     lock_reservations();
     P(vol_info_mutex);
     dcr->volume_in_use = false;
-    for (int vol_index=1;  vol_index < 20; vol_index++) {
+    for (int vol_index=1;  vol_index < 40; vol_index++) {
        bash_spaces(dcr->media_type);
        bash_spaces(dcr->pool_name);
        dir->fsend(Find_media, jcr->Job, vol_index, dcr->pool_name, dcr->media_type);
@@ -275,33 +274,26 @@ bool dir_find_next_appendable_volume(DCR *dcr)
        bool ok = do_get_volume_info(dcr);
        if (ok) {
           if (!is_volume_in_use(dcr)) {
-             found = true;
-             break;
+             Dmsg0(400, "dir_find_next_appendable_volume return true\n");
+             if (reserve_volume(dcr, dcr->VolumeName) == 0) {
+                Dmsg2(100, "Could not reserve volume %s on %s\n", dcr->VolumeName,
+                    dcr->dev->print_name());
+                continue;
+             }
+             V(vol_info_mutex);
+             unlock_reservations();
+             return true;
           } else {
              Dmsg1(100, "Volume %s is in use.\n", dcr->VolumeName);
              dcr->volume_in_use = true;
              continue;
           }
-       } else {
-          Dmsg2(100, "No vol. index %d return false. dev=%s\n", vol_index,
-             dcr->dev->print_name());
-          found = false;
-          break;
        }
-    }
-    if (found) {
-       Dmsg0(400, "dir_find_next_appendable_volume return true\n");
-       if (reserve_volume(dcr, dcr->VolumeName) == 0) {
-          Dmsg2(100, "Could not reserve volume %s on %s\n", dcr->VolumeName,
-              dcr->dev->print_name());
-          goto bail_out;
-       }
-       V(vol_info_mutex);
-       unlock_reservations();
-       return true;
+       Dmsg2(100, "No vol. index %d return false. dev=%s\n", vol_index,
+          dcr->dev->print_name());
+       break;
     }
 
-bail_out:
     dcr->VolumeName[0] = 0;
     V(vol_info_mutex);
     unlock_reservations();
@@ -534,7 +526,6 @@ bool dir_ask_sysop_to_create_appendable_volume(DCR *dcr)
          return false;
       }
       Dmsg1(100, "Someone woke me for device %s\n", dev->print_name());
-      break;
    }
    set_jcr_job_status(jcr, JS_Running);
    dir_send_job_status(jcr);
index 18e2237179016eff002dd072ff7e33117c9780df..0999616facf42b95f65c2c1a00df91622d906edd 100644 (file)
@@ -4,8 +4,8 @@
 
 #undef  VERSION
 #define VERSION "2.3.12"
-#define BDATE   "09 March 2008"
-#define LSMDATE "09Mar08"
+#define BDATE   "11 March 2008"
+#define LSMDATE "11Mar08"
 
 #define PROG_COPYRIGHT "Copyright (C) %d-2008 Free Software Foundation Europe e.V.\n"
 #define BYEAR "2008"       /* year for copyright messages in progs */
index c8de57138b835aa6718ea2325b335cb13ec48fa3..077d8d7dce6792adbd21b1048845199565ec59d0 100644 (file)
@@ -1,6 +1,9 @@
               Technical notes on version 2.3
 
 General:
+11Mar08
+kes  Rework dir_find_next_appendable_volume to make a bit more effort
+     to find a suitable volume before giving up.
 10Mar08
 kes  Make ask_sysop_to_create... to return if waken from wait.
      This helps get out of blocked conditions.