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 */
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;
}
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:
stat = autoload_device(dcr, 0, NULL);
if (stat > 0) {
try_autochanger = false;
- continue;
+ continue; /* try reading volume mounted */
}
}
*/
bool release_device(DCR *dcr)
{
+ bool ok = true;
JCR *jcr = dcr->jcr;
DEVICE *dev = dcr->dev;
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 */
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 */
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 */
unlock_device(dev);
free_dcr(dcr);
jcr->dcr = NULL;
- return true;
+ return ok;
}