X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fstored%2Fautochanger.c;h=e798d9fa6865ae4d5fbfb10ca420ccd7ef9f9199;hb=b58f32ee0c8cce5b5f7af1416966b8bd2b3ccb6d;hp=9ed6c8f7680e858606eca64069034f32ba508ba9;hpb=17350b711d777172e5ef8b1e865d979e92ff0a5c;p=bacula%2Fbacula diff --git a/bacula/src/stored/autochanger.c b/bacula/src/stored/autochanger.c index 9ed6c8f768..e798d9fa68 100644 --- a/bacula/src/stored/autochanger.c +++ b/bacula/src/stored/autochanger.c @@ -118,16 +118,19 @@ int autoload_device(DCR *dcr, int writing, BSOCK *dir) POOLMEM *changer; if (!dev->is_autochanger()) { - Dmsg1(200, "Device %s is not an autochanger\n", dev->print_name()); + Dmsg1(100, "Device %s is not an autochanger\n", dev->print_name()); return 0; } /* An empty ChangerCommand => virtual disk autochanger */ if (dcr->device->changer_command && dcr->device->changer_command[0] == 0) { + Dmsg0(100, "ChangerCommand=0, virtual disk changer\n"); return 1; /* nothing to load */ } 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); /* * Handle autoloaders here. If we cannot autoload it, we * will return 0 so that the sysop will be asked to load it. @@ -184,7 +187,7 @@ int autoload_device(DCR *dcr, int writing, BSOCK *dir) * Load the desired cassette */ lock_changer(dcr); - Dmsg1(100, "Doing changer load slot %d\n", slot); + Dmsg2(100, "Doing changer load slot %d %s\n", slot, dev->print_name()); Jmsg(jcr, M_INFO, 0, _("3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"), slot, drive); @@ -249,7 +252,7 @@ int get_autochanger_loaded_slot(DCR *dcr) return -1; } if (!dcr->device->changer_command) { - Jmsg(jcr, M_FATAL, 0, _("3992 Missing Changer command.\n")); +// Jmsg(jcr, M_FATAL, 0, _("3992 Missing Changer command.\n")); return -1; } if (dev->Slot > 0) { @@ -335,6 +338,7 @@ bool unload_autochanger(DCR *dcr, int loaded) /* Virtual disk autochanger */ if (dcr->device->changer_command[0] == 0) { + dev->clear_unload(); return true; } @@ -368,11 +372,12 @@ bool unload_autochanger(DCR *dcr, int loaded) } else { dev->Slot = 0; /* nothing loaded */ } - dev->clear_unload(); + unlock_changer(dcr); + free_volume(dev); /* Free any volume associated with this drive */ free_pool_memory(changer); - unlock_changer(dcr); } + dev->clear_unload(); return ok; } @@ -477,13 +482,15 @@ bool unload_dev(DCR *dcr, DEVICE *dev) ok = false; dev->Slot = -1; /* unknown */ } else { + Dmsg2(100, "Slot %d unloaded %s\n", dev->Slot, dev->print_name()); dev->Slot = 0; /* nothing loaded */ - Dmsg0(100, "Slot unloaded\n"); } - free_volume(dev); /* Free any volume associated with this drive */ dev->clear_unload(); unlock_changer(dcr); + dev->dunlock(); + + free_volume(dev); /* Free any volume associated with this drive */ free_pool_memory(changer_cmd); return ok; }