]> git.sur5r.net Git - bacula/bacula/commitdiff
Implement code to turn off pruning in obtaining the next volume.
authorKern Sibbald <kern@sibbald.com>
Sun, 25 Mar 2007 13:11:55 +0000 (13:11 +0000)
committerKern Sibbald <kern@sibbald.com>
Sun, 25 Mar 2007 13:11:55 +0000 (13:11 +0000)
     Pruning is turned off for the status dir command, but turned on
     for SD requests and for the list nextvolume command.

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

bacula/src/dird/catreq.c
bacula/src/dird/dird.h
bacula/src/dird/next_vol.c
bacula/src/dird/protos.h
bacula/src/dird/ua_output.c
bacula/src/dird/ua_status.c
bacula/src/version.h
bacula/technotes-2.1

index 443daa6ea0c82936b14f97f663287a8478cb3459..3e3800ec489042de632446125c937bd4eb30077b 100644 (file)
@@ -141,7 +141,7 @@ void catalog_request(JCR *jcr, BSOCK *bs)
       if (ok) {
          mr.PoolId = pr.PoolId;
          mr.StorageId = jcr->wstore->StorageId;
-         ok = find_next_volume_for_append(jcr, &mr, index, true /*permit create new vol*/);
+         ok = find_next_volume_for_append(jcr, &mr, index, fnv_create_vol, fnv_prune);
          Dmsg3(050, "find_media ok=%d idx=%d vol=%s\n", ok, index, mr.VolumeName);
       }
       /*
index 0dccce803fac489976d38d7de07add7d58a99f28..c0b5393e9227100dd522923f73b8e29b53a49ccb 100644 (file)
@@ -1,14 +1,7 @@
-/*
- * Includes specific to the Director
- *
- *     Kern Sibbald, December 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.
 */
+/*
+ * Includes specific to the Director
+ *
+ *     Kern Sibbald, December MM
+ *
+ *    Version $Id$
+ */
 
 #include "lib/runscript.h"
 #include "dird_conf.h"
@@ -67,4 +67,14 @@ struct del_ctx {
    int tot_ids;                       /* total to process */
 };
 
+/* Flags for find_next_volume_for_append() */
+enum {
+  fnv_create_vol    = true,
+  fnv_no_create_vol = false,
+  fnv_prune         = true,
+  fnv_no_prune      = false
+};
+
+     
+
 #include "protos.h"
index 0540e080b8b680c27a84373a50526eeed6513696..460afbd99a5d9b7de4482647343e1ed62ff7c147 100644 (file)
@@ -51,7 +51,8 @@ static bool get_scratch_volume(JCR *jcr, MEDIA_DBR *mr, bool InChanger);
  *   MEDIA_DBR mr with PoolId set
  *   create -- whether or not to create a new volume
  */
-int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index, bool create)
+int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index,             
+                                bool create, bool prune)
 {
    int retry = 0;
    bool ok;
@@ -94,7 +95,9 @@ int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index, bool create)
                 * 4. Try pruning Volumes
                 */
                Dmsg0(150, "Call prune_volumes\n");
-               prune_volumes(jcr, mr);
+               if (prune) {
+                  prune_volumes(jcr, mr);
+               }
                ok = recycle_oldest_purged_volume(jcr, InChanger, mr);
                if (!ok) {
                   Dmsg4(050, "after prune volumes_vol ok=%d index=%d InChanger=%d Vstat=%s\n",
@@ -134,7 +137,7 @@ int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index, bool create)
             /* Find oldest volume to recycle */
             ok = db_find_next_volume(jcr, jcr->db, -1, InChanger, mr);
             Dmsg1(400, "Find oldest=%d\n", ok);
-            if (ok) {
+            if (ok && prune) {
                UAContext *ua;
                Dmsg0(400, "Try purge.\n");
                /*
index ceec824345e5bd1f35a6dcfaf840bb69c92f8cac..0d34d664a416d7768fddc1ce36a38ba214999e57 100644 (file)
@@ -148,7 +148,8 @@ extern int bget_dirmsg(BSOCK *bs);
 extern void wait_for_storage_daemon_termination(JCR *jcr);
 
 /* next_vol.c */
-int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index, bool create);
+int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index,
+                                bool create, bool purge);
 bool has_volume_expired(JCR *jcr, MEDIA_DBR *mr);
 void check_if_volume_valid_or_recyclable(JCR *jcr, MEDIA_DBR *mr, const char **reason);
 
index 72a4ef9ed0691b60fc6ea4bdeb038c67b6f783bd..e6d77d67eb3384075e026380d6dd80278df27085 100644 (file)
@@ -481,7 +481,7 @@ static bool list_nextvol(UAContext *ua, int ndays)
       mr.PoolId = jcr->jr.PoolId;
       get_job_storage(&store, job, run);
       mr.StorageId = store.store->StorageId;
-      if (!find_next_volume_for_append(jcr, &mr, 1, false/*no create*/)) {
+      if (!find_next_volume_for_append(jcr, &mr, 1, fnv_no_create_vol, fnv_prune)) {
          bsendmsg(ua, _("Could not find next Volume for Job %s (%s, %s).\n"),
             job->hdr.name, pr.Name, level_to_str(run->level));
       } else {
index 3b7c04c878773d74c42d0a63a9536f7af64afadb..a99280d286c11d0f1c3717dfc12684c78dedfcc5 100644 (file)
@@ -402,7 +402,7 @@ static void prt_runtime(UAContext *ua, sched_pkt *sp)
          mr.StorageId = sp->store->StorageId;
          jcr->wstore = sp->store;
          Dmsg0(250, "call find_next_volume_for_append\n");
-         ok = find_next_volume_for_append(jcr, &mr, 1, false/*no create*/);
+         ok = find_next_volume_for_append(jcr, &mr, 1, fnv_no_create_vol, fnv_no_prune);
       }
       if (!ok) {
          bstrncpy(mr.VolumeName, "*unknown*", sizeof(mr.VolumeName));
index 0633a26d944f0bc2b4baedddf79a2260da1301fe..b9ad4da1f86858cb0b7ba0ec690fa94218afcc0a 100644 (file)
@@ -4,8 +4,8 @@
 
 #undef  VERSION
 #define VERSION "2.1.6"
-#define BDATE   "24 March 2007"
-#define LSMDATE "24Mar07"
+#define BDATE   "25 March 2007"
+#define LSMDATE "25Mar07"
 
 #define PROG_COPYRIGHT "Copyright (C) %d-2007 Free Software Foundation Europe e.V.\n"
 #define BYEAR "2007"       /* year for copyright messages in progs */
index 3eb85e702eaa026d9ee699384222ed17de4f8dd2..46934cb5020c0304149958a06e22f17fb224c0de 100644 (file)
@@ -1,6 +1,10 @@
               Technical notes on version 2.1
 
 General:
+25Mar07
+kes  Implement code to turn off pruning in obtaining the next volume.
+     Pruning is turned off for the status dir command, but turned on
+     for SD requests and for the list nextvolume command.
 24Mar07
 kes  Correct Qmsg() that was not updated correctly when committing a
      previous change (probably the recent TLS patch).