update_db = save_update_db;
jr.PoolId = pr.PoolId;
-#ifdef xxx
- /* Set start positions into JCR */
- if (dev->is_tape()) {
- /*
- * Note, we have already advanced past current block,
- * so the correct number is block_num - 1
- */
- dcr->StartBlock = dev->block_num - 1;
- dcr->StartFile = dev->file;
- } else {
- dcr->StartBlock = (uint32_t)dev->file_addr;
- dcr->StartFile = (uint32_t)(dev->file_addr >> 32);
- }
-#endif
mjcr->start_time = jr.StartTime;
mjcr->JobLevel = jr.JobLevel;
/*
Bacula® - The Network Backup Solution
- Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+ Copyright (C) 2000-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.
/* Methods */
bool is_dev_locked() { return m_dev_locked; }
void dlock() { dev->dlock(); m_dev_locked = true; }
- void dunlock() { dev->dunlock(); m_dev_locked = false;}
+ void dunlock() { m_dev_locked = false; dev->dunlock(); }
void dblock(int why) { dev->dblock(why); }
};
return ok; /* device locked */
}
+void set_start_vol_position(DCR *dcr)
+{
+ DEVICE *dev = dcr->dev;
+ /* Set new start position */
+ if (dev->is_tape()) {
+ dcr->StartBlock = dev->block_num;
+ dcr->StartFile = dev->file;
+ } else {
+ dcr->StartBlock = (uint32_t)dev->file_addr;
+ dcr->StartFile = (uint32_t)(dev->file_addr >> 32);
+ }
+}
+
/*
* We have a new Volume mounted, so reset the Volume parameters
* concerning this job. The global changes were made earlier
void set_new_volume_parameters(DCR *dcr)
{
JCR *jcr = dcr->jcr;
- DEVICE *dev = dcr->dev;
if (dcr->NewVol && !dir_get_volume_info(dcr, GET_VOL_INFO_FOR_WRITE)) {
Jmsg1(jcr, M_ERROR, 0, "%s", jcr->errmsg);
}
- /* Set new start/end positions */
- if (dev->is_tape()) {
- dcr->StartBlock = dev->block_num;
- dcr->StartFile = dev->file;
- } else {
- dcr->StartBlock = (uint32_t)dev->file_addr;
- dcr->StartFile = (uint32_t)(dev->file_addr >> 32);
- }
- /* Reset indicies */
- dcr->VolFirstIndex = 0;
- dcr->VolLastIndex = 0;
+ set_new_file_parameters(dcr);
jcr->NumWriteVolumes++;
- dcr->NewVol = false;
- dcr->WroteVol = false;
}
/*
*/
void set_new_file_parameters(DCR *dcr)
{
- DEVICE *dev = dcr->dev;
+ set_start_vol_position(dcr);
- /* Set new start/end positions */
- if (dev->is_tape()) {
- dcr->StartBlock = dev->block_num;
- dcr->StartFile = dev->file;
- } else {
- dcr->StartBlock = (uint32_t)dev->file_addr;
- dcr->StartFile = (uint32_t)(dev->file_addr >> 32);
- }
/* Reset indicies */
dcr->VolFirstIndex = 0;
dcr->VolLastIndex = 0;
Dmsg1(130, "session_label record=%x\n", rec);
switch (label) {
case SOS_LABEL:
- if (dev->is_tape()) {
- dcr->StartBlock = dev->block_num;
- dcr->StartFile = dev->file;
- } else {
- dcr->StartBlock = (uint32_t)dev->file_addr;
- dcr->StartFile = (uint32_t)(dev->file_addr >> 32);
- }
+ set_start_vol_position(dcr);
break;
case EOS_LABEL:
if (dev->is_tape()) {
-/*
- * SD -- mac.c -- responsible for doing
- * migration, archive, and copy jobs.
- *
- * Kern Sibbald, January MMVI
- *
- * Version $Id$
- */
/*
Bacula® - The Network Backup Solution
- Copyright (C) 2006-2006 Free Software Foundation Europe e.V.
+ Copyright (C) 2006-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.
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
*/
+/*
+ * SD -- mac.c -- responsible for doing
+ * migration, archive, and copy jobs.
+ *
+ * Kern Sibbald, January MMVI
+ *
+ * Version $Id$
+ */
#include "bacula.h"
#include "stored.h"
jcr->dcr->VolFirstIndex = jcr->dcr->VolLastIndex = 0;
jcr->run_time = time(NULL);
+ set_start_vol_position(jcr->dcr);
ok = read_records(jcr->read_dcr, record_cb, mount_next_read_volume);
goto ok_out;
bool open_device(DCR *dcr);
bool first_open_device(DCR *dcr);
bool fixup_device_block_write_error(DCR *dcr);
+void set_start_vol_position(DCR *dcr);
void set_new_volume_parameters(DCR *dcr);
void set_new_file_parameters(DCR *dcr);
bool is_device_unmounted(DEVICE *dev);