From 41b94303db4ea18c7ee87ae6c2a03fc83e06affe Mon Sep 17 00:00:00 2001 From: Kern Sibbald Date: Sat, 1 Sep 2007 09:01:26 +0000 Subject: [PATCH] Implement savecwd.h and savecwd.c. Remove FSF versions. git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@5429 91ce42f0-d328-0410-95d8-f526ca767f89 --- bacula/src/findlib/Makefile.in | 6 +- bacula/src/findlib/find.h | 2 - bacula/src/findlib/makepath.c | 40 +- bacula/src/findlib/save-cwd.c | 142 --- bacula/src/findlib/savecwd.c | 130 +++ bacula/src/findlib/{save-cwd.h => savecwd.h} | 43 +- bacula/src/version.h | 8 +- bacula/technotes-2.1 | 1050 ------------------ bacula/technotes-2.3 | 3 + 9 files changed, 179 insertions(+), 1245 deletions(-) delete mode 100644 bacula/src/findlib/save-cwd.c create mode 100644 bacula/src/findlib/savecwd.c rename bacula/src/findlib/{save-cwd.h => savecwd.h} (63%) delete mode 100644 bacula/technotes-2.1 diff --git a/bacula/src/findlib/Makefile.in b/bacula/src/findlib/Makefile.in index d1e2950faa..89c6354c34 100644 --- a/bacula/src/findlib/Makefile.in +++ b/bacula/src/findlib/Makefile.in @@ -23,9 +23,11 @@ dummy: # LIBSRCS = find.c match.c find_one.c attribs.c create_file.c \ - bfile.c drivetype.c enable_priv.c fstype.c makepath.c save-cwd.c + bfile.c drivetype.c enable_priv.c fstype.c makepath.c \ + savecwd.c LIBOBJS = find.o match.o find_one.o attribs.o create_file.o \ - bfile.o drivetype.o enable_priv.o fstype.o makepath.o save-cwd.o + bfile.o drivetype.o enable_priv.o fstype.o makepath.o \ + savecwd.o .SUFFIXES: .c .o .PHONY: diff --git a/bacula/src/findlib/find.h b/bacula/src/findlib/find.h index da2cd97d16..cd6d8c543e 100644 --- a/bacula/src/findlib/find.h +++ b/bacula/src/findlib/find.h @@ -63,8 +63,6 @@ struct utimbuf { #include #endif -#include "save-cwd.h" - #ifndef HAVE_READDIR_R int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result); #endif diff --git a/bacula/src/findlib/makepath.c b/bacula/src/findlib/makepath.c index 87926a0055..24321ced55 100644 --- a/bacula/src/findlib/makepath.c +++ b/bacula/src/findlib/makepath.c @@ -25,7 +25,7 @@ #include "bacula.h" #include "jcr.h" -#include "save-cwd.h" +#include "savecwd.h" #if !defined(S_ISDIR) && defined(S_IFDIR) @@ -66,20 +66,6 @@ extern void strip_trailing_slashes(); -static int -cleanup(struct saved_cwd *cwd) -{ - if (cwd->do_chdir) { - int _fail = restore_cwd(cwd, NULL, NULL); - free_cwd(cwd); - if (_fail) { - return 1; - } - } - return 0; -} - - /* Attempt to create directory DIR (aka DIRPATH) with the specified MODE. If CREATED_DIR_P is non-NULL, set *CREATED_DIR_P to non-zero if this function creates DIR and to zero otherwise. Give a diagnostic and @@ -187,7 +173,7 @@ make_path( struct ptr_list *next; }; struct ptr_list *p, *leading_dirs = NULL; - struct saved_cwd cwd; + saveCWD cwd; char *basename_dir; char *dirpath; @@ -215,7 +201,6 @@ make_path( #if defined(HAVE_WIN32) /* chdir can fail if permissions are sufficiently restricted since I don't think backup/restore security rights affect ChangeWorkingDirectory */ - cwd.do_chdir = 0; /* Validate drive letter */ if (dirpath[1] == ':') { @@ -241,7 +226,7 @@ make_path( #else /* If we can record the current working directory, we may be able to do the chdir optimization. */ - cwd.do_chdir = !save_cwd(&cwd); + cwd.save(jcr); slash = dirpath; #endif @@ -249,8 +234,8 @@ make_path( /* If we've saved the cwd and DIRPATH is an absolute pathname, we must chdir to `/' in order to enable the chdir optimization. So if chdir ("/") fails, turn off the optimization. */ - if (cwd.do_chdir && isAbsolute(dirpath) && (chdir("/") < 0)) { - cwd.do_chdir = 0; + if (cwd.is_saved() && isAbsolute(dirpath) && (chdir("/") < 0)) { + cwd.release(); } /* Skip over leading slashes. */ @@ -270,7 +255,7 @@ make_path( /* If we're *not* doing chdir before each mkdir, then we have to refer to the target using the full (multi-component) directory name. */ - if (!cwd.do_chdir) { + if (!cwd.is_saved()) { basename_dir = dirpath; } @@ -278,7 +263,7 @@ make_path( fail = make_dir(jcr, basename_dir, dirpath, tmp_mode, &newly_created_dir); if (fail) { umask(oldmask); - cleanup(&cwd); + cwd.restore(jcr); return 1; } @@ -312,12 +297,13 @@ make_path( then we can use chdir to change into each directory before creating an entry in that directory. This avoids making stat and mkdir process O(n^2) file name components. */ - if (cwd.do_chdir && chdir(basename_dir) < 0) { + if (cwd.is_saved() && chdir(basename_dir) < 0) { berrno be; Jmsg(jcr, M_ERROR, 0, _("Cannot chdir to directory, %s: ERR=%s\n"), quote(dirpath), be.bstrerror()); umask(oldmask); - cleanup(&cwd); + + cwd.restore(jcr); return 1; } @@ -329,7 +315,7 @@ make_path( slash++; } /* end while (1) */ - if (!cwd.do_chdir) { + if (!cwd.is_saved()) { basename_dir = dirpath; } @@ -339,7 +325,7 @@ make_path( Dmsg1(300, "Create final component. mode=%o\n", mode); if (make_dir(jcr, basename_dir, dirpath, mode, NULL)) { umask(oldmask); - cleanup(&cwd); + cwd.restore(jcr); return 1; } @@ -373,7 +359,7 @@ make_path( quote(dirpath), be.bstrerror()); } - if (cleanup(&cwd)) { + if (!cwd.restore(jcr)) { return 1; } diff --git a/bacula/src/findlib/save-cwd.c b/bacula/src/findlib/save-cwd.c deleted file mode 100644 index 248f0ffccb..0000000000 --- a/bacula/src/findlib/save-cwd.c +++ /dev/null @@ -1,142 +0,0 @@ -/* save-cwd.c -- Save and restore current working directory. - - Copyright (C) 1995, 1997, 1998 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Written by Jim Meyering . */ - -#include "bacula.h" -#include "save-cwd.h" - - - -/* Record the location of the current working directory in CWD so that - the program may change to other directories and later use restore_cwd - to return to the recorded location. This function may allocate - space using malloc (via xgetcwd) or leave a file descriptor open; - use free_cwd to perform the necessary free or close. Upon failure, - no memory is allocated, any locally opened file descriptors are - closed; return non-zero -- in that case, free_cwd need not be - called, but doing so is ok. Otherwise, return zero. */ - -int -save_cwd(struct saved_cwd *cwd) -{ - static int have_working_fchdir = 1; - - cwd->desc = -1; - cwd->name = NULL; - - if (have_working_fchdir) { -#if HAVE_FCHDIR - cwd->desc = open(".", O_RDONLY); - if (cwd->desc < 0) { - berrno be; - Emsg1(M_ERROR, 0, _("Cannot open current directory: %s\n"), be.bstrerror()); - return 1; - } - -# if __sun__ || sun - /* On SunOS 4, fchdir returns EINVAL if accounting is enabled, - so we have to fall back to chdir. */ - if (fchdir(cwd->desc)) { - if (errno == EINVAL) { - close(cwd->desc); - cwd->desc = -1; - have_working_fchdir = 0; - } else { - berrno be; - Emsg1(M_ERROR, 0, _("Current directory: %s\n"), be.bstrerror()); - close(cwd->desc); - cwd->desc = -1; - return 1; - } - } -# endif /* __sun__ || sun */ -#else -# define fchdir(x) (abort (), 0) - have_working_fchdir = 0; -#endif - } - - if (!have_working_fchdir) { -#ifdef HAVE_WIN32 - POOLMEM *buf = get_memory(MAX_PATH); -#else - POOLMEM *buf = get_memory(5000); -#endif - cwd->name = (POOLMEM *)getcwd(buf, sizeof_pool_memory(buf)); - if (cwd->name == NULL) { - berrno be; - Emsg1(M_ERROR, 0, _("Cannot get current directory: %s\n"), be.bstrerror()); - free_pool_memory(buf); - return 1; - } - } - return 0; -} - -/* Change to recorded location, CWD, in directory hierarchy. - If "saved working directory", NULL)) - */ - -int -restore_cwd(const struct saved_cwd *cwd, const char *dest, const char *from) -{ - int fail = 0; - if (cwd->desc >= 0) { - if (fchdir(cwd->desc)) { - berrno be; - if (from) { - if (dest) { - Emsg3(M_ERROR, 0, _("Cannot return to %s from %s: %s\n"), - dest, from, be.bstrerror()); - } - else { - Emsg2(M_ERROR, 0, _("Cannot return to saved working directory from %s: %s\n"), - from, be.bstrerror()); - } - } - else { - if (dest) { - Emsg2(M_ERROR, 0, _("Cannot return to %s: %s\n"), - dest, be.bstrerror()); - } - else { - Emsg1(M_ERROR, 0, _("Cannot return to saved working directory: %s\n"), - be.bstrerror()); - } - } - fail = 1; - } - } else if (chdir(cwd->name) < 0) { - berrno be; - Emsg2(M_ERROR, 0, "%s: %s\n", cwd->name, be.bstrerror()); - fail = 1; - } - return fail; -} - -void -free_cwd(struct saved_cwd *cwd) -{ - if (cwd->desc >= 0) { - close(cwd->desc); - } - if (cwd->name) { - free_pool_memory(cwd->name); - } -} diff --git a/bacula/src/findlib/savecwd.c b/bacula/src/findlib/savecwd.c new file mode 100644 index 0000000000..6e8bab8672 --- /dev/null +++ b/bacula/src/findlib/savecwd.c @@ -0,0 +1,130 @@ +/* + Bacula® - The Network Backup Solution + + Copyright (C) 2007-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. + 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 and included + 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. +*/ + +/* + * Kern Sibbald, August MMVII + * + * Version $Id$ + */ + +#include "bacula.h" +#include "savecwd.h" + +/* + * Attempt to save the current working directory by various means so that + * we can optimize code by doing a cwd and then restore the cwd. + */ + +#ifdef HAVE_FCHDIR +static bool fchdir_failed = false; /* set if we get a fchdir failure */ +#else +static bool fchdir_failed = true; /* set if we get a fchdir failure */ +#endif + +/* + * Save current working directory. + * Returns: true if OK + * false if failed + */ +bool saveCWD::save(JCR *jcr) +{ + release(); /* clean up */ + if (!fchdir_failed) { + m_fd = open(".", O_RDONLY); + if (m_fd < 0) { + berrno be; + Jmsg1(jcr, M_ERROR, 0, _("Cannot open current directory: ERR=%s\n"), be.bstrerror()); + m_saved = false; + return false; + } + } + + if (fchdir_failed) { + POOLMEM *buf = get_memory(5000); + m_cwd = (POOLMEM *)getcwd(buf, sizeof_pool_memory(buf)); + if (m_cwd == NULL) { + berrno be; + Jmsg1(jcr, M_ERROR, 0, _("Cannot get current directory: ERR=%s\n"), be.bstrerror()); + free_pool_memory(buf); + m_saved = false; + return false; + } + } + m_saved = true; + return true; +} + +/* + * Restore previous working directory. + * Returns: true if OK + * false if failed + */ +bool saveCWD::restore(JCR *jcr) +{ + if (!m_saved) { + return true; + } + m_saved = false; + if (m_fd >= 0) { + if (fchdir(m_fd) != 0) { + berrno be; + Jmsg1(jcr, M_ERROR, 0, _("Cannot reset current directory: ERR=%s\n"), be.bstrerror()); + close(m_fd); + m_fd = -1; + fchdir_failed = true; + chdir("/"); /* punt */ + return false; + } + return true; + } + if (chdir(m_cwd) < 0) { + berrno be; + Jmsg1(jcr, M_ERROR, 0, _("Cannot reset current directory: ERR=%s\n"), be.bstrerror()); + chdir("/"); + free_pool_memory(m_cwd); + m_cwd = NULL; + return false; + } + return true; +} + +void saveCWD::release() +{ + if (!m_saved) { + return; + } + m_saved = false; + if (m_fd >= 0) { + close(m_fd); + m_fd = -1; + } + if (m_cwd) { + free_pool_memory(m_cwd); + m_cwd = NULL; + } +} diff --git a/bacula/src/findlib/save-cwd.h b/bacula/src/findlib/savecwd.h similarity index 63% rename from bacula/src/findlib/save-cwd.h rename to bacula/src/findlib/savecwd.h index ad2fc65735..46c94f3bf3 100644 --- a/bacula/src/findlib/save-cwd.h +++ b/bacula/src/findlib/savecwd.h @@ -1,7 +1,7 @@ /* Bacula® - The Network Backup Solution - Copyright (C) 2000-2006 Free Software Foundation Europe e.V. + Copyright (C) 2007-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. @@ -26,20 +26,27 @@ Switzerland, email:ftf@fsfeurope.org. */ - -#ifndef SAVE_CWD_H -# define SAVE_CWD_H 1 - -struct saved_cwd - { - int do_chdir; - int desc; - char *name; - }; - -int save_cwd(struct saved_cwd *cwd); -int restore_cwd(const struct saved_cwd *cwd, const char *dest, - const char *from); -void free_cwd(struct saved_cwd *cwd); - -#endif +/* + * Kern Sibbald, August MMVII + * + * Version $Id$ + */ + +#ifndef _SAVECWD_H +#define _SAVECWD_H 1 + +class saveCWD { + bool m_saved; /* set if we should do chdir i.e. save_cwd worked */ + int m_fd; /* fd of current dir before chdir */ + char *m_cwd; /* cwd before chdir if fd fchdir() works */ + +public: + saveCWD() { m_saved=false; m_fd=-1; m_cwd=NULL; }; + ~saveCWD() { release(); }; + bool save(JCR *jcr); + bool restore(JCR *jcr); + void release(); + bool is_saved() { return m_saved; }; +}; + +#endif /* _SAVECWD_H */ diff --git a/bacula/src/version.h b/bacula/src/version.h index 67388ea7a6..1b8864edec 100644 --- a/bacula/src/version.h +++ b/bacula/src/version.h @@ -3,9 +3,9 @@ */ #undef VERSION -#define VERSION "2.2.1" -#define BDATE "30 August 2007" -#define LSMDATE "30Aug07" +#define VERSION "2.3.2" +#define BDATE "01 September 2007" +#define LSMDATE "01Sep07" #define PROG_COPYRIGHT "Copyright (C) %d-2007 Free Software Foundation Europe e.V.\n" #define BYEAR "2007" /* year for copyright messages in progs */ @@ -46,7 +46,7 @@ #define TRACE_FILE 1 /* If this is set stdout will not be closed on startup */ -/* #define DEVELOPER 1 */ +#define DEVELOPER 1 /* * SMCHECK does orphaned buffer checking (memory leaks) diff --git a/bacula/technotes-2.1 b/bacula/technotes-2.1 deleted file mode 100644 index 00d106eee6..0000000000 --- a/bacula/technotes-2.1 +++ /dev/null @@ -1,1050 +0,0 @@ - Technical notes on version 2.3 - -General: -Release Version 2.2.1 -30Aug07 -kes Update POTFILES.in -kes Cleanup a few underquoted AC_DEFUNs in configure -kes Apply patch from Martin Simmons that adds a test for va_copy to - ./configure -29Aug07 -kes Fix bug #921 by increasing the number of tries to create a new volume - from 11 to 100. -kes Rework bmsg in ua_output to use va_copy() so that bvsnprintf() - can be called multiple times. Implement a version for machines - without va_copy() that gets a big buffer. -25Aug07 -kes Integrate more portable zone offset code into bsmtp.c - Submitted by Attila Fülöp. -24Aug07 -kes Fix bad SD->FD return status reported by - (James Harper) -ebl Fix a bug in read_close_session which return random status - thanks to James Harper -23Aug07 -kes Fix (hopefully) bug #930 by doing a db_escape_string() on file - and directory names during restore of single file/directories. -kes Add sanity checks to .sql command when string is empty. Hopefully - that will resolve Dirks Director crash. -22Aug07 -kes Apply patch submitted by Martin Simmons that corrects a seg fault - in the bsmtp chat subroutine when debug is >= 10. -21Aug07 -kes Fix Director crash when running bat SQL queries. -kes Add David's notes on Item 8: Copy pools. -18Aug07 -kes Rework projects file to be current and ready for a vote. -kes Enhance lex scanner error message. -17Aug07 -kes Tweak LICENSE file to mention BSD code. -kes Fix bat.pro.in so that it includes the OpenSSL libraries only - if specified on the ./configure. -kes Add first (not yet tested) cut of bcomm to the qt-console directory. - This class is intended to allow us to open a second bsock to the - Director while in the restore subdialog. -16Aug07 -kes Fix configure to create bat Makefile before creating dependencies. -kes Eliminate the egg files from the tray-monitor. Use gtk calls. -kes Add a tooltip to the tray monitor. -dvl Set the Director's PID file before dropping privs. This fixes - bug #923. -15Aug07 -kes Update AUTHORs file -kes Increase the default max concurrent jobs to 20 in FD and SD to - correspond with the default .conf files. -kes Rewrite the Win32 service routines. This eliminates the 3 copies - some different, of the same file created by RN when porting the - Win32 SD and Dir. -kes Rearrange some of the Win32 directories and the placement of the files - in them. -kes Set DEVELOPER flag in version.h - -======================================================================== -Release Version 2.2.0 -09Aug07 -kes Apply a second doc patch from Marc. -kes Apply a doc patch from Marc Schiffbauer that - improves the tips section that discusses how to setup multiple - simultaneous jobs. -08Aug07 -kes Update bat README file. -kes Apply patch from Allan Black that - corrects a typo in the Recycle status check in db_find_next_volume(). - This will probably fix a number of annoying problems with multiple - Recycled volumes. -kes Modify most of dird/msgchan.c to use bsock class calls rather than - bnet calls -- no functionality change. -07Aug07 -kes Modify the Verify output to specify if files are missing on - the Volume(s) or disk. Fixes confusion in bug #916. -kes When more than one Volume is read in a migration job, the last - Volume bytes reported are from the last read volume rather than - the last written volume. Fixed. This fixes bug #910. -kes Fix display of Recycle flag after update volume=foo recycle=yes. - It previously printed New Recyle flag is: no. This fixes bug - #917. -06Aug07 -kes Correct seg fault when switching tape drives during restore. -kes Commit uid_gid_name.c (replacement for idcache.c), but will not - be used until after 2.2.0 release. -04Aug07 -kes Remove fnmatch() in SD that permitted wild card specifications. - This fixes bug #914. -31Jul07 -kes Fix %g in filename returned by SQL for browse tree reported by - Dirk. -kes Fix configure so that it puts config.out in the cwd rather than - in src/qt-console -kes Attempt to fix the locking problem reported by Eric in bug #906. -kes Make berrno class to leave errno unchanged after constructor call. -kes Make bnet_server use the heap rather than the stack to allocate - its socket fd pointers to avoid a crash at termination. Problem - reported by Ryan Novosielski and bugs pointed out by Martin Simmons. -30Jul07 -kes Create new depkgs and depkgs-qt separating the qwt out of depkgs - and putting it in depkgs-qt along with Qt4.3. -29Jul07 -kes Rework code in acquire.c that switches drives for reading when - the Media Type does not match. This should fix bug #906 -28Jul07 -ebl Fix a director segfault during job setup #907 -kes Correct seg fault in postgresql when first operation returns no - rows. Fixes Dirks File browser problem seg fault with bat. -25Jul07 -kes Apply patch from Felix Schwarz that allows - building wxconsole on Fedora 7 with wxWidgets 2.8 (it works with - 2.6 as well). -24Jul07 -kes Implement PopUp YES/NO dialog for bat. -23Jul07 -ebl Fix a compilation bug when using #define BACL_WANT_NUMERIC_IDS -22Jul07 -kes Correct RunScript to terminate job in FD on failure. -kes Change abort_on_error and AbortJobOnError to fail_on_error - and FailJobOnError in RunScripts. -kes Minor tweaks of code formating in RunScripts, principally to - avoid depassing 80 columns. -21Jul07 -kes Eliminate one #ifdef Win32 in bsmtp -kes Implement grow tool to grow a file for testing very large databases. -kes Add big-vol-test to test Bacula seeking with > 5GB. -Release 2.1.28 beta -19Jul07 -kes Modify find_next_volume() to return all values in Media record. -kes Ensure that we keep Recycle Pool when moving Scratch volumes. - -Release 2.1.28 beta -18Jul07 -kes Update Release notes -17Jul07 -ebl fix a bug in get_scratch_volume() report by Andreas Helmcke - Warning, in previous beta version, all media get from scratch keep their - old retention. -16Jul07 -kes Tweaked Win32 installer to remove temp conf files at uninstall time. - This should fix bug #842. Made a note to look at removing the temp - files at the end of the install. -kes Add ability to mount and unmount a file device providing it is - marked as being removable and has the appropriate mount and unmount - commands defined in the Device resource. This fixes bug #830. -kes When applying a storage override, release all previous storage - definitions rather than just prepending the new storage. - This should prevent a good deal of confusion. -14Jul07 -kes Implement ./configure search for qwt libraries. -13Jul07 -kes Disable posting the WM_CLOSE message in KillRunningCopy of the - Win32 FD. This should fix bug #893. -kes Remove an unnecessary beep in Win32 init code. -kes Update copyright dates in Win32 executable about boxes. -kes Replace the FSF copyrighted getopt.c and getopt.h in the Win32 - code with a BSD getopt.c and getopt.h. -kes Remove sched.h from the Win32 compat directory -- not used. -kes Remove the Exit menu item from the Win32 tray monitor. If you really - need to shut it down, do it through the services panel or the command - line. -kes Remove some inappropriate Bacula FSFE copyrights. -ebl Tweak status client=xxx to be more easy to parse (more like in 2.0.x) -kes Fix regress config non-portable test as pointed out by - Florian Heigl -kes Fix PSCMD for HP-UX in configure.in to have proper syntax. - as pointed out by Florian Heigl -12Jul07 -kes Fix missing rctx. prefixes on the Darwin code in src/filed/restore.c - Reported by Frank Sweetser. - -Release 2.1.26 beta -12Jul07 -kes Fix client-only build. -kes Integrate client-only fixes for bsys (initgroups) and conio from - Sergey Svishchev for the AIX platform. -kes Make arguments to get_scratch_volume() in same order as other - such calls. -kes Rework the prune_volumes() subroutine so that after purging and - no volume found in desired pool, it will check for a scratch - volume. This prevents recycling the whole scratch pool. -kes Add code to status storage to print boffset_t (largefile support). -11Jul07 -kes Move qwt (Graphics libarary for Qt4) to depkgs. -kes You now need a --with-qwt= to be able to build bat. -kes Update src/win32/cats/bacula_cats.def to include the new - db_get_query_dbids() call on Win32. -07Jul07 -kes Correct a problem when selecting a scratch volume and moving - it to another pool that lost some columns. -kes Tweak some code in ua_update.c to use POOL_MEM instead of POOLMEM. -kes Enhance Autochanger error messages to include Volume and device name. -kes Rework prune_volumes() code to take account of InChanger flag, - and to handle recycling volumes going to the Scratch pool and - current pool because the RecyclePool directive. -kes Implement a better and more efficient db_get_query_dbids() to - handle creating and passing back a list of DBIds. - -Release 2.1.24 beta -03Jul07 -kes Start work on new more efficient DBId subroutine. First use - will be for recycling volume to Scratch inchanger. -kes Increase number of JobIds in pruning from 1000 to 10000. - This to be replaced by above routine. -kes Begin implementation of building Qt4 on Win32. -kes Correct typo in fix I added for bad TLS shutdown. -kes Pull 2.0.3 patches into patches directory. -kes Update Release notes. Include qt-console in line count. -kes Update Projects file. -30Jun07 -kes Integrate patch from Sergey Svishchev that fixes - bug in migration code where a job that spanned two volumes - was migrated twice. -29Jun07 -kes Implement new BST_DESPOOLING blocked state. Change from locking - during despooling in SD to blocking. This means that other threads - can work with the device structure, in particular the reservations - system while despooling. -28Jun07 -kes Fix return in reservation message queue that missed clearing - the jcr lock (implemented 26Jun07 below). -kes Rename a number of dev methods to make locking function names - a bit clearer. -kes Document locking in lock.c. Move lock structures to new file - lock.h. -26Jun07 -kes Move reservations message lock to lock jcr only this - fixes bug #861. -kes Move main SD locking code into lock.c (new file). -kes Update Win32 build to include lock.c - -Release 2.1.22 beta -26Jun07 -kes Dirk committed the qwt library code for drawing graphs in bat. -kes Tweak install of qwt so that it is integrated with ./configure. -25Jun07 -kes Fix HAVE_BATCH_INSERT to be HAVE_BATCH_FILE_INSERT, pointed - out by Eric (my typo). -ebl Fix configure.in to get batch mode enable -kes Return correct string from authenticate.cpp in bat when connecting - to Dir. -kes Apply patch suggested by Frank Sweetser to fix bug #888 -- - spurious line drops when using TLS. -kes Do not file reparse points when restoring a file that already - exists -- Win32. -24Jun07 -kes Implement Windows reparse points -- similar to directories, but - we do not descend into it. This is a first cut. They seem to - be backed up, but restore is not yet tested. -kes Remove restore_blocking in tls code when shutting a socket to leave - it in blocking mode. Hopefully this will fix the encryption bug - reported by Frank Sweetser. -kes When opening a file for backup, tell the OS that we are going to - read it sequentially -- optimization. -kes Change variable names in authenticate_director() to not conflict - with member names in bat. Caused great confusion with compiler, - but no warnings. -23Jun07 -kes Queue openssl error messages in case of comm problem. -kes Do shutdown() call if socket terminated. -kes Remove some duplicated code in tls.c -kes Move more of the bsock member variables into private and access - them with methods. -kes Add Frank Sweetser's tls-test to the regression suite. -22Jun07 -kes Add Swedish sv.po file -21Jun07 -kes Don't print clock skew message in FD if less than 3 seconds diff. -kes Add a bit of VSS info to status client. -kes Implement a first cut of Vista VSS, using Win2003 code. - -Release: 2.1.20 beta -20Jun07 -kes Fixed bug #886 (multidrive autochanger: SD doesn't use drive with - loaded tape but uses first drive). -kes Fixed bug #807 Restore encrypted backup failed on Windows 2003 - This was indeed a Win32 issue. -19Jun07 -kes Simplify search of autochanger for in-use Volume. -kes Fix exit condition of check for in-use volume. kes Remove - inappropriate my_postgresql_free_result() in db_close() - routine. -kes Fix bad return in FD when encryption signature not found. - Probably caused a crash. -kes Inhibit missing encryption signature error messages for - file types where no signature computed. -kes Correct inverted check on autochanger in reservation system. -kes Tweak debug code in autochanger reservation. -18Jun07 -kes Add some additional locking in the cats directory in subroutines - that modify packet variables called from batch insert. -kes Rework how dcrs are allocated. new_dcr() can now be called - with an existing pointer, and it will simply clean it up. - This allows the reservation system to test various different - devices, and will permit easy device changes. -kes A bunch of changes all over to handle new new_dcr() calling - sequence. -kes Work more on the Volume management in the SD. Remember Volumes - for tape drives and for autochangers (even virtual disk changers). -kes When looking at the Volume list to reserve a drive, handle - autochanger names correctly by interating through the changer - devices. Also call the Director to see if a Volume is suitable - for the current job. -kes Fix some bugs in bscan. Make sure all media records are written. - Make sure that valid JobMedia records are written for disk files. - Previously they were completely wrong. -kes Move source tar files for depkgs-mingw32 to www.bacula.org so - that the URLs don't change and so that the developers will all - work off the same copy. Rebuild from scrach. -kes Upgrade Win32 SQLite3 from 3.3.8 to 3.3.17. - -Release: 2.1.18 beta -16Jun07 -kes Fix seg fault in FD from incorrect digest size. -kes Fix argument to non-OpenSSL crypto.c subroutine. - -Release: 2.1.16 beta -16Jun07 -kes Remove a few malloc()s from the encryption code. -kes Use the class calls to bsock in filed/backup.c and restore.c in - place of the old bnet_xxx code. -kes Implement code that does an on the fly calculation of the - signing digest during restore of encrypted files. It makes - a best guess at the algorithm, and if it is not correct, will - then revert to the old code which reads the file after it is - restored. -kes Implement at least one missing crypto stream in stream_to_ascii() -kes Apply patch from William that fixes bug - #877 where a reload with bad syntax causes Dir to exit. - -Cut: 2.1.14 beta (not released) -14Jun07 -kes Do not free a volume on a tape drive until another volume is - mounted and read, or the autochanger unloads the volume. - This should help the SD re-use volumes that are already mounted, - and should fix bug #886. -kes Apply patch from user brettedgar that allows gnome2-console include - the OpenSSL libraries, and hence work with SSL. Fixes bug #885. -kes Apply patch from Lucien Weller that fixes day of week calculation - because of DST flag problem. Fixes bug #887. -10Jun07 -kes Move find_next_appendable_volume() to after acquiring a valid device - in reserve.c. This fixes bug #864 -- confirmed by reporter. -09Jun07 -kes Unable to reproduce bug 872. However added additional testing for - integer. -kes Bug #874 resolved by documenting SQLite limitations. -kes Bug #882 resolved by documenting mtx-changer script for new drive code. -kes Bug #881 resolved by removing typo in mtx-changer script. -kes Made Frank Sweetser's wiki the official Bacula wiki with his - approval. Added a link to the wiki on the web page, and implemented - a backup from http://paramount.ind.wpi.edu -08Jun07 -kes Fix update allfrompool to pass pool name. -07Jun07 -kes Convert to pure GPL v2 license. -kes Fix sscanf problems reported by Peter Buschman that caused - a bus error on Solaris. -kes Rework (simplify) the select prompt in bat. -kes Move get_jobid_from_tid() into lib and create a - get_jcr_from_tid(). -kes Use get_jcr_from_tid() to conver all tls Emsg() to Jmsg(). This - should definitely fix the problem of lost error messages in the - encryption code. -kes Remove over zellous addition of FSFE copyright in a few eggxxx files. -kes Eliminate tcpd.h from the project. Enclose the #include from the - library with extern C ... -kes Add print of signal name when a signal is trapped. - -Release: 2.1.12 beta -04Jun07 -kes Fix a seg fault in the PostgreSQL driver dereferencing a NULL pointer. -03Jun07 -kes Implement SQLITE3_INIT_QUERY in version.h that can do an initial - query for SQLite3. Use it to set PRAGMA synchronous = OFF. This - makes SQLit3 run 30 times faster, though a bit less safe. -kes Implement --with-batch-insert in configure and detection of thread - safe libraries. It is on by default, but turned off if no thread - safe library (e.g. SQLite 2) is available. -02Jun07 -kes Fix Bacula PostgreSQL buffer overruns. -kes Do better checking for NULL results returned from PostgreSQL; - implement retry for failed queries; clear results buffer after - failed query. Hopefully this will correct the PostgreSQL failures. -01Jun07 -kes Implement algorithm to handle only one appendable volume with - Prefer Mounted Volumes = no. -kes Fix a Bacula PostgreSQL bug dereferencing a NULL pointer - returned from a query. -kes Make volume lock recursive. -kes Implement an additional volume reservation algorithm that - starts by considering all reserved volumes then uses the - old brute force algorithm of searching the resources to - find a suitable device. -kes Add new reservations debug code and refine the old code. -kes Update the win32/dll/bacula.defs file. -29May07 -kes Tweak reservations algorithm to permit a few more cases, i.e. - volume reserved, but on different drive, ... -kes Enhance SD status to include Pool and Media Type for drive in a - more readable format (a bit longer). -kes Fix PostgreSQL double free. -28May07 -kes Minor refactoring of restore decryption code. -kes Add code to smartall.c to detect double free of a buffer. -27May07 -kes Add < > around %r in from field on mail command of bacula-dir.conf.in - so that bsmtp will create a correct email address (mailbox only). -kes Modify 'memory' command so that the buffers are listed as 'In use' - to avoid confusion with Orphaned buffers. -kes I reworked the OpenSSL include/lib flags to be handled in - the standard Bacula way, which should fix bug #863 concerning - non-standard OpenSSL libraries. -26May07 -kes Implement Help Browser window for bat. -kes Fix reload bug that reset StorageId to zero. -25May07 -kes Fix TLS #ifdefing when TLS turned off. -kes Ensure that when labelling a tape with Slot=0 that InChanger - is not set. -kes Use DISTINCT to make MySQL and PostgreSQL uar_list_temp query - the same. -kes Add StartTime to final uar_sel_jobid_temp query so that we can - add DISTINCT (required by PostgreSQL). -kes Implement BSOCK authenticate_director() method. Eventually will - authenicate all daemons. -kes Move several more functions into the BSOCK class. -24May07 -kes Add code to tell the OS that we no longer need a cached - file that we were reading. In findlib/bfile.c. Also, - only cache files that we are reading. Thanks to - Tobias Oetiker for the idea. -kes Tweak to bsmtp to eliminate compiler warnings on Win32. -kes Implement script to automatically generate cats and dll .def - files for Win32 dll. -kes Update README.mingw32 to include new .def file generation. -kes Correct typo in UTF-8 error message as reported by: - jhernandez -kes Add additional sm_check() code on debug level 1. -kes Set default debug level to 1. -kes Trap SIGABRT in attempt to get traceback. -23May07 -kes Reduce bat connect timeout from 30 to 15 seconds. -kes More restructuring and implementing BSOCK class in place of - old bnet.c code. -kes Remove a few unnecessary malloc() tests in crypto code. -kes Turn off crypto calls for > 128 bits in crypto.c if HAVE_SHA2 - not defined. Bug reported by Allan Black -kes Remove duplicate HAVE_CRYPTO definition in config.h.in -22May07 -kes Fix Verify InitCatalog mysql_escape_string() trashing memory. - Make buffer bigger. -kes Fix Verify InitCatalog. The attributes were not pointing to the - correct saved location. -kes Implement message callback so that GUI is sure to get all - daemon messages. Currently displayed in a dialog in bat. -kes Ignore SIGUSR2 (Bacula timer) in bat. -kes Apply regress patch from bug #859 to allow regress to work - with Solaris compiler. -21May07 -kes Begin adding TLS support to bat. -kes Apply UTF-8/16 patch from Yves Orton to - clean up lex.c and make it more readable. -20May07 -kes Move more bnet functions into the BSOCK class. -kes Fix tray-monitor by not requiring a timer interval in bnet_connect() -kes Complete change of berrno strerror() method to bstrerror() - -Release: 2.1.10 beta -18May07 -kes Cleanup incorrect email addresses in bsmtp. -kes Make bat display initial messages rather than discard them. -16May07 -kes First cut of adding .mod to the run command. -kes Implement auto display of messages in bat. -kes Enhanced preferences to allow all Bacula output to be - displayed in bat. -15May07 -kes Try to make bsmtp date routines more generic. -kes Fixed bug #856 autochanger documentation. -kes Rework bsmtp date editing for Win32. This fixes bug #854. -kes Add new cats entry point so Win32 builds. -14May07 -kes Attempt to fix bsmtp date editing on OSes without %z editing. - Fixes bug #854. -kes Do better checking for the MySQL 64 bit libraries looking for both - .a and .so libraries. -kes Add a kludge for Ubuntu's non-standard locations for MySQL -- allow - /usr/include/mysql/mysql.h AND /usr/lib/... rather than /usr/lib/mysql/... -kes Require the thread safe version of MySQL during configure. Thanks - to Andre Noll for pointing this out. -kes Ensure that calls to find_jobids_from_mediaid_list() check count before - continuing in migration code. -kes Apply implementation of tray-monitor font derived from gnome-console - submitted by Andreas Piesk -13May07 -kes Eliminate important memory loss in SQLite -kes Fixed the batch insert MySQL thread specific data that was not - being freed. See cats/mysql.c:db_thread_cleanup(). -kes Fix restore before command. -kes Convert old hdr.name to name() in a few places. -kes Implement update jobid command. -kes Return all time_t dates in db_get_job_record() -kes Stop watchdog in SD earlier. -kes Put Pool just after Storage in please mount message. -kes Fix pointer usage bugs in Verify InitCatalog pointed out by - Eric. -12May07 -kes Update the po files. -kes Fix Verify InitCatalog by making it cache attributes. -11May07 -kes Change name bacula-bat to bat for man 1 page to correspond to - Makefile. -kes Check for client and store NULL pointers in status command. This - fixes bug #845. -kes Fix non-ssl build so that it works (add JCR *jcr to crypto structures). -kes Fix sign extended editing of %p. -kes Clean out a little old #ifdefing in cats/mysql.c -10May07 -kes If time diff between DIR and FD is more than 600 seconds convert - INFO message to WARNING. -kes Implement heap size display in status for all daemons. -kes Attempt to fix MySQL db open memory loss (not successfull). -kes Don't set SIGKILL and SIGSTOP neither can be trapped. -kes Eliminate memory loss in MySQL (possibly other SQLs) during - Query. This looks like a MySQL but but by doing extra releases, - the memory goes away. This should fix bug #847. -09May07 -kes When backup fails, cancel SD before waiting for sd termination. -kes If SD is waiting for FD to connect during cancel, wake up the - thread. -kes Fix fsf code so that errno is correctly reported. -kes Apply migration patch (with changes) from Sergey Svishchev -08May07 -kes Make lack of Pool directive in Job an ERROR_TERM rather than FATAL - so that Bacula doesn't later stumble into a seg fault. -kes Use the term Restore Client in the restore Job report. -kes Merge patch from Sergey Svishchev that preserves - the original job's FileSetId. -kes Merge patch from Sergey Svishchev that implements - spooling in migration jobs. Not yet tested. -kes Merge patch from Jorj Bauer that implements - reading conf file from a pipe. However, do it with open_bpipe() - rather than popen. Not yet tested. -07May07 -kes Fix an ugly bug where the VolCatBytes were getting updated - during a restore. -kes Implement bconsole memory command that prints current memory - usage, plus smartalloc dump. -kes Clarify some error messages in backup, admin, and migrate. -kes Shrink label dialog to smaller size. -kes Invert Cancel OK buttons on restore to be OK Cancel. -kes More strerror() to bstrerror() conversions. -06May07 -kes Start implementing bstrerror() in place of strerror(). -kes Stripping path -- seems to work. -04May07 -kes Prevent door and port files from being restored (mostly - Solaris stuff). -kes Free an unreleased buffer in compat code. -kes Change console Job name from *Console* to -Console- to eliminate - Win32 filename problems. Put Win32 path separator when creating - Console file. This fixes bug #846. -kes Change berrno::strerror() to berrno::bstrerror(). Not yet full - implemented. -kes Pass jcr to crypt_sign_decode because it creates a new SIGNATURE - structure. -kes Define b_errno_win32 on Linux to be zero so that it can be or'ed in - to force Win32 error message. -03May07 -kes First cut strip path. The data should be passed to the FD, - but nothing is done with it yet. -kes Enhance the digest and signature routines in the crypto - library to accept a JCR and to use it to print error messages - so that they will go in the Job report rather than the daemon's - messages. -kes Simplify some of the verify signature code. -kes Simplify a few of the alternative returns in the signature - code. -02May07 -ebl Use only POSIX regex instead of GNU regex in breg.c for - File relocation. It fix broken freebsd compilation. -kes Convert all other Dir files to use new ua class message - routines for bat. -kes Tentative fix for missing digest signature in bug 807. -kes Correct handle problem in new win32_ftruncate routine. -kes Convert ua_purge.c and ua_update.c to use new ua class - message routines for bat. -29Apr07 -kes Correct incorrect installation of LICENSE in Win32 installer. -kes Display LICENSE at the beginning of the Win32 install. -kes Attempt to correct the need for the png files to be installed - for bat. -kes Reapply my bat.conf install script in qt-console. I think I - editted bat.pro instead of bat.pro.in and it was lost. -kes Apply CentOS patches someone sent me. Checks for /var/run/subsys, - the /var/lock/subsys for subsysdir. Also corrects typos in the - doc. -28Apr07 -kes First cut update job. -kes Correct configure to include qmake of src/qt-console directory. -26Apr07 -kes Make restore job yes/mod/no print in one command so GUI works. -kes First cut implementing backup and restore client. -kes Correct editing in Verify output that caused a seg fault. -25Apr07 -kes Insure that bat.conf is not overwritten during installation. -kes Fix important bug in db_sql_query() in mysql.c. It was introduced - while I was implementing migration in March 2006 ! -24Apr07 -ebl Cleanup file relocation, using char *RegexWhere instead of - char *where + bool where_use_regexp -kes Update some manpages and add bat manpage. -kes Make a first cut at converting bacula.spec.in for bwx-console - and bgnome-console. -kes Apply patch from John Goerzen to add hostname as fourth argument - to make_catalog_backup script. -kes Fix typos I introduced into bsmtp.c -kes Make pm_strxxx() routines handle input of NULL pointer. This - is to protect from NULL pointers returned from SQL databases. -kes Correct typo in bacula-sd manpage as pointed out by John Goerzen. -kes Add more debug to FIFO code -- fix fifo regression test. -23Apr07 -kes Implement posix_fadvise in FD, and for reading spool files in SD. -kes Add thread timer to bnet_connect() to break from OS if wait time - expires. -22Apr07 -kes Update Win32 build to include new files, new symbols, and - renamed files. -kes Implement socket level heartbeat (tcp_keepidle) -ebl Commit File relocation patch -kes Make bat have 'make install' target. -kes Warn during install if old gnome-console binary found. -kes Warn during install if old wx-console binary found. -kes Add -8 option to bsmtp command line to add content type utf-8. - Fixes bug #809. (Character coding problem in bsmtp). -kes If < is found in target (from, to, cc) then do not enclose the - target in < > in bsmtp. Fixes bug #772 (malformed address). -kes When printing certain items in dbcheck, stop after 300000. - Fixes bug #822. (dbcheck loops). -kes Incorrect status in Dir after waiting for mount with poll set. - Fixes bug #825. -21Apr07 -kes Extend idea of Prefer Mounted Volumes to mean a volume about - to be mounted. -kes Print waiting to reserve a device every 5 mins. -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 - Add a regression script to test RunScript -19Apr07 -kes Correct usage of MTIOCLRERR ioctl for clearing persistant errors - on Solaris. -18Apr07 -kes The bgnome-console (gnome-console) and bwx-console (wx-console) are - deprecated. No additional bugs will be fixed, and they will be dropped - in a future release (probably 2.4.0). -kes Change name of wx-console to bwx-console to make it more Bacula - unique. -kes Change the name of gnome-console to bgnome-console to make it - more Bacula unique. -14Apr07 -kes Some time in March, a Feature Request with patch from Jorj Bauer - was committed by Landon (with my approval). - It implements: - The ability for the director to validate a Client (FD) CN against - an arbitrary set of patterns rather than the hostname, with - A new 'TLS Allowed CN' set of directives which are implemented - in the Client resource. Then pattern matching is used in place - of hostname matching against the Certificate's CN. As an example, we - have certificates which (a) use a local CA, and (b) have a CN of the - form client_123. -kes Add new/changed entry points to Win32 build -kes Create unaccepted-projects for projects that are not accepted. -kes Simplify locking in the reservations system. -kes Add more debug code in reservations. -kes Make sure error condition on reserving a volume is handled correctly. -kes Correct handling of volume_in_use. -kes Correct handling of initializing a device. -kes Move handling of broadcasting releasing a device into release_device(). -kes Correct attaching dcr to dev so that it is only done if device - is properly initiated. -12Apr07 -kes Locking debug level tweaks in SD. -kes Tweak new Volume code. -11Apr07 -kes Add exec external-command [wait-seconds] to bconsole. This - executes the external-command. Note! normally external-command - should be enclosed in double quotes. -kes Turn the .die command on only if DEVELOPER is defined -- i.e. - it should normally be off in a production system. -10Apr07 -kes Implement die command for SD so that we can force it to dump. -kes Implement SD lock debug code. -kes Implement new algorithm for keeping Volume list in SD. It - is now owned by the device. -04Apr07 -kes Implement new code for freeing in use volumes that should - resolve if not all, some of the problems of multiple drive - tape conflicts described in bug 801. -03Apr07 -kes Fix gui/bacula-web/images files in svn. -kes Turn on FreeBSD/OpenBSD code to set EOT model on tape. -02Apr07 -ebl Fix a bug in batch mode (in string escape) -kes Correct migration prune SQL typo that crept in in a - recent 2.1.x change. -01Apr07 -kes Move bnet_despool() into class in bsock.c -kes Modify job report to include director name and Build OS. -kes Move drop root privilege and check_catalog() before fork. -kes Add update database scripts (version 9 to 10) to updatedb directory. -31Mar07 -ebl Check size and age of each file after its backup to see if - it has changed during backup, if 'checkfilechanges' is set. - The FD will do an extra check (stat(2)) after - each file backup. mtime, ctime and size are compared with - 'before backup' information. If time or size mismatch, an - error message will be generated. You must upgrade FD to use it. -30Mar07 -kes Make database name and user configurable - --with-db-name=xxx --with-db-user=xxx -kes Add back database type to message.c for debugging. -29Mar07 -kes Implement dir_sql() which issues an SQL query. -kes Modify bat medialist to use dir_sql() and do some minor C++ - formatting as well as eliminating a number of pointers, simplifing - the code. -28Mar07 -kes Fix some of the mtx-changer grep commands for tape label readers. -kes Convert a number of bsendmsg into the appropriate send/warning/error - message class calls. -kes Suppress the using database message in the .sql command. -kes Correct an incorrect bnet_tls_client prototype -- patch from Martin. -27Mar07 -kes Add context menu for floating a window. -kes Some minor cleanup and name changes in qt-console -kes Add doing mt setblk 0 in Win32 mtx-changer. -kes Apply Martin's bug fix to move definition of ENODATA for - FreeBSD to bsock.c -ebl Add a BUSY handler to sqlite to be able to use multi_db = 1 with - sqlite2 and sqlite3. -26Mar07 -kes More pruning cleanup. -kes Turn on wait_for_drive by default in mtx-changer. -kes Turn on Batch insert code by default as it now passes regression. -kes Add ./configure --enable-bat to enable building of Bat. - No install yet though. -25Mar07 -kes Implement a new .sql command for bat. -kes Implement code to turn off pruning in obtaining the next volume. - Pruning is turned off for the status dir command, but turned on - for SD requests and for the list nextvolume command. -24Mar07 -kes Correct Qmsg() that was not updated correctly when committing a - previous change (probably the recent TLS patch). -23Mar07 -kes Write new subroutine is_volume_purged() that explicitly checks - if the Volume is purged, and if so marks it as such. This should - resolve problems reported about needing to mount twice to recycle - volumes. -kes Rewrite pruning algorithm to do more work in the SQL engine, and - to pass a list of JobIds to be deleted to SQL. Also, minimize the - amount of duplicated code. -kes Do volume pruning only for the Media Type desired (reduces pruning time - if multiple Media Types are in the same pool). -kes Implement more detailed info in the Job report for the Bacula version - and architecture. -kes Switch from POOLMEM to POOL_MEM (a real class) in ua_prune.c and - ua_purge.c. -ebl Add bbatch tool to bench database and insert mode. - Fix sql quote stuff in batch mode - Fix sql stuff for mysql -22Mar07 -kes Correct problems with am/pm scheduling. Fixes bug #808. -kes Implement new prunning code that prunes up to 1000 jobs at - the same time. The same technique can be applied to a number - of other prune/purge subroutines. -kes Add an insanity check when starting a new tape job to ensure - that the tape position has not been changed. If so fail the - job. -kes Fix Win32 build for dlls to add the folllowing: - src/lib/bsock.c -- new file with new entry points - src/lib/dlist.c -- new entry points - src/cats/sql_create.c -- new entry point - src/cats/sql_cmds.c -- new DATA item exported -21Mar07 -ebl batch mode cleanup bscan-test is ok now. -kes Implement SD code to check length of disk volume before appending. -18Mar07 -kes Correct return status on db_batch... routines. -kes Add call to db_write_batch_file_records() to migration code. -ebl Fix AfterJob timing -kes Move the checking of the database in initializion of the Director - to after we drop privileges. This avoids the need for both root - and bacula access to the DB. -kes Correct a misplaced variable definition in src/filed/backup.c -kes Correct how the new batch insert db_create_attributes_record() - uses the arguments. Caused a seg fault in bscan. -kes Implement lock() and unlock() methods in DEVICE class. - Implement block() and set_block(xx) methods in DEVICE class. -kes Modify bnet_connect() so that it uses time() to check for the - wait time expiring (on some OSes, some system calls may not - return immediately). -kes Modify Verify to obtain the previous JobId when it is actually - running rather than at schedule time (as it was in 1.38.x). -kes Fix src/job.c to handle MaxWaitTime correctly. This should - fix bug #802. -kes When checking pid in pid file, continue running if the pid is - the same as ours. This occurs on IRIX after a system crash. - Fixes bug #797. -10Mar07 -kes Extend new GUI API. -kes Make the ua structure a class, and implement send_msg(), - error_msg(), warning_msg(), and info_msg(). -08Mar07 -kes Apply fix from for building wx-console on the Mac from - bug #798. -kes Implement new select mechanism for GUI programs. -kes Reorganize initialization of stackedWidgets in bat. -07Mar07 -kes Add updated nagios plugin supplied by Christian Masopust. -05Mar07 -kes More bat implementation. -kes File migrate bug with Pool Occupancy using mediaid instead - of jobids. Fixes bug #795. -kes Fix orphaned buffers in filed backup and verify due to - crypto buffers not freed during errors. Fixes bug #789. -kes Extend new GUI api code to tree commands. -kes Ensure that tree and dot commands check console ACLs. -kes Permit marking directory with trailing slash. -kes Allow 20 console connections (instead of only 10). -04Mar07 -kes Add smartctl call to bacula-sd.conf as an example of getting - tape alert info. -02Mar07 -kes Modify jobq.c to let simultaneous restore jobs run. This may - cause them to fail if they cannot get a drive. -kes Add Client Connect Wait to Storage daemon to permit users to - modify the time the SD waits for a FD connection. -29Feb07 -kes Correct virtual changer check which was backwards. This caused - volumes to be unloaded into slots already occupied. -28Feb07 -kes Apply Command ACL filter to JobId list in restore command. -kes Correct typeo in var.c patch. -27Feb07 -kes Don't let Bacula prune File or Job records for the current Job. -kes Fix variable substitution pad + inc bug reported (with patch) - in bug #791. -26Feb07 -kes Correct SQLite log table index as reported by Luca Berra. -24Feb07 -ebl fix fifo stuff, bacula tries to rewind the fifo... Thanks to Andreas -22Feb07 -kes Begin implementing new comm signals for API. -kes Fix a few places in lib/message.c where the open fd may - not be zeroed. -kes Continue implementing lib/bsock.c (real class). Make jcr, - who, host, and port private. There are new methods to access - them for non-class use. This required touching a number of files. -21Feb07 -kes Add LANG=C to autoconf/randpass so it works with languages other - than English. Fixes bug #788. -20Feb07 -ebl Revert ClientRunBeforeJob to old position as in 1.38.X. - This fixes bug #780 - You will not be able to generate Include/Exclude list any more. - It will be fixed soon. - If you want to use this, you can apply - trunk/bacula/patches/testing/clientrunbeforejob_can_generate_include_exclude_list.patch -19Feb07 -kes Restore of sockets created false error messages because Bacula - no longer restores sockets, but the code was still trying to - set the attributes on a non-existent file. Reported by a user. -ebl finish RecyclePool feature - Media will takes Pool.RecyclePool - when moving from Scratch to a Pool or when user will do - update volume=xxx frompool - To use it, add RecyclePool = aPool to your Pool resource - Pool { - Name = Default - RecyclePool = Scratch - ... - } - TODO: update manual -kes Expand new BSOCK class adding signal() and new BNET signals. -kes Begin enhancing the dot commands adding a new API function - that returns more information and will make it easier - to interface to the Director from a program. -18Feb07 -kes Make DEVICE fd private. Its new name is m_fd, and can be - obtained with dev->fd() outside the class. This is the - first of many DEVICE members to be made private. -kes Implement Michael Renner's idea on having a virtual disk - changer. I made some minor modifications (e.g. I did not - implement the Virtual Changer directive, but simply set - the Changer Command to an empty string. -17Feb07 -kes Implement a BSOCK send() method that writes the whole record - in a single write() request rather than in two. -ebl add update volume=xxx recyclepool=yyyy - volume takes recyclepool from pool when using update volume=xxx from pool -16Feb07 -kes Fix encryption deblocking bug, which caused some restored files - to be truncated. This fixes bug #763. -kes Add FD event sequence order prepared by Eric -- for RunScripts. -kes Fix 12am/pm bug as reported in bug #782 -- scheduler problem. -13Feb07 -kes Apply Eric's ClientRunScriptAfter patch to 2.0 and 2.1. -ebl Use btime_t instead of uint64_t in media patch. -11Feb07 -kes Optimize the use of the database a bit in the Status dir command. - Only open it when needed, ensure that if any previous database - was opened, it is closed. -10Feb07 -kes Correct VolCatBytes bug from media patch. -kes Apply patch from bug #612 by Rudolf Cejka to speedup pruning - in the case of orphaned records. -kes Modify dbcheck to handle orphaned JobMedia, Path, Filename, - and File records in 300K chunks to be more efficient. This - idea came from Juan Luis Frances (if I remember right). -kes Apply Eric's scratch patch that moves a purged Volume to - the RecyclePool. Question: how is RecyclePool set? what - happens to the ScratchPool? -kes Apply Eric's media patch that collects read/write media - times as well as byte counts. This patch requires a - simultaneous upgrade of the DIR and SD. Note, there - should be some way to turn off timing. I'm not sure - times are in Bacula units. -kes Apply Eric's batch-insert patch. -09Feb07 -kes Update projects list. -08Feb07 -kes Implement Include/Exclude file lists in FD as dlists using - the new dlistString class. This permits efficiently having - large include/exclude lists and completes project Item 25. -kes Fix dird/ua_cmds.c so that a cancel command checks if the - console is authorized to cancel the job. This fixes bug - #767. -kes Modify SD so that the VolCatJobs medium record is updated - at the beginning of a Job rather than the end. This - fixes bug #775 where exceeding MaxVolJobs caused jobs - to fail. -kes Added a mutex around getting and setting Volume information - so that multiple simultaneous jobs will single thread. -07Feb07 - Switch to using Subversion -kes Remove src/pygtk-console/ from configure -06Feb07 -kes Delete src/lib/btree.c from win32 build, then add rblist.c - plus the entrypoints. -kes Apply patch supplied that corrects debug print - in canceling jobs for max run time. Supplied as - part of bug #621, which was previously fixed. -05Feb07 -kes Test on job_canceled() and sd_msg_thread_done inside - loop starting the message thread to avoid a race condition. - Fixes bug #771. -kes Remove rl_catch_signal from console.c as it conflicted - with the header definition. Fixes bug #765. -ebl Fixes bug #766 about RunsOnClient = Yes (case sensitive) -04Feb07 -kes Clarify some stored/acquire messages to indicate if the - problem is with read or append. -02Feb07 -kes Fix memory leak with storage ids in cats/sql_get.c -kes Terminate watchdog earlier to avoid reference to released - memory -- reported by Jason Austin. -kes Move closing the database from jobq.c to the director daemon - termination routine. This fixes memory leaks for shadow jobs - (i.e. migration jobs). -kes Free up the unique jobid chain items in migrate.c. This fixes - a memory leak problem. -kes Convert some ugly looking for statements to use foreach_alist - in findlib/find.c. This will facilitate converting the structures - to use dlist (for large include/exclude lists). -kes Fix a bug in the btree.c and btree.h routines, then rename them - rblist and add them to be built in src/lib. Include some new - methods written by Rudolf Cejka that make the code more readable - (hides some of the ugly casting). -kes Add set_next() and set_prev() methods which make the code much more - readable. Also add a new dlistString class that facilitates storing - strings in dlists. To be used in the large include/exclude lists. -kes Make some trivial modifications to lib/tree.h that use rblist - rather than dlist for storing the tree links. This was suggested - by Rudolf Cejka. The result of this is that the restore tree now - uses red-black binary trees rather than simple linked lists. This - should give rather dramatic speed improvements for directories - contining large numbers of directories/files (more than 10000). -28Jan07 -kes Fix maxruntime bug #621. -26Jan07 -ebl Implement the include JobID in spool file name project. -kes Reorder projects file in order determined by Jan 2007 vote. -kes Implement item #12 on project list -- quick release of FD by - the SD. -kes Fix open of SQLite3 db where user does not have write permission - so that DIR does not crash. Fixes bug #761. -25Jan07 -kes Add back missing @ in Win32 Makefile. -kes Change 'Device not configured to autolabel' from INFO - to WARNING. -kes Fix jobq.c to restart failed jobs when Reschedule Times = 0 - which should restart an indefinite # of times. -kes Fix configure --help to print --with-mysql[=DIR]. Same for - other DIR specifications. -23Jan07 -rn Fix msvc build problems. Fix bacula.dll exports for msvc build. - Fix path quoting in SQLite scripts. - Fix problems with SHGetFolderPath. -19Jan07 -kes Create patches/2.0.1-restart.patch. Fixes bug #755. -18Jan07 -kes Fix Job restart on error bug that promotes an Inc to a Full - backup. This should fix bug #755. -kes Add qt-console and first cut of code. - -Version 2.0.1 -12Jan07 -kes Fix Bacula->Documentation link on Win32 to point to index.html - instead of bacula.html. Fixed bug #750. -kes Return JobId in db_get_job_record() when JobId==0. This should - fix bug #741. -kes Do not release source pointers when restarting a failed job. -11Jan07 -kes Add dynamic dll entry point for SHGetFolderPath to Win32 code. - This *should* fix bug #747. -kes Modify winbacula.nsi to substitute with g bin_dir_cmd. Should fix - bug #742. -09Jan07 -kes Modify USTORE constructor to set an empty store_source string, - and don't copy the store_source string in a cancel. Hopefully - this will fix Arno's seg fault, bug #744. -kes Add back code to disable conio in configure. Fixes bug #743. -kes Correct the Options scanner in the FD to correctly handle - SHA1 option, which was eating the next option. Reported by - Sebastien Guilbaud. -kes Add code to indicate when the SD is spooling, spool wait, and - despooling as requested by Alan Brown. - -Version 2.0.0 released: 4 January 2007 diff --git a/bacula/technotes-2.3 b/bacula/technotes-2.3 index 00d106eee6..dbfc77d7e0 100644 --- a/bacula/technotes-2.3 +++ b/bacula/technotes-2.3 @@ -1,6 +1,9 @@ Technical notes on version 2.3 General: +01Sep07 +kes Implement savecwd.h and savecwd.c. Remove FSF versions. + Release Version 2.2.1 30Aug07 kes Update POTFILES.in -- 2.39.5