X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fstored%2Fblock.c;h=8ebdaf7edff00a1cdec6593edb31949ce3aad031;hb=d6a1dde94e0ab1de2e40f5233e247f6bb0312761;hp=b407264dcd7239012c1db04fc2e27fa3b6c0d023;hpb=dd1681a2be75da5d6256cefc8d8ebdbf6c6afed9;p=bacula%2Fbacula diff --git a/bacula/src/stored/block.c b/bacula/src/stored/block.c index b407264dcd..8ebdaf7edf 100644 --- a/bacula/src/stored/block.c +++ b/bacula/src/stored/block.c @@ -9,19 +9,32 @@ * */ /* - Copyright (C) 2001-2006 Kern Sibbald + Bacula® - The Network Backup Solution - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - version 2 as amended with additional clauses defined in the - file LICENSE in the main source directory. + Copyright (C) 2001-2006 Free Software Foundation Europe e.V. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - the file LICENSE for additional details. + The main author of Bacula is Kern Sibbald, with contributions from + many others, a complete list can be found in the file AUTHORS. + This program is Free Software; you can redistribute it and/or + modify it under the terms of version two of the GNU General Public + License as published by the Free Software Foundation plus additions + that are listed in the file LICENSE. - */ + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. + + Bacula® is a registered trademark of John Walker. + The licensor of Bacula is the Free Software Foundation Europe + (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, + Switzerland, email:ftf@fsfeurope.org. +*/ #include "bacula.h" @@ -332,8 +345,8 @@ bool write_block_to_device(DCR *dcr) return stat; } - if (!dcr->dev_locked) { - lock_device(dev); + if (!dcr->dev_locked) { /* device already locked? */ + lock_device(dev); /* no, lock it */ } /* @@ -374,8 +387,8 @@ bool write_block_to_device(DCR *dcr) } bail_out: - if (!dcr->dev_locked) { - unlock_device(dev); + if (!dcr->dev_locked) { /* did we lock dev above? */ + unlock_device(dev); /* unlock it now */ } return stat; } @@ -630,7 +643,7 @@ static void reread_last_block(DCR *dcr) * then re-read it and verify that the block number is * correct. */ - if (dev->is_tape() && dev_cap(dev, CAP_BSR)) { + if (dev->is_tape() && dev->has_cap(CAP_BSR)) { /* Now back up over what we wrote and read the last block */ if (!dev->bsf(1)) { berrno be; @@ -749,7 +762,7 @@ static bool terminate_writing_volume(DCR *dcr) /* Set new file/block parameters for current dcr */ set_new_file_parameters(dcr); - if (ok && dev_cap(dev, CAP_TWOEOF) && !dev->weof(1)) { /* end the tape */ + if (ok && dev->has_cap(CAP_TWOEOF) && !dev->weof(1)) { /* end the tape */ dev->VolCatInfo.VolCatErrors++; /* This may not be fatal since we already wrote an EOF */ Jmsg(dcr->jcr, M_ERROR, 0, "%s", dev->errmsg); @@ -774,11 +787,11 @@ static bool do_new_file_bookkeeping(DCR *dcr) if (!dir_create_jobmedia_record(dcr)) { Dmsg0(190, "Error from create_job_media.\n"); dev->dev_errno = EIO; - Jmsg(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"), - dcr->VolCatInfo.VolCatName, jcr->Job); - terminate_writing_volume(dcr); - dev->dev_errno = EIO; - return false; + Jmsg(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"), + dcr->VolCatInfo.VolCatName, jcr->Job); + terminate_writing_volume(dcr); + dev->dev_errno = EIO; + return false; } dev->VolCatInfo.VolCatFiles = dev->file; if (!dir_update_volume_info(dcr, false)) { @@ -846,9 +859,7 @@ static bool do_dvd_size_checks(DCR *dcr) } } - if (!dev->is_freespace_ok()) { - update_free_space_dev(dev); - } + dev->update_freespace(); if (!dev->is_freespace_ok()) { /* Error while getting free space */ char ed1[50], ed2[50]; @@ -929,7 +940,7 @@ reread: return false; } -#define lots_of_debug +// #define lots_of_debug #ifdef lots_of_debug if (dev->at_eof() && dev->is_dvd()) { Dmsg1(100, "file_size=%u\n",(unsigned int)dev->file_size); @@ -1044,7 +1055,7 @@ reread: } } else { Dmsg0(200, "Seek to beginning of block for reread.\n"); - off_t pos = dev->lseek(dcr, (off_t)0, SEEK_CUR); /* get curr pos */ + boffset_t pos = dev->lseek(dcr, (boffset_t)0, SEEK_CUR); /* get curr pos */ pos -= block->read_len; dev->lseek(dcr, pos, SEEK_SET); dev->file_addr = pos; @@ -1080,7 +1091,7 @@ reread: dev->VolCatInfo.VolCatBytes += block->block_len; dev->VolCatInfo.VolCatBlocks++; if (dev->VolCatInfo.VolFirstWritten == 0) { - dev->VolCatInfo.VolFirstWritten = time(NULL); /* Set first written time */ + dev->VolCatInfo.VolFirstWritten = (utime_t)time(NULL); /* Set first written time */ } dev->EndBlock = dev->block_num; dev->EndFile = dev->file; @@ -1116,7 +1127,7 @@ reread: Dmsg0(200, "At end of read block\n"); if (block->read_len > block->block_len && !dev->is_tape()) { char ed1[50]; - off_t pos = dev->lseek(dcr, (off_t)0, SEEK_CUR); /* get curr pos */ + boffset_t pos = dev->lseek(dcr, (boffset_t)0, SEEK_CUR); /* get curr pos */ Dmsg1(200, "Current lseek pos=%s\n", edit_int64(pos, ed1)); pos -= (block->read_len - block->block_len); dev->lseek(dcr, pos, SEEK_SET);