]> git.sur5r.net Git - bacula/bacula/commitdiff
kes Add DataDespooling and DataCommitting status (committing is
authorKern Sibbald <kern@sibbald.com>
Thu, 10 Jan 2008 15:15:04 +0000 (15:15 +0000)
committerKern Sibbald <kern@sibbald.com>
Thu, 10 Jan 2008 15:15:04 +0000 (15:15 +0000)
     the last despooling).
kes  Finish implementation of new reservations code noted below.

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

12 files changed:
bacula/src/dird/ua_status.c
bacula/src/jcr.h
bacula/src/lib/util.c
bacula/src/stored/acquire.c
bacula/src/stored/btape.c
bacula/src/stored/dircmd.c
bacula/src/stored/label.c
bacula/src/stored/mount.c
bacula/src/stored/reserve.c
bacula/src/stored/spool.c
bacula/src/version.h
bacula/technotes-2.3

index 1d267c33b2f64e376de55820a0001f1e8a972a4e..d2b067b074c398a8adbd9a0c0019c0e4f17c75d1 100644 (file)
@@ -636,6 +636,12 @@ static void list_running_jobs(UAContext *ua)
       case JS_WaitPriority:
          msg = _("is waiting for higher priority jobs to finish");
          break;
+      case JS_DataCommitting:
+         msg = _("SD committing Data");
+         break;
+      case JS_DataDespooling:
+         msg = _("SD despooling Data");
+         break;
       case JS_AttrDespooling:
          msg = _("SD despooling Attributes");
          break;
@@ -681,6 +687,12 @@ static void list_running_jobs(UAContext *ua)
         }
         msg = emsg;
         break;
+      case JS_DataCommitting:
+         msg = _("SD committing Data");
+         break;
+      case JS_DataDespooling:
+         msg = _("SD despooling Data");
+         break;
       case JS_AttrDespooling:
          msg = _("SD despooling Attributes");
          break;
index ccef2c32b2d65462fb88bfda168fc448de746b8c..017acdb5eb2dc0755778f8ed0aa3f13e9129dccc 100644 (file)
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2008 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.
@@ -89,6 +89,8 @@
 #define JS_WaitPriority          'p'  /* Waiting for higher priority jobs to finish */
 #define JS_AttrDespooling        'a'  /* SD despooling attributes */
 #define JS_AttrInserting         'i'  /* Doing batch insert file records */
+#define JS_DataDespooling        'l'  /* Doing data despooling */
+#define JS_DataCommitting        'L'  /* Committing data (last despool) */
 
 /* Migration selection types */
 enum {
index d88714f43645a41e1e0c6d629fc2e093c6ec980e..eb13ddcbdf90bbd4ca72e2ccf247b74025b2ee40 100644 (file)
@@ -230,6 +230,12 @@ void jobstatus_to_ascii(int JobStatus, char *msg, int maxlen)
    case JS_WaitPriority:
       jobstat = _("Waiting on Priority");
       break;
+   case JS_DataCommitting:
+      jobstat = _("SD committing Data");
+      break;
+   case JS_DataDespooling:
+      jobstat = _("SD despooling Data");
+      break;
    case JS_AttrDespooling:
       jobstat = _("SD despooling Attributes");
       break;
index 83741679d03cd8687907aef928e3dc680e21e036..45517b8db55f8df09a9116faf734e0c6b2f7ee64 100644 (file)
@@ -541,6 +541,7 @@ bool release_device(DCR *dcr)
        *   has failed, since the device is not in read mode and
        *   there are no writers. It was probably reserved.
        */
+      volume_unused(dcr);
    }
 
    /* If no writers, close if file or !CAP_ALWAYS_OPEN */
index d966a881f0939afbbc07e9571f11fd02cda8bdab..b285c72e39d97d70134ae86cda6ed96b38f3a814 100644 (file)
@@ -2732,6 +2732,7 @@ static bool my_mount_next_read_volume(DCR *dcr)
    Pmsg2(000, _("End of Volume \"%s\" %d records.\n"), dcr->VolumeName,
       quickie_count);
 
