]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/acquire.c
ebl update faketape driver to work with regress tests
[bacula/bacula] / bacula / src / stored / acquire.c
index 680db29594e57926497d522e5017948f6788cee6..9823d4bb2c36ddbee23440b7eb5257bc7098e7de 100644 (file)
@@ -97,18 +97,6 @@ bool acquire_device_for_read(DCR *dcr)
    bstrncpy(dcr->media_type, vol->MediaType, sizeof(dcr->media_type));
    dcr->VolCatInfo.Slot = vol->Slot;
    dcr->VolCatInfo.InChanger = vol->Slot > 0; 
-   if (reserve_volume(dcr, dcr->VolumeName) == NULL) {
-      Dmsg2(100, "Could not reserve volume %s on %s\n", dcr->VolumeName,
-            dcr->dev->print_name());
-      Jmsg2(jcr, M_FATAL, 0, _("Could not reserve volume %s on %s\n"), dcr->VolumeName,
-            dcr->dev->print_name());
-      goto get_out;
-   }
-   if (dev->vol && dev->vol->is_swapping()) {
-      dev->vol->set_slot(vol->Slot);
-      Dmsg3(100, "swapping: slot=%d Vol=%s dev=%s\n", dev->vol->get_slot(),
-         dev->vol->vol_name, dev->print_name());
-   }
     
    /*
     * If the MediaType requested for this volume is not the
@@ -169,8 +157,10 @@ bool acquire_device_for_read(DCR *dcr)
          Dmsg1(50, "Media Type change.  New device %s chosen.\n", dev->print_name());
 
          bstrncpy(dcr->VolumeName, vol->VolumeName, sizeof(dcr->VolumeName));
+         bstrncpy(dcr->VolCatInfo.VolCatName, vol->VolumeName, sizeof(dcr->VolCatInfo.VolCatName));
          bstrncpy(dcr->media_type, vol->MediaType, sizeof(dcr->media_type));
          dcr->VolCatInfo.Slot = vol->Slot;
+         dcr->VolCatInfo.InChanger = vol->Slot > 0; 
          bstrncpy(dcr->pool_name, store->pool_name, sizeof(dcr->pool_name));
          bstrncpy(dcr->pool_type, store->pool_type, sizeof(dcr->pool_type));
       } else {
@@ -182,6 +172,19 @@ bool acquire_device_for_read(DCR *dcr)
       }
    }
 
+   if (reserve_volume(dcr, dcr->VolumeName) == NULL) {
+      Dmsg2(100, "Could not reserve volume %s on %s\n", dcr->VolumeName,
+            dcr->dev->print_name());
+      Jmsg2(jcr, M_FATAL, 0, _("Could not reserve volume %s on %s\n"), dcr->VolumeName,
+            dcr->dev->print_name());
+      goto get_out;
+   }
+   if (dev->vol && dev->vol->is_swapping()) {
+      dev->vol->set_slot(vol->Slot);
+      Dmsg3(100, "swapping: slot=%d Vol=%s dev=%s\n", dev->vol->get_slot(),
+         dev->vol->vol_name, dev->print_name());
+   }
+
 
    init_device_wait_timers(dcr);
 
@@ -191,7 +194,7 @@ bool acquire_device_for_read(DCR *dcr)
 
 
    /* Volume info is always needed because of VolParts */
-   Dmsg0(200, "dir_get_volume_info\n");
+   Dmsg1(150, "dir_get_volume_info vol=%s\n", dcr->VolumeName);
    if (!dir_get_volume_info(dcr, GET_VOL_INFO_FOR_READ)) {
       Jmsg1(jcr, M_WARNING, 0, "%s", jcr->errmsg);
    }