]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/acquire.c
Status cleanup and cancelling FD
[bacula/bacula] / bacula / src / stored / acquire.c
index 59418bc86ad4d97c6d24ba3acd765477aa6b6c6e..c9b16f152ed6e89a410b68a4fadd823fc3369928 100644 (file)
@@ -6,7 +6,7 @@
  *   Version $Id$
  */
 /*
-   Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker
+   Copyright (C) 2000-2003 Kern Sibbald and John Walker
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
@@ -128,6 +128,7 @@ default_path:
    stat = 1;                         /* good return */
    if ((dev->state & ST_TAPE) && vol->start_file > 0) {
       Dmsg1(200, "====== Got start_file = %d\n", vol->start_file);
+      Jmsg(jcr, M_INFO, 0, _("Forward spacing to file %d.\n"), vol->start_file);
       fsf_dev(dev, vol->start_file);
    }
 
@@ -236,15 +237,23 @@ int release_device(JCR *jcr, DEVICE *dev)
 
    } else if (dev->num_writers > 0) {
       dev->num_writers--;
+      if (dev->state & ST_TAPE) {
+        jcr->EndBlock = dev->EndBlock;
+        jcr->EndFile  = dev->EndFile;
+         Dmsg2(200, "Release device: EndFile=%u EndBlock=%u\n", jcr->EndFile, jcr->EndBlock);
+      } else {
+        jcr->EndBlock = (uint32_t)dev->file_addr;
+        jcr->EndFile = (uint32_t)(dev->file_addr >> 32);
+      }
       Dmsg1(100, "There are %d writers in release_device\n", dev->num_writers);
       if (dev->num_writers == 0) {
-        weof_dev(dev, 1);
          Dmsg0(100, "dir_create_jobmedia_record. Release\n");
         dir_create_jobmedia_record(jcr);
+        weof_dev(dev, 1);
         dev->VolCatInfo.VolCatFiles++;             /* increment number of files */
         dev->VolCatInfo.VolCatJobs++;              /* increment number of jobs */
         /* Note! do volume update before close, which zaps VolCatInfo */
-         Dmsg0(100, "dir_update_vol_info. Release\n");
+         Dmsg0(200, "dir_update_vol_info. Release0\n");
         dir_update_volume_info(jcr, &dev->VolCatInfo, 0); /* send Volume info to Director */
 
         if (!dev_is_tape(dev) || !(dev->capabilities & CAP_ALWAYSOPEN)) {
@@ -256,7 +265,7 @@ int release_device(JCR *jcr, DEVICE *dev)
       } else {
          Dmsg0(100, "dir_create_jobmedia_record. Release\n");
         dir_create_jobmedia_record(jcr);
-         Dmsg0(100, "dir_update_vol_info. Release\n");
+         Dmsg0(200, "dir_update_vol_info. Release1\n");
         dev->VolCatInfo.VolCatJobs++;              /* increment number of jobs */
         dir_update_volume_info(jcr, &dev->VolCatInfo, 0); /* send Volume info to Director */
       }