]> git.sur5r.net Git - bacula/bacula/commitdiff
volume_unused() tweaks
authorKern Sibbald <kern@sibbald.com>
Sun, 6 Jan 2008 22:12:52 +0000 (22:12 +0000)
committerKern Sibbald <kern@sibbald.com>
Sun, 6 Jan 2008 22:12:52 +0000 (22:12 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@6250 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/stored/acquire.c
bacula/src/stored/reserve.c
bacula/src/version.h

index 198bb858cd0ebc03c0e4e3633d3ea4a3386884ae..a0dcf4ced2934ed5dbc441b4e2539160cbb34941 100644 (file)
@@ -80,7 +80,6 @@ bool acquire_device_for_read(DCR *dcr)
          edit_int64(jcr->JobId, ed1));
       goto get_out;
    }
-   volume_unused(dcr);                /* release any current volume */
    jcr->CurReadVolume++;
    for (i=1; i<jcr->CurReadVolume; i++) {
       vol = vol->next;
@@ -507,6 +506,7 @@ bool release_device(DCR *dcr)
       dev->clear_read();              /* clear read bit */
       Dmsg0(100, "dir_update_vol_info. Release0\n");
       dir_update_volume_info(dcr, false, false); /* send Volume info to Director */
+      volume_unused(dcr);
 
    } else if (dev->num_writers > 0) {
       /* 
@@ -527,6 +527,7 @@ bool release_device(DCR *dcr)
          if (!dev->num_writers && dev->can_write() && dev->block_num > 0) {
             dev->weof(1);
             write_ansi_ibm_labels(dcr, ANSI_EOF_LABEL, dev->VolHdr.VolumeName);
+            volume_unused(dcr);
          }
          if (!dev->at_weot()) {
             dev->VolCatInfo.VolCatFiles = dev->file;   /* set number of files */
index e9557e301d2bc9c2c0ad4c211cd5600a1b4345bd..d0e3b7b43be106c4558d4d2489808d4063f9e7b4 100644 (file)
@@ -456,8 +456,8 @@ VOLRES *find_volume(DCR *dcr)
 }
 
 /* 
- * Remove any reservation from a drive and if no one is using
- *  the volume, mark it unused.
+ * Remove any reservation from a drive and tell the system
+ *  that the volume is unused at least by us.
  */
 void unreserve_device(DCR *dcr)
 {
@@ -510,6 +510,11 @@ bool volume_unused(DCR *dcr)
 #endif
    Dmsg2(dbglvl, "mark released. num_writers=%d reserved=%d\n",
       dev->num_writers, dev->reserved_device);
+#ifdef xxx
+   if (dev->num_writers > 0 || dev->reserved_device > 0) {
+      ASSERT(0);
+   }
+#endif
 
    /*  
     * If this is a tape, we do not free the volume, rather we wait
@@ -1161,7 +1166,7 @@ static int reserve_device(RCTX &rctx)
             if (dcr->volume_in_use && !rctx.PreferMountedVols) {
                rctx.PreferMountedVols = true;
                if (dcr->VolumeName[0]) {
-                  volume_unused(dcr);
+        //        volume_unused(dcr);
                }
                goto bail_out;
             }
@@ -1178,7 +1183,7 @@ static int reserve_device(RCTX &rctx)
              */
             if (dcr->dev->num_writers != 0) {
                if (dcr->VolumeName[0]) {
-                  volume_unused(dcr);
+         //       volume_unused(dcr);
                }
                goto bail_out;
             }
index 6ad992a29e65c904ce4b08601c4a0c2c9be32fd2..e127cca19d72565771ceb33c475527cdf1203f1e 100644 (file)
@@ -4,8 +4,8 @@
 
 #undef  VERSION
 #define VERSION "2.3.8"
-#define BDATE   "02 January 2008"
-#define LSMDATE "02Jan08"
+#define BDATE   "06 January 2008"
+#define LSMDATE "06Jan08"
 
 #define PROG_COPYRIGHT "Copyright (C) %d-2007 Free Software Foundation Europe e.V.\n"
 #define BYEAR "2008"       /* year for copyright messages in progs */