From: Kern S. <ke...@us...> - 2006-09-25 07:37:20
|
Update of /cvsroot/bacula/bacula/src/stored In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv14252/src/stored Modified Files: append.c dev.c dircmd.c label.c Log Message: kes Apply the recycle patch from Richard Mortimer. kes Convert a few if statements in dev.c to switch statements. kes Start using print_errmsg instead of bstrerror(). kes Print a job message in SD when a job is marked to be canceled. Index: append.c =================================================================== RCS file: /cvsroot/bacula/bacula/src/stored/append.c,v retrieving revision 1.73 retrieving revision 1.74 diff -u -d -r1.73 -r1.74 --- append.c 1 Sep 2006 11:56:23 -0000 1.73 +++ append.c 25 Sep 2006 07:37:18 -0000 1.74 @@ -205,8 +205,6 @@ if (!write_block_to_device(dcr)) { Dmsg2(90, "Got write_block_to_dev error on device %s. %s\n", dev->print_name(), dev->bstrerror()); - Jmsg2(jcr, M_FATAL, 0, _("Fatal append error on device %s: ERR=%s\n"), - dev->print_name(), dev->bstrerror()); ok = false; break; } Index: dircmd.c =================================================================== RCS file: /cvsroot/bacula/bacula/src/stored/dircmd.c,v retrieving revision 1.138 retrieving revision 1.139 diff -u -d -r1.138 -r1.139 --- dircmd.c 23 Sep 2006 17:13:27 -0000 1.138 +++ dircmd.c 25 Sep 2006 07:37:18 -0000 1.139 @@ -279,6 +279,7 @@ pthread_cond_broadcast(&jcr->read_dcr->dev->wait_next_vol); pthread_cond_broadcast(&wait_device_release); } + Jmsg(jcr, M_INFO, 0, _("Job marked to be canceled.\n")); bnet_fsend(dir, _("3000 Job %s marked to be canceled.\n"), jcr->Job); free_jcr(jcr); } Index: label.c =================================================================== RCS file: /cvsroot/bacula/bacula/src/stored/label.c,v retrieving revision 1.105 retrieving revision 1.106 diff -u -d -r1.105 -r1.106 --- label.c 23 Sep 2006 17:13:27 -0000 1.105 +++ label.c 25 Sep 2006 07:37:18 -0000 1.106 @@ -99,7 +99,7 @@ if (!dev->rewind(dcr)) { Mmsg(jcr->errmsg, _("Couldn't rewind device %s: ERR=%s\n"), - dev->print_name(), dev->bstrerror()); + dev->print_name(), dev->print_errmsg()); Dmsg1(30, "return VOL_NO_MEDIA: %s", jcr->errmsg); return VOL_NO_MEDIA; } @@ -138,14 +138,14 @@ if (!read_block_from_dev(dcr, NO_BLOCK_NUMBER_CHECK)) { Mmsg(jcr->errmsg, _("Requested Volume \"%s\" on %s is not a Bacula " "labeled Volume, because: ERR=%s"), NPRT(VolName), - dev->print_name(), dev->bstrerror()); + dev->print_name(), dev->print_errmsg()); Dmsg1(30, "%s", jcr->errmsg); } else if (!read_record_from_block(block, record)) { Mmsg(jcr->errmsg, _("Could not read Volume label from block.\n")); Dmsg1(30, "%s", jcr->errmsg); } else if (!unser_volume_label(dev, record)) { Mmsg(jcr->errmsg, _("Could not unserialize Volume label: ERR=%s\n"), - dev->bstrerror()); + dev->print_errmsg()); Dmsg1(30, "%s", jcr->errmsg); } else if (strcmp(dev->VolHdr.Id, BaculaId) != 0 && strcmp(dev->VolHdr.Id, OldBaculaId) != 0) { @@ -321,7 +321,7 @@ if (!dev->rewind(dcr)) { free_volume(dev); memset(&dev->VolHdr, 0, sizeof(dev->VolHdr)); - Dmsg2(30, "Bad status on %s from rewind: ERR=%s\n", dev->print_name(), dev->bstrerror()); + Dmsg2(30, "Bad status on %s from rewind: ERR=%s\n", dev->print_name(), dev->print_errmsg()); if (!forge_on) { goto bail_out; } @@ -350,7 +350,7 @@ /* Temporarily mark in append state to enable writing */ dev->set_append(); if (!write_record_to_block(dcr->block, dcr->rec)) { - Dmsg2(30, "Bad Label write on %s: ERR=%s\n", dev->print_name(), dev->bstrerror()); + Dmsg2(30, "Bad Label write on %s: ERR=%s\n", dev->print_name(), dev->print_errmsg()); goto bail_out; } else { Dmsg2(30, "Wrote label of %d bytes to %s\n", dcr->rec->data_len, dev->print_name()); @@ -358,7 +358,7 @@ Dmsg0(99, "Call write_block_to_dev()\n"); if (!write_block_to_dev(dcr)) { - Dmsg2(30, "Bad Label write on %s: ERR=%s\n", dev->print_name(), dev->bstrerror()); + Dmsg2(30, "Bad Label write on %s: ERR=%s\n", dev->print_name(), dev->print_errmsg()); goto bail_out; } @@ -366,7 +366,7 @@ if (dev->is_dvd() && dvdnow) { Dmsg1(150, "New VolName=%s\n", dev->VolCatInfo.VolCatName); if (!dvd_write_part(dcr)) { - Dmsg2(30, "Bad DVD write on %s: ERR=%s\n", dev->print_name(), dev->bstrerror()); + Dmsg2(30, "Bad DVD write on %s: ERR=%s\n", dev->print_name(), dev->print_errmsg()); goto bail_out; } } @@ -426,13 +426,19 @@ if (!dev_cap(dev, CAP_STREAM)) { if (!dev->rewind(dcr)) { Jmsg2(jcr, M_FATAL, 0, _("Rewind error on device %s: ERR=%s\n"), - dev->print_name(), dev->bstrerror()); + dev->print_name(), dev->print_errmsg()); return false; } if (recycle) { if (!dev->truncate(dcr)) { Jmsg2(jcr, M_FATAL, 0, _("Truncate error on device %s: ERR=%s\n"), - dev->print_name(), dev->bstrerror()); + dev->print_name(), dev->print_errmsg()); + return false; + } + if (dev->open(dcr, OPEN_READ_WRITE) < 0) { + Jmsg2(jcr, M_FATAL, 0, + _("Failed to re-open DVD after truncate on device %s: ERR=%s\n"), + dev->print_name(), dev->print_errmsg()); return false; } } @@ -455,11 +461,12 @@ Dmsg1(200, "Attempt to write to device fd=%d.\n", dev->fd); if (!write_block_to_dev(dcr)) { Jmsg2(jcr, M_ERROR, 0, _("Unable to write device %s: ERR=%s\n"), - dev->print_name(), dev->bstrerror()); + dev->print_name(), dev->print_errmsg()); Dmsg0(200, "===ERROR write block to dev\n"); return false; } } + dev->set_labeled(); /* Set or reset Volume statistics */ dev->VolCatInfo.VolCatJobs = 0; dev->VolCatInfo.VolCatFiles = 0; Index: dev.c =================================================================== RCS file: /cvsroot/bacula/bacula/src/stored/dev.c,v retrieving revision 1.194 retrieving revision 1.195 diff -u -d -r1.194 -r1.195 --- dev.c 23 Sep 2006 17:13:27 -0000 1.194 +++ dev.c 25 Sep 2006 07:37:18 -0000 1.195 @@ -1811,12 +1811,12 @@ off_t DEVICE::lseek(DCR *dcr, off_t offset, int whence) { - if (is_dvd()) { + switch (dev_type) { + case B_DVD_DEV: return lseek_dvd(dcr, offset, whence); - } - if (is_file()) { + case B_FILE_DEV: return ::lseek(fd, offset, whence); - } + } return -1; } @@ -1824,25 +1824,25 @@ bool DEVICE::truncate(DCR *dcr) /* We need the DCR for DVD-writing */ { Dmsg1(100, "truncate %s\n", print_name()); - if (is_tape()) { - return true; /* we don't really truncate tapes */ + switch (dev_type) { + case B_TAPE_DEV: /* maybe we should rewind and write and eof ???? */ - } - - if (is_dvd()) { + return true; /* we don't really truncate tapes */ + case B_DVD_DEV: return truncate_dvd(dcr); + case B_FILE_DEV: + /* ***FIXME*** we really need to unlink() the file so that + * its name can be changed for a relabel. + */ + if (ftruncate(fd, 0) != 0) { + berrno be; + Mmsg2(errmsg, _("Unable to truncate device %s. ERR=%s\n"), + print_name(), be.strerror()); + return false; + } + return true; } - - /* ***FIXME*** we really need to unlink() the file so that - * its name can be changed for a relabel. - */ - if (ftruncate(fd, 0) != 0) { - berrno be; - Mmsg2(errmsg, _("Unable to truncate device %s. ERR=%s\n"), - print_name(), be.strerror()); - return false; - } - return true; + return false; } /* Mount the device. |