/*
Bacula® - The Network Backup Solution
- Copyright (C) 2001-2007 Free Software Foundation Europe e.V.
+ Copyright (C) 2001-2008 Free Software Foundation Europe e.V.
The main author of Bacula is Kern Sibbald, with contributions from
many others, a complete list can be found in the file AUTHORS.
if (dcr->NewVol) {
/* Note, setting a new volume also handles any pending new file */
set_new_volume_parameters(dcr);
- dcr->NewFile = false; /* this handled for new file too */
} else {
set_new_file_parameters(dcr);
}
dev->VolCatInfo.VolCatName,
dev->file, dev->block_num, dev->print_name(), wlen, stat);
}
- Dmsg7(100, "=== Write error. fd=%d size=%u rtn=%d dev_blk=%d blk_blk=%d errno=%d: ERR=%s\n",
- dev->fd(), wlen, stat, dev->block_num, block->BlockNumber,
- dev->dev_errno, strerror(dev->dev_errno));
+ if (debug_level >= 100) {
+ berrno be;
+ Dmsg7(100, "=== Write error. fd=%d size=%u rtn=%d dev_blk=%d blk_blk=%d errno=%d: ERR=%s\n",
+ dev->fd(), wlen, stat, dev->block_num, block->BlockNumber,
+ dev->dev_errno, be.bstrerror(dev->dev_errno));
+ }
ok = terminate_writing_volume(dcr);
if (!ok && !forge_on) {
#endif
}
+/*
+ * If this routine is called, we do our bookkeeping and
+ * then assure that the volume will not be written any
+ * more.
+ */
static bool terminate_writing_volume(DCR *dcr)
{
DEVICE *dev = dcr->dev;
dev->VolCatInfo.VolCatParts = dev->num_dvd_parts;
}
- if (!dir_update_volume_info(dcr, false)) {
+ if (!dir_update_volume_info(dcr, false, true)) {
ok = false;
}
Dmsg1(100, "dir_update_volume_info terminate writing -- %s\n", ok?"OK":"ERROR");
/* This may not be fatal since we already wrote an EOF */
Jmsg(dcr->jcr, M_ERROR, 0, "%s", dev->errmsg);
}
+
bail_out:
dev->set_ateot(); /* no more writing this tape */
- Dmsg1(100, "Leave terminate_writing_volume -- %s\n", ok?"OK":"ERROR");
+ Dmsg1(50, "*** Leave terminate_writing_volume -- %s\n", ok?"OK":"ERROR");
return ok;
}
return false;
}
dev->VolCatInfo.VolCatFiles = dev->file;
- if (!dir_update_volume_info(dcr, false)) {
+ if (!dir_update_volume_info(dcr, false, false)) {
Dmsg0(190, "Error from update_vol_info.\n");
terminate_writing_volume(dcr);
dev->dev_errno = EIO;
dev->VolCatInfo.VolCatParts = dev->num_dvd_parts;
- if (!dir_update_volume_info(dcr, false)) {
+ if (!dir_update_volume_info(dcr, false, false)) {
Dmsg0(190, "Error from update_vol_info.\n");
dev->dev_errno = EIO;
return false;
/* Continue here for successful read */
block->read_len = stat; /* save length read */
- if (dev->at_eof() && block->read_len == 80 &&
+ if (block->read_len == 80 &&
(dcr->VolCatInfo.LabelType != B_BACULA_LABEL ||
dcr->device->label_type != B_BACULA_LABEL)) {
/* ***FIXME*** should check label */