]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix updating of cached slots + error message numbering
authorKern Sibbald <kern@sibbald.com>
Mon, 30 Apr 2012 19:12:03 +0000 (21:12 +0200)
committerKern Sibbald <kern@sibbald.com>
Sat, 20 Apr 2013 12:50:37 +0000 (14:50 +0200)
bacula/src/stored/autochanger.c
bacula/src/stored/dircmd.c

index 9d6b243930deec574cdb40daa66bbf924bebf14f..653b6502ca9a4b55eec81ec86c3ea260d17fc99b 100644 (file)
@@ -512,10 +512,17 @@ bool unload_dev(DCR *dcr, DEVICE *dev)
    save_dev = dcr->dev;               /* save dcr device */
    dcr->dev = dev;                    /* temporarily point dcr at other device */
 
-   if (dev->get_slot() <= 0 && get_autochanger_loaded_slot(dcr) <= 0) {
+   /* Update slot if not set or not always_open */
+   if (dev->get_slot() <= 0 || !dev->has_cap(CAP_ALWAYSOPEN)) {
+      get_autochanger_loaded_slot(dcr);
+   }
+
+   /* Fail if we have no slot to unload */
+   if (dev->get_slot() <= 0) {
       dcr->dev = save_dev;
       return false;
    }
+   
    save_slot = dcr->VolCatInfo.Slot;
    dcr->VolCatInfo.Slot = dev->get_slot();
 
@@ -543,7 +550,7 @@ bool unload_dev(DCR *dcr, DEVICE *dev)
    if (stat != 0) {
       berrno be;
       be.set_errno(stat);
-      Jmsg(jcr, M_INFO, 0, _("3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"),
+      Jmsg(jcr, M_INFO, 0, _("3997 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"),
               dev->get_slot(), dev->drive_index, be.bstrerror());
 
       Dmsg3(100, "Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n",
index 702c2490c1ce3961c55b31d1cee2f96d2a6b47d5..0d86a3fca229d98cbf55b331dd1ba3b4df752b61 100644 (file)
@@ -1104,7 +1104,7 @@ static bool changer_cmd(JCR *jcr)
          dev = dcr->dev;
          dev->dlock();                 /* Use P to avoid indefinite block */
          if (!dev->device->changer_res) {
-            dir->fsend(_("3995 Device \"%s\" is not an autochanger.\n"), 
+            dir->fsend(_("3998 Device \"%s\" is not an autochanger.\n"), 
                dev->print_name());
          /* Under certain "safe" conditions, we can steal the lock */
          } else if (safe_cmd || !dev->is_open() || dev->can_steal_lock()) {