]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/autochanger.c
update version
[bacula/bacula] / bacula / src / stored / autochanger.c
index db0f640ae25dcb93e612e02cecf2fcab3a16a8a2..713d6ad28bdcb6c48fa70fcbc3068937f9767a11 100644 (file)
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2010 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.
@@ -20,7 +20,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   Bacula® is a registered trademark of John Walker.
+   Bacula® is a registered trademark of Kern Sibbald.
    The licensor of Bacula is the Free Software Foundation Europe
    (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
    Switzerland, email:ftf@fsfeurope.org.
@@ -31,7 +31,6 @@
  *
  *   Kern Sibbald, August MMII
  *                            
- *   Version $Id$
  */
 
 #include "bacula.h"                   /* pull in global headers */
@@ -130,7 +129,7 @@ int autoload_device(DCR *dcr, int writing, BSOCK *dir)
 
    slot = dcr->VolCatInfo.InChanger ? dcr->VolCatInfo.Slot : 0;
    Dmsg3(100, "autoload: slot=%d InChgr=%d Vol=%s\n", dcr->VolCatInfo.Slot,
-         dcr->VolCatInfo.InChanger, dcr->VolCatInfo.VolCatName);
+         dcr->VolCatInfo.InChanger, dcr->getVolCatName());
    /*
     * Handle autoloaders here.  If we cannot autoload it, we
     *  will return 0 so that the sysop will be asked to load it.
@@ -151,7 +150,7 @@ int autoload_device(DCR *dcr, int writing, BSOCK *dir)
    changer = get_pool_memory(PM_FNAME);
    if (slot <= 0) {
       Jmsg(jcr, M_INFO, 0, _("Invalid slot=%d defined in catalog for Volume \"%s\" "
-           "on %s. Manual load may be required.\n"), slot, dcr->VolCatInfo.VolCatName,
+           "on %s. Manual load may be required.\n"), slot, dcr->getVolCatName(),
            dev->print_name());
       rtn_stat = 0;
    } else if (!dcr->device->changer_name) {
@@ -427,11 +426,12 @@ static bool unload_other_drive(DCR *dcr, int slot)
       break;
    }
    if (dev->is_busy()) {
-      Jmsg(dcr->jcr, M_WARNING, 0, _("Volume \"%s\" is in use by device %s\n"),
-           dcr->VolumeName, dev->print_name());
+      Jmsg(dcr->jcr, M_WARNING, 0, _("Volume \"%s\" wanted on %s is in use by device %s\n"),
+           dcr->VolumeName, dcr->dev->print_name(), dev->print_name());
       Dmsg4(100, "Vol %s for dev=%s is busy dev=%s slot=%d\n",
            dcr->VolumeName, dcr->dev->print_name(), dev->print_name(), dev->get_slot());
       Dmsg2(100, "num_writ=%d reserv=%d\n", dev->num_writers, dev->num_reserved());
+      volume_unused(dcr);
       return false;
    }
    return unload_dev(dcr, dev);
@@ -463,7 +463,7 @@ bool unload_dev(DCR *dcr, DEVICE *dev)
    save_slot = dcr->VolCatInfo.Slot;
    dcr->VolCatInfo.Slot = dev->get_slot();
 
-   dev->dlock();
+//   dev->dlock();
 
    POOLMEM *changer_cmd = get_pool_memory(PM_FNAME);
    POOL_MEM results(PM_MESSAGE);
@@ -503,7 +503,7 @@ bool unload_dev(DCR *dcr, DEVICE *dev)
    }
    unlock_changer(dcr);
 
-   dev->dunlock();
+//   dev->dunlock();
 
    free_volume(dev);               /* Free any volume associated with this drive */
    free_pool_memory(changer_cmd);
@@ -559,7 +559,7 @@ bool autochanger_cmd(DCR *dcr, BSOCK *dir, const char *cmd)
       dir->fsend(_("3996 Open bpipe failed.\n"));
       goto bail_out;
    }
-   if (strcmp(cmd, "list") == 0) {
+   if (bstrcmp(cmd, "list") || bstrcmp(cmd, "listall")) {
       /* Get output from changer */
       while (fgets(dir->msg, len, bpipe->rfd)) {
          dir->msglen = strlen(dir->msg);