]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/label.c
Apply patches from bugs #2325 and #2326 to fix FIFO bugs
[bacula/bacula] / bacula / src / stored / label.c
index f205dcd3cbee8131b60ce616582807a3ccd82c32..236cc70067618f58169f55a32e5c4f80cfc2b70e 100644 (file)
@@ -279,7 +279,9 @@ int DEVICE::read_dev_volume_label(DCR *dcr)
       goto bail_out;
    }
 
-   empty_block(block);
+   if (dcr->is_writing()) {
+       empty_block(block);
+   }
 
    Leave(dbglvl);
    return VOL_OK;
@@ -400,25 +402,27 @@ bool DEVICE::write_volume_label(DCR *dcr, const char *VolName,
       goto bail_out;
    }
 
-   /* Not aligned data */
-   if (dev->weof(dcr, 1)) {
-      dev->set_labeled();
-   }
+   if (!dev->is_aligned()) {
+      /* Not aligned data */
+      if (dev->weof(dcr, 1)) {
+         dev->set_labeled();
+      }
 
-   if (chk_dbglvl(100))  {
-      dev->dump_volume_label();
-   }
-   Dmsg0(50, "Call reserve_volume\n");
-   /**** ***FIXME*** if dev changes, dcr must be updated */
-   if (reserve_volume(dcr, VolName) == NULL) {
-      if (!dcr->jcr->errmsg[0]) {
-         Mmsg3(dcr->jcr->errmsg, _("Could not reserve volume %s on %s device %s\n"),
-              dev->VolHdr.VolumeName, dev->print_type(), dev->print_name());
+      if (chk_dbglvl(100))  {
+         dev->dump_volume_label();
       }
-      Dmsg1(50, "%s", dcr->jcr->errmsg);
-      goto bail_out;
+      Dmsg0(50, "Call reserve_volume\n");
+      /**** ***FIXME*** if dev changes, dcr must be updated */
+      if (reserve_volume(dcr, VolName) == NULL) {
+         if (!dcr->jcr->errmsg[0]) {
+            Mmsg3(dcr->jcr->errmsg, _("Could not reserve volume %s on %s device %s\n"),
+                 dev->VolHdr.VolumeName, dev->print_type(), dev->print_name());
+         }
+         Dmsg1(50, "%s", dcr->jcr->errmsg);
+         goto bail_out;
+      }
+      dev = dcr->dev;                 /* may have changed in reserve_volume */
    }
-   dev = dcr->dev;                    /* may have changed in reserve_volume */
    dev->clear_append();               /* remove append since this is PRE_LABEL */
    Leave(100);
    return true;