]> git.sur5r.net Git - bacula/bacula/commitdiff
kes Make ask_sysop_to_create... to return if waken from wait.
authorKern Sibbald <kern@sibbald.com>
Mon, 10 Mar 2008 22:01:49 +0000 (22:01 +0000)
committerKern Sibbald <kern@sibbald.com>
Mon, 10 Mar 2008 22:01:49 +0000 (22:01 +0000)
     This helps get out of blocked conditions.
kes  Experimental implementation of switch_device in reservations.

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

bacula/src/stored/askdir.c
bacula/src/stored/label.c
bacula/src/stored/reserve.c
bacula/technotes-2.3

index 5b14f360dec15f38bc824395a2c6c0fcca6c471c..a6767897be04c0c4fa70180fc6e5aa9d485f5043 100644 (file)
@@ -534,6 +534,7 @@ 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 115f7ae0d1e1f53f82979e9e154f24f1a3784135..18b1aaa7b54b4e7b86de197554694dcf0c8870c5 100644 (file)
@@ -339,7 +339,6 @@ bool write_new_volume_label_to_dev(DCR *dcr, const char *VolName,
    }
    Dmsg1(150, "Label type=%d\n", dev->label_type);
    if (!dev->rewind(dcr)) {
-      dev->clear_volhdr();
       Dmsg2(130, "Bad status on %s from rewind: ERR=%s\n", dev->print_name(), dev->print_errmsg());
       if (!forge_on) {
          goto bail_out;
@@ -602,7 +601,7 @@ void create_volume_label(DEVICE *dev, const char *VolName,
 
    ASSERT(dev != NULL);
 
-   dev->clear_volhdr();          /* release any old volume */
+   dev->clear_volhdr();          /* clear any old volume info */
 
    bstrncpy(dev->VolHdr.Id, BaculaId, sizeof(dev->VolHdr.Id));
    dev->VolHdr.VerNum = BaculaTapeVersion;
index 7ae826b9993cbb989adad92cefb2289a30e893c1..06d55b348c5d7e896f38bc319bcaf27b3242c2f3 100644 (file)
@@ -53,6 +53,7 @@ static bool reserve_device_for_append(DCR *dcr, RCTX &rctx);
 static bool use_storage_cmd(JCR *jcr);
 static void queue_reserve_message(JCR *jcr);
 static void pop_reserve_messages(JCR *jcr);
+void switch_device(DCR *dcr, DEVICE *dev);
 
 /* Requests from the Director daemon */
 static char use_storage[]  = "use storage=%127s media_type=%127s "
@@ -379,6 +380,9 @@ VOLRES *reserve_volume(DCR *dcr, const char *VolumeName)
       /* Check if we are trying to use the Volume on a different drive */
       if (dev != vol->dev) {
          /* Caller wants to switch Volume to another device */
+         switch_device(dcr, vol->dev);
+         dev = vol->dev;
+#ifdef xxx
          if (!vol->dev->is_busy()) {
             /* OK to move it -- I'm not sure this will work */
             Dmsg3(dbglvl, "==== Swap vol=%s from dev=%s to %s\n", VolumeName,
@@ -394,6 +398,7 @@ VOLRES *reserve_volume(DCR *dcr, const char *VolumeName)
             vol = NULL;                /* device busy */
             goto get_out;
          }
+#endif
       }
    }
    dev->vol = vol;
index 3c4a0c7d4322b269f9d9cb3ae3c9655fdfc44ffa..c8de57138b835aa6718ea2325b335cb13ec48fa3 100644 (file)
@@ -2,6 +2,9 @@
 
 General:
 10Mar08
+kes  Make ask_sysop_to_create... to return if waken from wait.
+     This helps get out of blocked conditions.
+kes  Experimental implementation of switch_device in reservations. 
 kes  Implement FD version to allow easier protocol changes.
 kes  Add Plugin Options string -- not yet passed to FD.
 kes  Implement PluginOptions ACL.