]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/acquire.c
Change set_label() to set_labeled() -- a bit clearer
[bacula/bacula] / bacula / src / stored / acquire.c
index f8c9e1679daa523878184cf8702111178bea561f..8595dd5d4261aacba5dc9ca7c77e78bfb9db6d70 100644 (file)
@@ -227,7 +227,7 @@ DCR *acquire_device_for_read(JCR *jcr, DEVICE *dev)
    dev->num_parts = dcr->VolCatInfo.VolCatParts;
    
    for (i=0; i<5; i++) {
-      dev->clear_label();               /* force reread of label */
+      dev->clear_labeled();             /* force reread of label */
       if (job_canceled(jcr)) {
          Mmsg1(dev->errmsg, _("Job %d canceled.\n"), jcr->JobId);
         goto get_out;                /* error return */
@@ -251,7 +251,7 @@ DCR *acquire_device_for_read(JCR *jcr, DEVICE *dev)
               break;
            }
            
-            Jmsg(jcr, M_FATAL, 0, _("Open device %s volume %s failed, ERR=%s\n"),
+            Jmsg(jcr, M_FATAL, 0, _("Open device %s Volume \"%s\" failed: ERR=%s\n"),
                dev->print_name(), dcr->VolumeName, strerror_dev(dev));
            goto get_out;
         }
@@ -264,10 +264,6 @@ DCR *acquire_device_for_read(JCR *jcr, DEVICE *dev)
         vol_label_status = read_dev_volume_label(dcr);
       }
       
-      /****FIXME***** do not reread label if ioctl() says we are
-       *  correctly possitioned.  Possibly have way user can turn
-       *  this optimization (to be implemented) off.
-       */
       Dmsg0(200, "calling read-vol-label\n");
       switch (vol_label_status) {
       case VOL_OK:
@@ -309,7 +305,7 @@ default_path:
            stat = autoload_device(dcr, 0, NULL);
            if (stat > 0) {
               try_autochanger = false;
-              continue;
+              continue;              /* try reading volume mounted */
            }
         }
         
@@ -562,6 +558,7 @@ ok_out:
  */
 bool release_device(DCR *dcr)
 {
+   bool ok = true;
    JCR *jcr = dcr->jcr;
    DEVICE *dev = dcr->dev;
 
@@ -591,10 +588,12 @@ bool release_device(DCR *dcr)
         if (!dir_create_jobmedia_record(dcr)) {
             Jmsg(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
               dcr->VolCatInfo.VolCatName, jcr->Job);
+           ok = false;
         }
         /* If no more writers, write an EOF */
         if (!dev->num_writers && dev_can_write(dev)) {
            weof_dev(dev, 1);
+           write_ansi_ibm_labels(dcr, ANSI_EOF_LABEL, dev->VolHdr.VolName);
         }
         dev->VolCatInfo.VolCatFiles = dev->file;   /* set number of files */
         dev->VolCatInfo.VolCatJobs++;              /* increment number of jobs */
@@ -602,7 +601,6 @@ bool release_device(DCR *dcr)
          Dmsg0(100, "dir_update_vol_info. Release0\n");
         dir_update_volume_info(dcr, false); /* send Volume info to Director */
          Dmsg0(100, "==== write ansi eof label \n");
-        write_ansi_ibm_labels(dcr, ANSI_EOF_LABEL, dev->VolHdr.VolName);
       }
 
       /* If no writers, close if file or !CAP_ALWAYS_OPEN */
@@ -614,6 +612,7 @@ bool release_device(DCR *dcr)
       Jmsg2(jcr, M_FATAL, 0, _("BAD ERROR: release_device %s, Volume \"%s\" not in use.\n"),
            dev->print_name(), NPRT(dcr->VolumeName));
       Jmsg2(jcr, M_ERROR, 0, _("num_writers=%d state=%x\n"), dev->num_writers, dev->state);
+      ok = false;
    }
 
    /* Fire off Alert command and include any output */
@@ -645,5 +644,5 @@ bool release_device(DCR *dcr)
    unlock_device(dev);
    free_dcr(dcr);
    jcr->dcr = NULL;
-   return true;
+   return ok;
 }