/*
Bacula® - The Network Backup Solution
- Copyright (C) 2001-2009 Free Software Foundation Europe e.V.
+ Copyright (C) 2001-2010 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.
* Kern Sibbald, March MMI
* added BB02 format October MMII
*
- * Version $Id$
- *
*/
if (!dir_create_jobmedia_record(dcr)) {
dev->dev_errno = EIO;
Jmsg2(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
- dcr->VolCatInfo.VolCatName, jcr->Job);
+ dcr->getVolCatName(), jcr->Job);
set_new_volume_parameters(dcr);
stat = false;
goto bail_out;
if (job_canceled(jcr)) {
return false;
}
+
ASSERT(block->binbuf == ((uint32_t) (block->bufp - block->buf)));
- ASSERT(dev->is_open());
+
+ wlen = block->binbuf;
+ if (wlen <= WRITE_BLKHDR_LENGTH) { /* Does block have data in it? */
+ Dmsg0(100, "return write_block_to_dev no data to write\n");
+ return true;
+ }
/* dump_block(block, "before write"); */
if (dev->at_weot()) {
Dmsg0(100, "return write_block_to_dev with ST_WEOT\n");
dev->dev_errno = ENOSPC;
- Jmsg0(jcr, M_FATAL, 0, _("Cannot write block. Device at EOM.\n"));
+ Jmsg1(jcr, M_FATAL, 0, _("Cannot write block. Device at EOM. dev=%s\n"), dev->print_name());
return false;
}
if (!dev->can_append()) {
dev->dev_errno = EIO;
- Jmsg(jcr, M_FATAL, 0, _("Attempt to write on read-only Volume.\n"));
+ Jmsg1(jcr, M_FATAL, 0, _("Attempt to write on read-only Volume. dev=%s\n"), dev->print_name());
return false;
}
- wlen = block->binbuf;
- if (wlen <= WRITE_BLKHDR_LENGTH) { /* Does block have data in it? */
- Dmsg0(100, "return write_block_to_dev no data to write\n");
- return true;
+
+ if (!dev->is_open()) {
+ Jmsg1(jcr, M_FATAL, 0, _("Attempt to write on closed device=%s\n"), dev->print_name());
+ return false;
}
/*
* Clear to the end of the buffer if it is not full,
}
if (dev->dev_errno == ENOSPC) {
Jmsg(jcr, M_INFO, 0, _("End of Volume \"%s\" at %u:%u on device %s. Write of %u bytes got %d.\n"),
- dev->VolCatInfo.VolCatName,
+ dev->getVolCatName(),
dev->file, dev->block_num, dev->print_name(), wlen, stat);
}
if (debug_level >= 100) {
Dmsg0(190, "Error from create JobMedia\n");
dev->dev_errno = EIO;
Jmsg2(dcr->jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
- dcr->VolCatInfo.VolCatName, dcr->jcr->Job);
+ dcr->getVolCatName(), dcr->jcr->Job);
ok = false;
}
dcr->block->write_failed = true;
Dmsg0(190, "Error from create_job_media.\n");
dev->dev_errno = EIO;
Jmsg2(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
- dcr->VolCatInfo.VolCatName, jcr->Job);
+ dcr->getVolCatName(), jcr->Job);
terminate_writing_volume(dcr);
dev->dev_errno = EIO;
return false;
Dmsg1(100, "Cannot get free space on the device ERR=%s.\n", dev->errmsg);
Jmsg(jcr, M_FATAL, 0, _("End of Volume \"%s\" at %u:%u on device %s "
"(part_size=%s, free_space=%s, free_space_errno=%d, errmsg=%s).\n"),
- dev->VolCatInfo.VolCatName,
+ dev->getVolCatName(),
dev->file, dev->block_num, dev->print_name(),
edit_uint64_with_commas(dev->part_size, ed1), edit_uint64_with_commas(dev->free_space, ed2),
dev->free_space_errno, dev->errmsg);
Dmsg0(100, "==== Just enough free space on the device to write the current part...\n");
Jmsg(jcr, M_INFO, 0, _("End of Volume \"%s\" at %u:%u on device %s "
"(part_size=%s, free_space=%s, free_space_errno=%d).\n"),
- dev->VolCatInfo.VolCatName,
+ dev->getVolCatName(),
dev->file, dev->block_num, dev->print_name(),
edit_uint64_with_commas(dev->part_size, ed1), edit_uint64_with_commas(dev->free_space, ed2),
dev->free_space_errno);