+   volume_unused(dcr);             /* release current volume */
    if (LastBlock != block->BlockNumber) {
       VolBytes += block->block_len;
    }
index 9901774a71c28fd0aaaad07ac22b3cdb898b0ccc..a3594fe54b5d0529cb4b3dd7f75720918c845b54 100644 (file)
@@ -515,6 +515,7 @@ bail_out:
    if (!dev->is_open()) {
       dev->clear_volhdr();
    }
+   volume_unused(dcr);                   /* no longer using volume */
    give_back_device_lock(dev, &hold);
    return;
 }
index b1f8ee0cdf8896d3f06d0c4a0440446d8178eacf..d02d83f7d8a4788b3aff2e2fb105607d70d225e6 100644 (file)
@@ -409,6 +409,7 @@ bool write_new_volume_label_to_dev(DCR *dcr, const char *VolName,
    return true;
 
 bail_out:
+   volume_unused(dcr);
    dev->clear_volhdr();
    dev->clear_append();               /* remove append since this is PRE_LABEL */
    return false;
index 9462815a2001f6d8e95405b9ca49c32651dfab9d..893fdeb7788de36d586a5758e43d2ba88c86c6d2 100644 (file)
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2008 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.
@@ -625,6 +625,8 @@ bool mount_next_read_volume(DCR *dcr)
    DEVICE *dev = dcr->dev;
    JCR *jcr = dcr->jcr;
    Dmsg2(90, "NumReadVolumes=%d CurReadVolume=%d\n", jcr->NumReadVolumes, jcr->CurReadVolume);
+
+   volume_unused(dcr);                /* release current volume */
    /*
     * End Of Tape -- mount next Volume (if another specified)
     */
index 9c7960e684cfe06fe5b5afdc8c527ef1d69ffaca..269be5104c586ce88169b06a8bcb2580b25e8ade 100644 (file)
@@ -516,7 +516,7 @@ bool volume_unused(DCR *dcr)
    Dmsg3(dbglvl, "=== mark released vol=%s num_writers=%d reserved=%d\n",
       dev->vol->vol_name, dev->num_writers, dev->reserved_device);
    dev->vol->released = true;
-   if (dev->is_tape() || dev->is_autochanger()) {
+   if (dev->is_tape()) { // || dev->is_autochanger()) {
       return true;
    } else {
       /*
@@ -1142,7 +1142,14 @@ static int reserve_device(RCTX &rctx)
                dcr->dev_name, dcr->media_type, dcr->pool_name, ok);
       Dmsg3(dbglvl, "Vol=%s num_writers=%d, have_vol=%d\n", 
          rctx.VolumeName, dcr->dev->num_writers, rctx.have_volume);
-      if (!rctx.have_volume) {
+      if (rctx.have_volume) {
+         if (reserve_volume(dcr, rctx.VolumeName)) {
+            Dmsg1(dbglvl, "Reserved vol=%s\n", rctx.VolumeName);
+         } else {
+            Dmsg1(dbglvl, "Could not reserve vol=%s\n", rctx.VolumeName);
+            goto bail_out;
+         }
+      } else {
          dcr->any_volume = true;
          Dmsg0(dbglvl, "no vol, call find_next_appendable_vol.\n");
          if (dir_find_next_appendable_volume(dcr)) {
@@ -1161,13 +1168,13 @@ static int reserve_device(RCTX &rctx)
             if (dcr->volume_in_use && !rctx.PreferMountedVols) {
                rctx.PreferMountedVols = true;
                if (dcr->VolumeName[0]) {
-                  volume_unused(dcr);
+                  unreserve_device(dcr);
                }
                goto bail_out;
             }
             /*
              * Note. Under some circumstances, the Director can hand us
-             *  a Volume name that is no the same as the one on the current
+             *  a Volume name that is not the same as the one on the current
              *  drive, and in that case, the call above to find the next
              *  volume will fail because in attempting to reserve the Volume
              *  the code will realize that we already have a tape mounted,
@@ -1178,7 +1185,7 @@ static int reserve_device(RCTX &rctx)
              */
             if (dcr->dev->num_writers != 0) {
                if (dcr->VolumeName[0]) {
-                  volume_unused(dcr);
+                  unreserve_device(dcr);
                }
                goto bail_out;
             }
@@ -1214,7 +1221,6 @@ static int reserve_device(RCTX &rctx)
 bail_out:
    rctx.have_volume = false;
    rctx.VolumeName[0] = 0;
-// free_dcr(dcr);
    Dmsg0(dbglvl, "Not OK.\n");
    return 0;
 }
index 25eb7c12d54047a3d3a4ef5fd0dfbfe42ca5f2f9..34a1da2d3843b42a23ebde486482c82ec302e17c 100644 (file)
@@ -232,10 +232,14 @@ static bool despool_data(DCR *dcr, bool commit)
       Jmsg(jcr, M_INFO, 0, _("Committing spooled data to Volume \"%s\". Despooling %s bytes ...\n"),
          jcr->dcr->VolumeName,
          edit_uint64_with_commas(jcr->dcr->job_spool_size, ec1));
+      set_jcr_job_status(jcr, JS_DataCommitting);
    } else {
       Jmsg(jcr, M_INFO, 0, _("Writing spooled data to Volume. Despooling %s bytes ...\n"),
          edit_uint64_with_commas(jcr->dcr->job_spool_size, ec1));
+      set_jcr_job_status(jcr, JS_DataDespooling);
    }
+   set_jcr_job_status(jcr, JS_DataDespooling);
+   dir_send_job_status(jcr);
    dcr->despool_wait = true;
    dcr->spooling = false;
    /*
@@ -337,6 +341,7 @@ static bool despool_data(DCR *dcr, bool commit)
    free(rdev);
    dcr->spooling = true;           /* turn on spooling again */
    dcr->despooling = false;
+
    /* 
     * We are done, so unblock the device, but if we have done a 
     *  commit, leave it locked so that the job cleanup does not
@@ -348,6 +353,8 @@ static bool despool_data(DCR *dcr, bool commit)
    if (!commit) {
       dcr->dunlock();
    }
+   set_jcr_job_status(jcr, JS_Running);
+   dir_send_job_status(jcr);
    return ok;
 }
 
index e127cca19d72565771ceb33c475527cdf1203f1e..db3137b2eaa0968f11f2be02ee67b9834e7276c7 100644 (file)
@@ -4,10 +4,10 @@
 
 #undef  VERSION
 #define VERSION "2.3.8"
-#define BDATE   "06 January 2008"
-#define LSMDATE "06Jan08"
+#define BDATE   "10 January 2008"
+#define LSMDATE "10Jan08"
 
-#define PROG_COPYRIGHT "Copyright (C) %d-2007 Free Software Foundation Europe e.V.\n"
+#define PROG_COPYRIGHT "Copyright (C) %d-2008 Free Software Foundation Europe e.V.\n"
 #define BYEAR "2008"       /* year for copyright messages in progs */
 
 /*
index abff2d0aeff2bce41e92a9a5d9b9ac0474cb331d..9522891bc2f28f37941cd8cf3e23058e5f66ae6a 100644 (file)
@@ -1,11 +1,15 @@
               Technical notes on version 2.3
 
 General:
+10Jan08
+kes  Add DataDespooling and DataCommitting status (committing is
+     the last despooling).
+kes  Finish implementation of new reservations code noted below.
 08Jan08
+kes  Fix bsnprintf for float point numbers. I broke recently when
+     parameterizing some variables. This fixes bug #1036.
 kes  Undo recent reservations changes ... will apply them later
      when they work better.
-kes  Fix bsnprintf for float point numbers. I broke recently when
-     parameterizing some variables.
 06Jan08
 ebl  Fixes #1034 which cause mysql to hang the connection after 8h
 ebl  Change default statistics target of filename.name and path.path
@@ -37,6 +41,8 @@ ebl  Fixes bug #1028 where "Selection Type" option was not usable
      with JobDefs.
 ebl  Fixes bug #897 and bug #1005 where bacula doesn't display runscript
      output in error.
+
+Release Version 2.2.7
 24Dec07
 kes  Add new free_tls() entry point so that Win32 builds.
 kes  Fix compile warning in src/lib/util.c