]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/catreq.c
Attempt to fix bug #1128 InChanger flag cleared during Migration
[bacula/bacula] / bacula / src / dird / catreq.c
index 2119f1ebe6974cfd73140cf3a87b7d02ea357229..b1504fe86cadcc8f0c1464c4df6feb85a6edc184 100644 (file)
@@ -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.
@@ -83,7 +83,7 @@ static int send_volume_info_to_storage_daemon(JCR *jcr, BSOCK *sd, MEDIA_DBR *mr
    jcr->MediaId = mr->MediaId;
    pm_strcpy(jcr->VolumeName, mr->VolumeName);
    bash_spaces(mr->VolumeName);
-   stat = bnet_fsend(sd, OK_media, mr->VolumeName, mr->VolJobs,
+   stat = sd->fsend(OK_media, mr->VolumeName, mr->VolJobs,
       mr->VolFiles, mr->VolBlocks, edit_uint64(mr->VolBytes, ed1),
       mr->VolMounts, mr->VolErrors, mr->VolWrites,
       edit_uint64(mr->MaxVolBytes, ed2),
@@ -267,6 +267,7 @@ void catalog_request(JCR *jcr, BSOCK *bs)
          }
       }
       Dmsg2(400, "Update media: BefVolJobs=%u After=%u\n", mr.VolJobs, sdmr.VolJobs);
+
       /*
        * Check if the volume has been written by the job, 
        * and update the LastWritten field if needed.
@@ -274,6 +275,16 @@ void catalog_request(JCR *jcr, BSOCK *bs)
       if (mr.VolBlocks != sdmr.VolBlocks && VolLastWritten != 0) {
          mr.LastWritten = VolLastWritten;
       }
+
+      /*
+       * Update to point to the last device used to write the Volume.
+       *   However, do so only if we are writing the tape, i.e.
+       *   the number of VolWrites has increased.
+       */
+      if (jcr->wstore && jcr->wstore->StorageId && sdmr.VolWrites > mr.VolWrites) {
+         mr.StorageId = jcr->wstore->StorageId;
+      }
+
       /* Copy updated values to original media record */
       mr.VolJobs      = sdmr.VolJobs;
       mr.VolFiles     = sdmr.VolFiles;
@@ -292,14 +303,6 @@ void catalog_request(JCR *jcr, BSOCK *bs)
       if (sdmr.VolWriteTime >= 0) {
          mr.VolWriteTime = sdmr.VolWriteTime;
       }
-      /*
-       * Update to point to the last device used to write the Volume.
-       *   However, do so only if we are writing the tape, i.e.
-       *   the number of VolBlocks has increased.
-       */
-      if (jcr->wstore && jcr->wstore->StorageId && mr.VolBlocks != sdmr.VolBlocks) {
-         mr.StorageId = jcr->wstore->StorageId;
-      }
 
       Dmsg2(400, "db_update_media_record. Stat=%s Vol=%s\n", mr.VolStatus, mr.VolumeName);
       /*