]> git.sur5r.net Git - bacula/bacula/commitdiff
ebl fix a bug in get_scratch_volume() report by Andreas Helmcke
authorEric Bollengier <eric@eb.homelinux.org>
Tue, 17 Jul 2007 20:20:22 +0000 (20:20 +0000)
committerEric Bollengier <eric@eb.homelinux.org>
Tue, 17 Jul 2007 20:20:22 +0000 (20:20 +0000)
     Warning, in previous version, all media get from scratch keep their
     old retention.

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

bacula/src/dird/next_vol.c

index ed54ccf7e120217f6e856367cebc68b0dae7450a..c42dd4730b3e99a0b694ca52c29e17aa8d37fad9 100644 (file)
@@ -331,7 +331,6 @@ bool get_scratch_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr)
    POOL_DBR spr, pr;
    bool ok = false;
    bool found = false;
-   char ed1[50], ed2[50];
 
    /* Only one thread at a time can pull from the scratch pool */
    P(mutex);
@@ -373,53 +372,47 @@ bool get_scratch_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr)
           */
          memset(&pr, 0, sizeof(pr));
          bstrncpy(pr.Name, jcr->pool->hdr.name, sizeof(pr.Name));
-         if (!db_get_pool_record(jcr, jcr->db, &pr)) {
-            Jmsg(jcr, M_WARNING, 0, _("Unable to get Pool record: ERR=%s"), 
-                 db_strerror(jcr->db));
-            goto bail_out;
-         }
-         if (pr.MaxVols > 0 && pr.NumVols >= pr.MaxVols) {
-            Jmsg(jcr, M_WARNING, 0, _("Unable add Scratch Volume, Pool \"%s\" full MaxVols=%d\n"),
-               jcr->pool->hdr.name, pr.MaxVols);
-            goto bail_out;
-         }
 
-         /* OK, now move Scratch Volume */
-         db_lock(jcr->db);
-         Mmsg(query, "UPDATE Media SET PoolId=%s WHERE MediaId=%s",
-              edit_int64(mr->PoolId, ed1),
-              edit_int64(smr.MediaId, ed2));
-         ok = db_sql_query(jcr->db, query.c_str(), NULL, NULL);  
-         db_unlock(jcr->db);
-         if (!ok) {
-            Jmsg(jcr, M_WARNING, 0, _("Failed to move Scratch Volume. ERR=%s\n"),
-               db_strerror(jcr->db));
-           goto bail_out;
-          }
-         Jmsg(jcr, M_INFO, 0, _("Using Volume \"%s\" from 'Scratch' pool.\n"), 
-              smr.VolumeName);
-         /*
-          * Get *full* media record to return as db_find_next_volume does
-          *   not return everything .
-          */
-         if (!db_get_media_record(jcr, jcr->db, mr)) {
-            Jmsg(jcr, M_WARNING, 0, _("Unable to get Volume record: ERR=%s"),
-               db_strerror(jcr->db));
-            goto bail_out;
-         }
-         /* Set default parameters from current pool */
-         set_pool_dbr_defaults_in_media_dbr(mr, &pr);
-         /*
-          * set_pool_dbr_defaults_in_media_dbr set VolStatus to Append,
-          * we could have Recycled media,  
-          */
-         bstrncpy(mr->VolStatus, smr.VolStatus, sizeof(smr.VolStatus));
-         if (!db_update_media_record(jcr, jcr->db, mr)) {
-            Jmsg(jcr, M_WARNING, 0, _("Unable to update Volume record: ERR=%s"), 
-                 db_strerror(jcr->db));
-            goto bail_out;
-         }
-         ok = true;
+        if (!db_get_pool_record(jcr, jcr->db, &pr)) {
+           Jmsg(jcr, M_WARNING, 0, _("Unable to get Pool record: ERR=%s"), 
+                db_strerror(jcr->db));
+           goto bail_out;
+        }
+        
+        if (pr.MaxVols > 0 && pr.NumVols >= pr.MaxVols) {
+           Jmsg(jcr, M_WARNING, 0, _("Unable add Scratch Volume, Pool \"%s\" full MaxVols=%d\n"),
+                jcr->pool->hdr.name, pr.MaxVols);
+           goto bail_out;
+        }
+        /* OK, now move Scratch Volume */
+
+        /*
+         * Get *full* media record to return as db_find_next_volume does
+         *   not return everything .
+         */
+        mr->MediaId = smr.MediaId;
+        if (!db_get_media_record(jcr, jcr->db, mr)) {
+           Jmsg(jcr, M_WARNING, 0, _("Unable to get Volume record: ERR=%s"),
+                db_strerror(jcr->db));
+           goto bail_out;
+        }
+        /* Set default parameters from current pool */
+        set_pool_dbr_defaults_in_media_dbr(mr, &pr);
+        /*
+         * set_pool_dbr_defaults_in_media_dbr set VolStatus to Append,
+         * we could have Recycled media,  
+         */
+        bstrncpy(mr->VolStatus, smr.VolStatus, sizeof(smr.VolStatus));
+        if (!db_update_media_record(jcr, jcr->db, mr)) {
+           Jmsg(jcr, M_WARNING, 0, _("Failed to move Scratch Volume. ERR=%s\n"),
+                db_strerror(jcr->db));
+           goto bail_out;
+        }
+
+        Jmsg(jcr, M_INFO, 0, _("Using Volume \"%s\" from 'Scratch' pool.\n"), 
+             mr->VolumeName);
+        
+        ok = true;
       }
    }
 bail_out: