]> git.sur5r.net Git - bacula/bacula/commitdiff
kes Don't call close_part in label.c if tape and relabel.
authorKern Sibbald <kern@sibbald.com>
Sat, 21 Apr 2007 05:54:29 +0000 (05:54 +0000)
committerKern Sibbald <kern@sibbald.com>
Sat, 21 Apr 2007 05:54:29 +0000 (05:54 +0000)
kes  Don't free volume if busy in close() -- should help with
     bug 801.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@4576 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/kernstodo
bacula/src/stored/autochanger.c
bacula/src/stored/dev.c
bacula/src/stored/device.c
bacula/src/stored/label.c
bacula/src/stored/reserve.c
bacula/src/version.h
bacula/technotes-2.1

index 7426dc36a2d34d6ec7d343d0eab35d8aa054ca1e..b80dacf5b85950b7f76b9546cfcf79e4f9c16ea7 100644 (file)
@@ -43,6 +43,12 @@ Document:
  
 
 Priority:
+- the director seg faulted when I omitted the pool directive from a 
+job resource.  I was experimenting and thought it redundant that I had 
+specified Pool, Full Backup Pool. and Differential Backup Pool. but 
+apparently not.  This  happened when I removed the pool directive and 
+started the director.
+
 - On restore add Restore Client, Original Client.
 01-Apr 00:42 rufus-dir: Start Backup JobId 55, Job=kernsave.2007-04-01_00.42.48
 01-Apr 00:42 rufus-sd: Python SD JobStart: JobId=55 Client=Rufus
index be656ff3371d73fb1b226c3e6c56f8db4a5b8ada..dc6dae98c1a69a0b56149e4f6156773183fa175a 100644 (file)
@@ -1,15 +1,7 @@
-/*
- *
- *  Routines for handling the autochanger.
- *
- *   Kern Sibbald, August MMII
- *                            
- *   Version $Id$
- */
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2007 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.
 */
+/*
+ *
+ *  Routines for handling the autochanger.
+ *
+ *   Kern Sibbald, August MMII
+ *                            
+ *   Version $Id$
+ */
 
 #include "bacula.h"                   /* pull in global headers */
 #include "stored.h"                   /* pull in Storage Deamon headers */
index 445a43e65804aff4102cc65ca519745fdb7f2ecb..4c9e0d20c0780f9b6bac11901125e8b223e95bc9 100644 (file)
@@ -1849,7 +1849,10 @@ void DEVICE::clrerror(int func)
  */
 void DEVICE::clear_volhdr()
 {
-   free_volume(this);
+   /* If we have an unused volume associated with this drive, free it */
+   if (vol && !is_busy()) {
+      free_volume(this);
+   }
    Dmsg1(100, "Clear volhdr vol=%s\n", VolHdr.VolumeName);
    memset(&VolHdr, 0, sizeof(VolHdr));
 }
index 4ea7232d3972a8529b09bd9eaccecd7848c40352..b654f28cd528251282d8070999e6ec29b9397f7f 100644 (file)
@@ -431,11 +431,10 @@ void DEVICE::r_dlock()
  */
 void _block_device(const char *file, int line, DEVICE *dev, int state)
 {
-   Dmsg3(sd_dbglvl, "block set %d from %s:%d\n", state, file, line);
-
    ASSERT(dev->blocked() == BST_NOT_BLOCKED);
    dev->set_blocked(state);           /* make other threads wait */
    dev->no_wait_id = pthread_self();  /* allow us to continue */
+   Dmsg3(sd_dbglvl, "set blocked=%s from %s:%d\n", dev->print_blocked(), file, line);
 }
 
 /*
index 746516cce57f7a39cb4609029581f5c418f6dcf4..e7fb9ee89f2b1cf90e90988728dcd3d9b14d067b 100644 (file)
@@ -321,8 +321,8 @@ bool write_new_volume_label_to_dev(DCR *dcr, const char *VolName,
       goto bail_out;
    }
 
-   if (relabel) {
-      dev->close_part(dcr);              /* make sure closed for rename */
+   if (relabel && !dev->is_tape()) {
+      dev->close_part(dcr);              /* make sure DVD/file closed for rename */
    }
 
    /* Set the new filename for open, ... */
index 2b7797b80162038e3eea43cb88a6c43f844bcf0b..bea00ddda18e6b5d021b205c93bbd43afd14b7be 100644 (file)
@@ -279,7 +279,6 @@ VOLRES *reserve_volume(DCR *dcr, const char *VolumeName)
     *  when adding a new volume that no newly scheduled
     *  job can reserve it.
     */
-// lock_reservations();
    P(vol_list_lock);
    debug_list_volumes("begin reserve_volume", debug_nolock);
    /* 
@@ -350,7 +349,6 @@ VOLRES *reserve_volume(DCR *dcr, const char *VolumeName)
 get_out:
    debug_list_volumes("end new volume", debug_nolock);
    V(vol_list_lock);
-// unlock_reservations();
    return vol;
 }
 
index 49f70cc07b83ebedfb3bbef0cb26a641032323c3..d35b786d65ff405f018937507d7dcf6f145bb70f 100644 (file)
@@ -4,8 +4,8 @@
 
 #undef  VERSION
 #define VERSION "2.1.8"
-#define BDATE   "18 April 2007"
-#define LSMDATE "18Apr07"
+#define BDATE   "20 April 2007"
+#define LSMDATE "20Apr07"
 
 #define PROG_COPYRIGHT "Copyright (C) %d-2007 Free Software Foundation Europe e.V.\n"
 #define BYEAR "2007"       /* year for copyright messages in progs */
index 412bdf3983dd7400b8922bfa4f002716ee67b64c..ee036e88111d348d3a0883f2359d7c8bceb825d7 100644 (file)
@@ -2,6 +2,9 @@
 
 General:
 20Apr07
+kes  Don't call close_part in label.c if tape and relabel.
+kes  Don't free volume if busy in close() -- should help with
+     bug 801.
 ebl  Fix #824 RunScript bug (After script could be execute twice)
      Now, Before Script can use RunsOnSuccess and RunsOnFailure options
      By default (like before) RunsOnSuccess=true and RunsOnFailure=false