]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix bug pointed out by Peter Much that causes the StorageId to
authorKern Sibbald <kern@sibbald.com>
Sat, 22 Mar 2008 09:34:45 +0000 (09:34 +0000)
committerKern Sibbald <kern@sibbald.com>
Sat, 22 Mar 2008 09:34:45 +0000 (09:34 +0000)
     be updated when reading a tape (during migration, it could have
     been incorrectly set to the write StorageId).

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@6664 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/dird/catreq.c

index 8fb433ab4382bf9d1fceb3e52c0bc4d9503a31f6..ee1d059c0643261d66a32ae4b8b9f6528202e8d4 100644 (file)
@@ -267,8 +267,10 @@ 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 */
+      /*
+       * Check if the volume has been written by the job, 
+       * and update the LastWritten field if needed.
+       */
       if (mr.VolBlocks != sdmr.VolBlocks && VolLastWritten != 0) {
          mr.LastWritten = VolLastWritten;
       }
@@ -286,7 +288,12 @@ void catalog_request(JCR *jcr, BSOCK *bs)
       mr.VolWriteTime = sdmr.VolWriteTime;
       mr.VolParts     = sdmr.VolParts;
       bstrncpy(mr.VolStatus, sdmr.VolStatus, sizeof(mr.VolStatus));
-      if (jcr->wstore && jcr->wstore->StorageId) {
+      /*
+       * 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;
       }