From 4e349e909603bb2193380f59879b14ef4f0ff358 Mon Sep 17 00:00:00 2001 From: Kern Sibbald Date: Mon, 7 Apr 2008 20:50:54 +0000 Subject: [PATCH] Apply Eric's suggested volume_unused patch git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@6754 91ce42f0-d328-0410-95d8-f526ca767f89 --- bacula/src/stored/acquire.c | 6 ++++-- bacula/src/stored/dev.h | 6 ++++-- bacula/src/version.h | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/bacula/src/stored/acquire.c b/bacula/src/stored/acquire.c index ae65592251..b930e64974 100644 --- a/bacula/src/stored/acquire.c +++ b/bacula/src/stored/acquire.c @@ -530,11 +530,13 @@ bool release_device(DCR *dcr) Jmsg(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"), dcr->VolCatInfo.VolCatName, jcr->Job); } - /* If no more writers, write an EOF */ + /* If no more writers, and no errors, and wrote something, write an EOF */ if (!dev->num_writers && dev->can_write() && dev->block_num > 0) { dev->weof(1); write_ansi_ibm_labels(dcr, ANSI_EOF_LABEL, dev->VolHdr.VolumeName); - volume_unused(dcr); + } + if (!dev->num_writers) { /* if no more writers */ + volume_unused(dcr); /* we obviously are not using the volume */ } if (!dev->at_weot()) { dev->VolCatInfo.VolCatFiles = dev->file; /* set number of files */ diff --git a/bacula/src/stored/dev.h b/bacula/src/stored/dev.h index 2e21e16f22..7162dde092 100644 --- a/bacula/src/stored/dev.h +++ b/bacula/src/stored/dev.h @@ -419,10 +419,13 @@ inline const char *DEVICE::print_name() const { return prt_name; } * DCRs open, each pointing to a different device. */ class DCR { +private: + bool m_dev_locked; /* set if dev already locked */ + public: dlink dev_link; /* link to attach to dev */ JCR *jcr; /* pointer to JCR */ - DEVICE *dev; /* pointer to device */ + DEVICE * volatile dev; /* pointer to device */ DEVRES *device; /* pointer to device resource */ DEV_BLOCK *block; /* pointer to block */ DEV_RECORD *rec; /* pointer to record */ @@ -432,7 +435,6 @@ public: bool spooling; /* set when actually spooling */ bool despooling; /* set when despooling */ bool despool_wait; /* waiting for despooling */ - bool m_dev_locked; /* set if dev already locked */ bool NewVol; /* set if new Volume mounted */ bool WroteVol; /* set if Volume written */ bool NewFile; /* set when EOF written */ diff --git a/bacula/src/version.h b/bacula/src/version.h index 8bc07f9ce5..58c829d608 100644 --- a/bacula/src/version.h +++ b/bacula/src/version.h @@ -4,8 +4,8 @@ #undef VERSION #define VERSION "2.3.16" -#define BDATE "06 April 2008" -#define LSMDATE "06Apr08" +#define BDATE "07 April 2008" +#define LSMDATE "07Apr08" #define PROG_COPYRIGHT "Copyright (C) %d-2008 Free Software Foundation Europe e.V.\n" #define BYEAR "2008" /* year for copyright messages in progs */ -- 2.39.5