From: Kern Sibbald Date: Mon, 31 Jul 2006 17:36:56 +0000 (+0000) Subject: kes Make a first cut at a ReleaseNotes and ChangeLog for a X-Git-Tag: Release-2.0.0~692 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=5168006b83f501a3cd516fa0e420c9bbac15f0da;p=bacula%2Fbacula kes Make a first cut at a ReleaseNotes and ChangeLog for a beta release. kes Make make clean decend into the src/win32 directory. kes Fix some #ifdefing so that Solaris and FreeBSD compile sys/stat.h was turned off. kes Use suffix editing for new transfer rate messages. kes Attempt to come up with a workaround which seems to be an OS bug where write() returns EBUSY. IMO this should not happen. It triggered in truncatebug test. The workaround retries using a 100 ms wait. kes Eliminate a strerror() call in a class method that failed with older C++ compilers. kes Use rm -rf rather than rmdir to delete the src/win32/release directory during make clean. git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@3213 91ce42f0-d328-0410-95d8-f526ca767f89 --- diff --git a/bacula/ChangeLog b/bacula/ChangeLog index aabffb0f0c..3f30f214e9 100644 --- a/bacula/ChangeLog +++ b/bacula/ChangeLog @@ -1,47 +1,278 @@ + Technical notes on version 1.39 + Kern Sibbald -Release 1.38.11 (28Jun06) released 28JunO6 -28Jun06 -- Add test for IRIX64 as OS -- Fix scheduler hang during clock shift (due to missing unlock()) -- Minor tweaks to bregex.c -- Fix to block.c to correctly check for DVD number of parts. -- Fix to dev.c to permit DVD seeking in spool file. Corrects - label rewriting problems. -- Clarify license for techlogs (GPL). I consider them "part" of - the source code of Bacula. -- Use FDL license for developer's manual, French translation, German - translation, bimagemgr manuals (same as the main manual), and - the web site. - -Release 1.38.10 (08Jun06) released 12JunO6 -08Jun06 -- Modify setting ACLs to suppress error message if the file is a - symbolic link since the file linked to may not yet be created, - and symbolic links really should not have attributes ... -06Jun06 -- Complete implementation of acl.c error message during restore. - During backups, errors getting acls are silently ignored, as was - previously the case. +General: +30Jul06 +kes Make bscan ignore ACL streams. +kes Update projects files with new Feature Requests. +kes Generate current English and French manuals and upload + them to the site. +kes Update the home page to include the new British/French flags to + switch between translations. Work done by Alexandre Baron. +kes Make disk-changer script print an error message if the changer + directory is not defined. +kes Create a generic DB routine for getting an int (32/64 bit) from + the DB. +kes Add more migration code. +kes Add a few more files to .cvsignore here and there. +kes Minor fixes for SD write rate and despooling rate. +kes Turn off new test code in src/console.c + +Version 1.39.18 +29Jul06 +- Incremented the version number to signify that all of Robert's code + for Win32 that was in the branch is now integrated into the HEAD, + and that Eric has submitted code that we hope will provide limited + backward compatibility with 1.38 file daemons (more testing to be + done). +- I rationalized a few of the names of the variables (mainly jcr names) + that are used during migration as keeping three different jcrs at the + same time clear in one's head is not easy. + +Version 1.39.17 +28Jul06 +- Tweak new runscript feature to work with 1.38.x FDs. +- Correct crypto.c to fix segfault when restoring an encrypted stream + on fd which don't use rsa keys. +- Add yes/no english keywords on localised yes/no questions. +27Jul06 +- Several important commits from Robert Nelson for code cleanup and + Win32 build. +- Modify console.c so that when conio is enabled, it converts \n to + \n\r before outputting to the console. Hopefully this will fix + the problems with expect in Perl that Eric saw. +24Jul06 +- Change cats/sql.c to elimate %-*s format, which I think is turned + off in bsnprintf. +- Add Comment field to llist of a volume. +- Allow true/false in some yes/no questions. +- Implement update volume enable=(on|off|true|false|archived|0|1|2) +- Remove a few /n's when scanning commands from another daemon. This + permits adding additional fields later. +- Modify dbcheck to handle ctl-d and to delete Log table entries. +- Update README.mingw +22Jul06 +- Tweak authentication to work with 1.38.x FDs. +- Tweak catalog make scripts. +- Fix catalog upgrade scripts so that they work. +- Correct despooling debug code to eliminate race condition. +19Jul06 +- Add additional fields as specified by Arno to LocationLog. +- Add comment field to the Media record. +- Add Time field to the Log record. +- Correct migration SQL (thanks to Bill Moran) so that it + runs with PostgreSQL also. +- Add spooling/despooling info in status output of SD. +17Jul06 +- Spend a lot of time integrating mkcdrec with the rescue disk. +- Add VOLMGMT message class for volume management messages (none yet). +- Add CATALOG as a destination. It goes into the LOG table. +- Implement the Log table in the DB. +- Implement the Location Log table in the DB (for user use). +- At Eric's request add a run_scripts() just after blast_data in + src/filed/job.c +10Jul06 +- Add Enabled column to Location, correct some typos in DB schemas. +- Correct bug I introduced into RunScripts enum. +- Add log table to Catalog +- Purge original job migrated if the migration terminates normally. +- Cleanup purging of files/jobs so that it is done only in a + single subroutine. +- Add new VOLMGMT message class. +- Add Catalog message destination (user conf code remains to be written). +09Jul06 +- Modify read_record and friends to properly deal with migration + needs. +- Update debug code in read_record. +08Jul06 + ======================= Warning ========================== + Separate read and write storage in Jobs in the Director. This + is a major rewrite of some of the low level code and hence has + a high probability of introducing bugs. + ========================================================== + +- Move the job init code up to *before* the job is put into + the job queue (resource allocation queue). This permits the + job to establish whether it will read or write or do both. +- Add name() methods to all the resource classes. +- Implement separate read and write storage resource + allocation/deallocation in jobq.c + + ======================= Warning ========================== + Implemented new method of getting the default Storage from the Media + record rather than from the MediaType for restore. As a fall + back, if no Storage is defined, use the MediaType. This + eliminates most all prompts if there are multiple MediaTypes + used. This is an important and fundamental change. + ========================================================== + +- Add more detail (Storage, Device) to list of volumes printed + for restore. +- More code in migrate. In particular start multiple jobs if + migrating a volume. +- Probably overkill, but ensure that the bsr is unique even within a + job in FD and SD. +- Rework bsys.c drop() so that it now should work as expected. +- Update a bunch of old copyrights -- particularly in .h files. +- Remove src/lib/bshm.c/h +05Jul06 +- Migration fixes +04Jul06 + ======================= Warning ========================== + All hash codes in the database are now kept in world + compatible base64 format (no = filling). This means that + all FileSets will be updated and if you are running + verify jobs, you must do an InitCatalog. + Authentication uses the new algorithm, but should be + backward compatible with 1.38.x + =========================================================== + +- Modify the authentication routines so that the 1.39.15 Director + always runs with the compatible binary to base64 code (same as + the rest of the world). It will however detect if an SD or + FD is running the old code and if that is the case, will use + the old algorithm for authentication. However, all consoles must + use the compatible algorithm, and all data entered into the database + (all hash signatures, MD5, SHA1, ..., and all FileSet hashes) will + use the compatible algorithm. +- Rename the cram_md5 routine names to be slightly more appropriate + to what they are doing (challenge and respond). +- Robert committed his #ifdef and header cleanup. +30Jun06 +- Fix a complier warning in files/backup.c +- Cleanup NOT NULL vs DEFALT 0 in database creation. +- Tweak btape. +- Robert committed his low impact changes. +- I removed a size_t from the jcr.h definition. +- Update the tape regression scripts (still to be tested). +- Add gcc and gcc-c++ requires to srm as suggested by a user. +- Require done or quit to exit from in memory tree restore. +26Jun06 +- Write install/uninstall of new manpages. There are now a + pile of man pages. Some of which need a lot of work. + + ======================= Warning ========================== + The --mandir ./configure option now points to the top level + man directory. The man files will be installed under + mandir/man8 and mandir/man1 as appropriate. + ========================================================== + +- Add complete text of GPL to LICENSE. +- Implement job report that indicates where Storage and Pool + came from -- with overrides and Pool storage and NextPool, + it is all very complicated. +- Create a few common subroutines for backup.c and migrate.c +- Eliminate warning messages from tray-monitor.c +25Jun06 +- Apply fix for scheduler for missing unlock_jobs(). +- Clean out autoconf caches before rebuilding configure +- Fix the FreeBSD pthreads lib define updated by Dan. +- Add missing semicolon in src/console/console.c +- Add Robert's enhanced version of build-win32-cross-tools + as well as his patch file. +- Note, the new gcc options are likely to break building of + wx-console or the tray-monitor ... +24Jun06 +- Implement Robert's suggestion to suppress printing compile lines. +- Detect GCC correctly (I hope) +- If using GCC (actually g++) add the following compiler flags + -fno-strict-aliasing -fno-exceptions -fno-rtti + + ===================== Warning ============================= + Turn on new bsnprintf() code. This could cause print output + to look different. + =========================================================== + +- Fix crypto when not using openssl. I previously overlooked this. +- Eliminate crypto type punning problems by eliminating void * and + using uint8_t * instead. +- Harden authentication failure in FD by single threading errors + and forcing a 6 second wait. + + ===================== Warning ============================= + Removed "Accept Any Volume" directive. + =========================================================== + +- Major cleanup and simplification of regress using shell functions + (more tests to be converted to new format) +- Add detection of 64 bit Irix as indicated by user. +- Increment catalog database id from 9 to 10. +- Add a few of the new database fields to the various C++ + structures. +- Implement code to fill in the most important new fields (e.g. + Media Enable). +- Ensure that most of the new fields are in create/get/insert/update. + More work to be done. +22Jun06 +- Update some very old licenses in src/cats. +- Modify the database format for handling Migration jobs: + Add PriorJobId, RealEndTime to Job table + Delete MAC table + Remove Stripe from JobMedia record (not used, wasting space) + Add ScratchPoolId, RecyclePoolId, Enabled to Media record + Add Cost to Location table. +- Delete mac_record subroutines. +- Add new table values to create/update/get routines as appropriate. +- Update the update_tables and make_tables scripts. +- Make a first cut in using a union where multiple pointers (actually + pointers to pointers) are stored. +- Make some changes to base64.c suggested by Robert and others and add + a small amount of documentation. +- Add some changes suggested by Peter for Solaris (bregex...) +- Make runscript.h always built because it needs to be pulled into + more places. In particular its RES was left out of a union. +- Renumber the enum{} list in runscript.h to avoid starting from zero. + This makes it slightly easier to detect uninitialized variables. +14Jun06 +- Remove xpg4 lib from FreeBSD build as it is no longer needed and + sometimes creates install problems. +- Change a couple of %T in strftime to %H:%M:%S as seen in Robert + Nelson's code. More to do. +- Convert a few store_bit to store_bool in filed_conf.c. +- DVD tweak to block.c as supplied by Uwe Muessel. 04Jun06 - Modify configure.in to check for typeof(). -- Better detection of postgresql installation if pg_conf works. -- Fix RescheduleTimes = 0 bug (should not reschedule). -- Down port from 1.39: fixes for reload, autochanger error messages, - scheduler fixes for reload and day light savings change, +- In findlib/attribs.c use typeof instead of templates if possible. 01Jun06 - Implement partial error messages for src/filed/acl.c - Fix return code to fail when doing update barcodes and Pool resource is not found. This previously caused Volumes to be labeled as cleaning tapes. -- Small updates to projects file. +- Small updates to projects. +27May06 +- Add Eric Bollengier patch for new RunScript directive. It breaks + compatibility between dird and fd. 26May06 - Prevent DVD code from rewriting label if the device cannot be opened read/write. - Used __GNUC__ to detect GNU g++ as suggested by John Goerzen to fix Debian build bug. - Fix Dir/SD run race in migrate.c, verify.c, and restore.c +- Integrate manpages contributed by Jose Luis. - Update projects file. +- Add manpages Makefile.in to configure.in +- Remove installation of bacula.8 in scripts directory. 24May06 +- Implement patch submitted by cesarb in bug #606 to implement O_NOATIME + support. + O_NOATIME is a open() flag which makes it possible to read a file without + updating the inode atime (and also without the inode ctime update which + happens if you try to set the atime back to its previous value). It also + prevents a race condition when two programs are reading the same file, but + only one does not want to change the atime. It's most useful for backup + programs and file integrity checkers (and bacula can fit on both + categories). + + Recent versions of the Linux kernel and glibc have support for it (the + glibc support being mostly copying the O_NOATIME definition to + bits/fcntl.h). If there's no support for it on the kernel, trying to use + it does nothing (since the kernel ignores unknown flags). + + If the kernel has support for it, trying to use it either works, fails + silently (mostly in remote filesystems), or returns errno=EPERM (if you + are not either the owner of the file or root). A simple way to prevent the + failure is to open the file without the flag and set it later with + fcntl(F_SETFL), ignoring any EPERM errors. - Applied patch posted by Jaime Ventura to bug #570 to correct failure of restarted jobs to complete (due to a destroyed pthreads conditional variable used by the message thread). @@ -58,6 +289,8 @@ Release 1.38.10 (08Jun06) released 12JunO6 of incorrect MarkedId. - Apply patch from adioso bug #616 to correct text in manual (replace Director with File daemon). +- Rework a few of the zlib changes so that they build properly. + 21May06 - Move DIR "run" command to SD before starting the message thread as suggested by Cristopher Hull to avoid a race deadlock from @@ -65,20 +298,33 @@ Release 1.38.10 (08Jun06) released 12JunO6 - Modify LICENSE to correct some problems pointed out by Debian. 05May06 - Correct EOF with no \n lex.c problem. +- Tweak compat.h compat.cpp and merge with apcupsd - Add additional INFO messages if autochanger cannot be used. -- Add Eric Bollengier's lex error handler fix, which corrects most - of the reload problems. -Release 1.38.9 (02May06) 02May06 -- Added code to strip backslashes from Windows filenames during - a restore. -- Corrected Win32 License to use the correct LICENSE file. -- Corrected the buffer count and bytes reported in the heap - statistics. -26Apr06 -- Implement an NT_() macro to indicate that text should NOT - be translated. +- Simplify Win32 Makefile +- Correct count of buffers/bytes used by smartall.c +- Updated compat.h after porting apcupsd to MinGW. +01May06 +- Work on getting wx-console building on MinGW. wxWidgets now builds + started adding Makefile ... +- Moved MinGW library objects to src/win32/lib to reduce clutter. +30Apr06 +- Reloading a bad configuration file doesn't kill director any more. + Thanks to fix from Eric Bollengier. +29Apr06 +- Fix problem of accents with new Win32 code. +- Integrate Howard's VSS patch. Tweak it a bit. VSS now + works in the MinGW build with the exception that there + is a problem with accented characters -- i.e. there is + some mapping problem with wide characters. +- The code no longer compiles with Microsoft VC++. +28Apr06 +- Start implementing Christopher's St.Bernard code. +- Add Christopher's mods for opening files. +- Strip \r \n from Win32 error messages (Christopher) +- Add more info about Win32 system if unknown (Christopher) +- Use bstrn(cpy, cat) routines to avoid overrun in compat.cpp - Fix a number of incorrect strings marked for translation, when they should not be (e.g. commands). - Fix StartTime bug reported for ClientRunBeforeJob and RunBeforeJob @@ -96,10 +342,20 @@ Release 1.38.9 (02May06) - Remove lib/regex.c (replaced by bregex.c). - Delete src/win32/License.txt - Modify installer to install LICENSE +26Apr06 +- Fix bug in build-win32-cross-tools script reported by Howard +- Implement cross compiled bconsole 25Apr06 +- Fix barcode test, eliminate BOOL (doesn't exist on Linux). +- Write first cut of README.mingw32 - Add back ua_label barcode fix from Rufolf Cejka. +- Integrate the majority of the Mingw cross-tools submission + made by Howard Thomson. Everything compiles, with zlib, openssl, + and VSS turned off. Linking needs a pthreads library ... 23Apr06 - Add 'Dir Status' button to the gnome console. +- More work on migration. +- Restore non-compatible base64 coding to permit compatibility. - Display heap stats in Storage daemon without debug level. 22Apr06 - Integrate most of the MinGW changes -- more to do. @@ -119,17 +375,66 @@ Release 1.38.9 (02May06) command in restore. This gives the user a better idea of what the newest file really is. This fixes bug #574. The fix was suggested by the user. +- Implement a compatible version of base64. This permits external + programs to duplicate Bacula's base64 algorithm using standard + routines. This fixes bugs #296, and 565. Patch submitted by + author of bug #565. + ================= Note ======================== + Previous Signatures stored in the database are no longer + compatible with this. The main downside is for Verify jobs, + and doing an InitCatalog run will fix the problem. Also, the + authentication between the deamons is changed, so all daemons + must be simultaneously upgraded. + ============================================== + If you don't like this fix, set: + const bool compatible = true; + to + const bool compatible = false; + in src/lib/base64.c +20Apr06 +- Ensure that DB signature is never NULL. +- Ensure that DB table names are not translated. +- Fix scheduler to handle time skew (eg daylight savings). +- Fix scheduler to use lock_jobs() to avoid most problems + with reload. Window is now milliseconds. +19Apr06 +- Apply patch from Christopher Hull + - Allow multiple connections to database with different + parameters. + - Invalidate the scheduler when doing a reload. Fixes seg + fault, but still 60 second window. + - Additional info in Reschedule message. + - Use set_jcr_job_status() everywhere to prevent loss of + cancel, error. + - Display peer IP in FD if error from connecting DIR. + - Don't increment file count for DIRBEGIN. + - Replace illegal characters in Win32 filename by _. + - Add SE_CREATE_PERMANENT_NAME privilege in Win32. + - Hash hard link filenames rather than linked list. + - Fix for security failure in chdir on Win32. + - Add CreateDirectoryA/W win32 API entry points. +- Add /silent option to Win32 FD for Install/Remove service. +- Always print Heap statistics in FD. 18Apr06 - Remove the -f option from the chown in Makefile.in for more portability. - Change setting the group in Makefile.in to use chgrp for more portability. +- Implement a write_store and read_store to replace + dirstore in reserve.c - Implement a Bacula read/write lock for Python rather than using the Python lock to avoid recursive problems. - Correct the uninstall directory names in filed/Makefile.in as reported by a user. - -Release 1.38.8 (14Apr06) +17Apr06 +- Correct some problems with database creation (new tables). +- Replace a bunch of old 0x%x by %p. +- Get first cut of Migration with Job selection working. +16Apr06 +- Change store_bit() to store_bool() for the Spooling in + dird_conf.c -- bug reported by Robert Nelson. +15Apr06 +- Correct Makefile bug found by Dan Langille. 14Apr06 - Correct Makefile for Solaris /bin/sh - Correct mtx-changer.in for Solaris /bin/sh @@ -142,10 +447,18 @@ Release 1.38.8 (14Apr06) Python regexp program. - Use the new bregex.c to implement Regex expressions on Win32. 11Apr06 +- More work on migration. +- Implement wild program in tools directory for testing + wild-cards. Almost identical to the regex program. +- Up port VSS single thread locking code. +- Replace N_(..) by NT_(...) to inhibit translation of + commands. - Modify Makefile to change the permissions on Working Directory to 770 if the directory is created. - Do not fail the Makefile if changing the permissions or owner/group on WorkingDir fails. +- Remove early selection of Scratch Volumes in the recycling + algorithm. - Correct the old recycling algorithm so that Scratch Volumes are selected when looking for a Volume in the changer. - Correct a typo in the Verify SQL reported by Joe Park. @@ -155,25 +468,22 @@ Release 1.38.8 (14Apr06) - Remove the code added to 1.38.6 and 1.38.7 that pulls a scratch volume in an Autochanger early in the 'recycling' algorithm. +09Apr06 +- Make weof() and clrerror() methods of class DEVICE. 08Apr06 - Tweak license to include Microsoft restrictions. - Move mysql.reconnect to after real_connect(). Thanks to Frank Sweetser for the patch. - Disallow a backslash in a File = directive (Windows junk) - unless the string is quoted. + unless the string is quoted. - Apply Eric's patch to ua_label.c so that daemon protocol is not translated. - -Release 1.38.7 (06Apr06) released 07Apr06 +- Add NT_ definition for strings that should not be translated. +- Apply NT_() to ua_label.c - Remove timed wait for VSS on Win2K3 as it is not yet implemented. - Correct bacula.in script to reference bacula-ctl-xx in the sysconfig directory rather than the bin directory. - -Release 1.38.6 (28Mar06) released 29Mar06 -28Mar06 -- Back port from 1.39 fixes to lib/jcr.c to use foreach_jcr() - and new jcr chain locking. 26Mar06 - Fix a long standing bug in the bacula start/stop scripts. - Attempt to add the new bacula-ctl-* files to the rpm. @@ -198,7 +508,6 @@ Release 1.38.6 (28Mar06) released 29Mar06 possible non-release of reservation_lock(). - Suffle lock order in reserve to avoid deadlock between reservation lock and device mutex. -- Add Thorsten's VSS timeout code to 1.38 branch. 21Mar06 - Initialize jcr mutex before first use. Thanks to Thorsten for tracking this down for me !!!! as it broke the Win32 build. @@ -209,21 +518,16 @@ Release 1.38.6 (28Mar06) released 29Mar06 - Implement regex test program in tools directory. - Attempt to fix time problem with bsmtp with foreign langs. - Add strip_trailing_newline() submitted by user. - -Release 1.38.6 beta6 +- Implement regex matching in migrate.c 16Mar06 - Fix bug #537 to allow arbitrary time to mount a volume for restore, if polling is turned on. -- Disallow multiple storage specifications for a job. Should fix Arno's - problem. -- Add back a missing store of poolid in jr.poolid. - If dir_user or dir-group is specified in ./configure apply it to the working-dir. Fixes bug #533. - If rescheduling a job cancel the previous incarnation with the SD. Fixes bugs #566 and 557. - Fix bug #567 do_message() definition type conflict. -Release 1.38.6 beta5 14Mar06 - Add more jcr methods and make mutex and use_count private. - Create lock/unlock methods for jcr. @@ -240,22 +544,33 @@ Release 1.38.6 beta5 - Apply patch from bug #564, which corrects listing volumes with multiple autochangers. Apply same fix to next volume list. - Fix bug #562 where restore bootstrap file is not unique. +- More details in implementing David's migration syntax proposal. +- Save and restore dcr when swapping drives so that if we have + a write dcr it is not lost. - Use new routine lock_reservations() to lock the reservations system, and call it while looking for a volume in askdir.c. This could possibly fix bug #543. - Stop SD command loop if job is canceled. -Beta4 attached to a bug report but not distributed. +08Mar06 +- Remove old code from findlib/create_file.c +- Rename mac.c migrate.c +- Add user friendly display of VolBytes in job report. +- Rename target... to previous... to make it a bit easier to + understand. +- Add selection type and selection pattern to Migration (idea + given by David Boyes). + 04Mar06 +- The po files should now be current. - Fix new sql_use_result() code to properly release the buffers in all cases. -- Convert to using new Python class definitons with (object). - Use the keyword ujobid to mean the unique job id; job or jobname to mean the Job name given on the Name directive, and jobid to be the numeric (non-unique) job id. - Allow listing by any of the above. - Add the user friendly job report code for reporting job elapsed time - and rates with suffexes. + and rates with suffexes from John Kodis . - Add Priority and JobLevel as Python settable items. - Use TEMPORARY table creation where the table is created by Bacula. @@ -263,64 +578,139 @@ Beta4 attached to a bug report but not distributed. - Add ACL checking for the dot commands. - Fix restore of writable FIFOs. - Fix a bug in bpipe where the string was freed too early. - +27Feb06 +- Modify the Python class examples to inherit object -- new way + of defining classes. Patch from Felix Schwarz. +- Implement jobuid to replace old usage of job in keywords as + suggested by Eric Bollengier. +- Apply patch for enhancing wait from Eric Bollengier. On can now: + wait (wait for all jobs to stop) + wait jobid=nn + wait jobuid=unique id + wait job=job-name +- Implement write variables for Python to set Priority (anytime), and + Job Level, only during JobInit event. 26Feb06 -- Fix bug reported by Arno listing blocks with bls +- Fix the block listing bug pointed out by Arno. - Update the po files at Eric's request. - -Release 1.38.6-beta2 25Feb06 -25Feb06 -- Add sql_use_result() define. - -Release 1.38.6 beta1 24Feb06 24Feb06 -- Don't open default catalog if not in ACL. +- Fix Maximum Changer Wait, Maximum Open Wait, Maximum Rewind Wait to + accept time qualifiers. +- Make catalog respect ACL. +- Add recycle count to Media record. + +Changes to 1.39.6-beta1 24Feb04 +23Feb06 +- Add Rudolf Cejka's new rc-chio-changer. +- Implement pulling Volume from Scratch Pool if the + Volume is in the autochanger. +- Implement additional command arguments for update Volume. + +Changes to 1.39.5 22Feb06 -- Add virtual disk autochanger code. -- Add user supplied bug fix to make two autochangers work - correctly using StorageId with InChanger checks. -- Correct new/old_jcr confusion in copy_storage(). -- Remove & from Job during scan in msgchan.c -- probably - trashed the stack. -- When getting the next Volume if no Volume in Append mode - exists and we are dealing with an Autochanger, search - for a Scratch Volume. -- Check for missing value in dot commands -- bug fix. -- Fix bug in update barcodes command line scanning. -- Make sure Pool Max Vols is respected. -- Check that user supplied a value before referencing - it in restore -- pointed out by Karl Hakimian. -- Add Karl Hakimian's table insert code. -- Don't ask user to select a specific Volume when - updating all volumes in a Pool. -- Remove reservation if set for read when removing dcr. -- Lock code that requests next appendable volume so that - two jobs to get the same Volume at the same time. -- Add new Device Type = xxx code. Values are file, tape, - dvd, and fifo. -- Preserve certain modes (ST_LABEL|ST_APPEND|ST_READ) across - a re-open to change read/write permission on a device. -- Correct a misplaced double quote in certain autochanger - scripts. -- Make make_catalog_backup.in a bit more portable. -- Implement Karl Hakimian's sql_use_result(), which speeds - up restore tree building and reduces the memory load. -- Correct a number of minor bugs in getting a Volume from - the Scratch Pool. -- Implement additional command line options for update Volume. -- Don't require user to enter a Volume name when updating - all Volumes in a pool. - -Release 1.38.5 released 19Jan06: -19Jan06 -- Apply label barcodes fix supplied by Rudolf Cejka. -18Jan06 -- Modify standard rpm installation to set SD group to disk - so that SD will by default have access to tape drives. -- Allow users to specify user/group and start options - for each daemon in /etc/sysconf/bacula file. - -Release 1.38.4 14Jan06 released 17 Jan 06: +- Back port changes to 1.38.5 +- Fix recycle SQL for StorageId. +- Fix misplaced quote in mtx-changer script. +20Feb06 +- Note. Your database must be updated, or you must create + a new database. I have not yet incremented the database level. +- Add Location table. +- Add LocationId, DeviceId, and MediaTypeId to Media record. +18Feb06 +- Implement create/get mac record in database for adding extended + Migration data to the job record. +- Add new MAC table to update/make database scripts. +- Return Storage name used when getting VolumeNames for a job. +- Change bsr file keyword Storage to Device, which is more accurate. +- Ensure that Mac records are pruned/purged. +- Tweak SD tools to deal with changing media type. +- Integrate more dev.c subroutines as methods (e.g. strerror, bsr, ...) +- Pass pointer to dcr pointer to acquire_device_for_read() so + that the subroutine can switch devices, and hence dcrs. +- Modify the multiple MediaType read code to re-use the same + dcr when switching devices. This makes the code much more + robust. +- Integrate patch from Karl Hakimian that reads JobIds, FileIndexes + from a table for restore. +- Add Storage name to VolParams, but it really should be Device. +14Feb06 +- Add disk-changer to scripts directory + configure/Makefile +- Eliminate PoolId from jcr -- it is in jcr->jr.PoolId +- Implement store_bit scanner to replace store_yesno. Mostly done. +- Implement new store_bool that stores in a bool. +- Add true/false to yes/no conf directives. +- Make first cut at changing appropriate store_yesno to store_bool. +- Complete implementation of Pool storage devices. +- Move starting clones to job.c +- Move create_restore_bootstrap_file() to job.c +- Make copy_storage() more general to be able to handle + Pool storage. +- Cleanup a lot of migration code for manual running, including + using Pool storage. +- Move getting a scratch Volume into a subroutine. +- Make all places a Volume that is added to a pool to + respect max vols. +- Fix bug in autochanger recycle code (improper edit 64 bit). +- Fix segfault in restore command when no value specified. +- Start adding code to handle multiple MediaTypes in restore. +- Eliminate race condition in getting Volume name for + two drive autochanger. +- More debug code in autochanger. +- Add storage keyword to bootstrap file, add parsing. +- Move slot in bsr file into Volume record as there will be + a different slot for each Volume. +- Create reserve.h +07Feb06 +- Implement Pool storage overrides. +06Feb06 +- Implement first cut of Migration. +- Implement mysql_use_result() from patch by Karl Hakimian. + This reduces significantly the memory consumption during + the restore tree building, and hence runs faster too. +- Implement StorageId patch supplied by user (reggie) in bug + #536. This should permit Bacula to work correctly with two + autochangers. +- Implement Job listing variations suggested by a user. +- Move updating bootstrap code in backup.c to subroutine + update_bootstrap_file(). +- Add new job status elapsed time and bytes written user + friendly job report output patch sent by John Kodis + . +- Implement a storage list in Pools. +- Separate out setup_job() code from run_job(). +- Get migration working -- lots of changes in mac.c in both + DIR and SD. +- Apply patch from user (Eric Bollengier I think) that fixes a + DIR crash when no arguments are supplied to a dot command. +- Fix typo (strcpy->strcmp) in ua_prune.c as reported by Martin. +- Fix command arg name->volume in label command of gnome-console. +- Fix SD acquire.c to release correct DCR by explicitly testing + on the dcr address rather than trying to devine if it is a read + or write dcr. This failed in error conditions when the device was + not fully setup. + +30Jan06 +- Apply user supplied patch for more readable rate output + in job report. +- Continue implementing migration. +- Implement support for removable filesystems in SD. +- Ensure that btraceback scripts can be read by anyone. +- Replace dvd-freespace and dvd-writepart by dvd-handler. +- Correct bug where canceling restore before the FD contacts + the SD causes the drive to be left in read mode. +- Move ofline_or_rewind into DEVICE::close(). +- Eliminate close_device. +- Convert several dev subroutines to methods (e.g. bsf, + eod, ...) +- Eliminate force_close_device(). +- Implement Device Type directive in Device resource that + can have values File, Tape, Fifo, DVD, or Prog. +- Add has_cap() method to Device. +Changes to 1.39.4 +17Jan06 +- Add patch from bug #527 to allow RedHat user to specify + options/user/group for starting each daemon in + /etc/sysconf/bacula. 16Jan06 - Add two new queries to query.sql provided by Arno. One list volumes known to the Storage device, and the other @@ -332,6 +722,8 @@ Release 1.38.4 14Jan06 released 17 Jan 06: - Correct bug counting sized (for display only) in smartall.c - Print FD mempool stats if debug > 0 rather than 5. 12Jan06 +- Make db_lock() mutex error fail the job rather than abort + Bacula. Canceling the job caused the mutex to fail. - Correct bug in alist.c that re-allocated the list if the number of items goes to zero. - Move the reservation system thread locking to the top level @@ -353,7 +745,6 @@ Release 1.38.4 14Jan06 released 17 Jan 06: - During 'update slots' clear all InChanger flags where the StorageId is zero (old Media records). - Beta release 1.38.4: 09Jan06 - Fix autochanger code to strip leading spaces from returned @@ -375,24 +766,21 @@ Beta release 1.38.4: routines. This should prevent a jcr from being freed from under the walk routines. -Release 1.38.3 05Jan06: + +Changes to 1.39.3: 04Jan06 +- Start implementing Verify list output. - Move the suitable_drive flag to a better place to prevent premature termination of the reservation if all drives are busy -- should fix Arno's diff/inc pool failures. 26Dec05 - Add mutex to single thread VSS code in Win32. - -Beta release 23Dec05: 22Dec05 -- Add OPENSSL_INC to console dependencies, lib dependencies, and - wx-console dependencies in Makefile.in -- Add OPENSSL INC/LIB to gnome2_console Makefile.in. - Simplify code in askdir.c that waits for creating an appendable volume so that it can handle multiple returns from the wait code. - Modify the wait code to permit multiple returns. -- Return a zero when 'autochanger drives' is called and +- Return a zero when "autochanger drives" is called and it is not an autochanger. - Make rewind_dev() a method taking a DCR as an argument. This permits closing and reopening the drive if the @@ -408,28 +796,22 @@ Beta release 23Dec05: 21Dec05 - Modify gui on command to set only GUI mode and not batch. - Modify .messages command to always print messages regardless - of the mode. + of the mode. - If GUI mode is on, suppress automatic printing of You have messages. - Delete old bnet packet code. - Ignore new BNET_START_SELECT and BNET_END_SELECT signals in - wx-console. + wx-console. -- not implemented because bconsole must be updated. - Modify restore command in wx-console to set gui on and to use only .messages instead of messages. Hopefully this fixes bug #514. -Beta release 20Dec05: -20Dec05 - Fix seg fault in exit of acquire when canceling a job -- reported by Wolfgang Denk -19Dec05 -- Implement load balancing code. -- Pull a few files from 1.39 where we can maintain compatibility. -- Rewrite reservation algorithm again. Rename variables to be - more logical, add HEARTBEAT with Director, allow cancel of - jobs stuck in reservation, add last resourt any_drive. +- Pull in latest reservation system changes from 1.38 +- Make .messages command always print messages regardless + of the automessages flag. 17Dec05 -- Remove quotes from Version table name -- it breaks things. -- Fix seg fault if user labels a drive directly bug #513 +- Fix seg fault if user labels a drive directory bug #513 - Remove quotes around Version as it breaks things. 16Dec05 - Merge in Aleksandar Milivojevic's mods to the spec file. @@ -438,7 +820,7 @@ Beta release 20Dec05: 14Dec05 - Correct reservation system to do a last ditch try for any mounted volume, then anyone anywhere. -- Add quotes around table Version because of +- Add quotes around table Version because of error in MySQL 4.1.15 -- bug report submitted. - Correct some minor problems with btape in the fill command. @@ -455,22 +837,32 @@ Beta release 20Dec05: - Make cancel pthread_cond_signal() pthread_cond_broadcast(). - When dcr is freed, also broadcast dev->wait_next_vol signal. - Remove unused code in wait_for_device. -- Make wait_for_device() always return after 120 seconds of wait. +- Make wait_for_device() always return after 60 seconds of wait. + +Changes to 1.39.2: +13Dec05 +- Add stubs for non-crypto build. 12Dec05 - Use localhost if no network configured 11Dec05 - Eliminated duplicate MaxVolBytes in cat update -- bug 509. - Remove debug print. - Add bail_out in error during state file reading. +10Dec05 +- Merge changes made to 1.38.3 into HEAD +- Add stubs for pygtk-console code +- Create Makefile.in for pygtk-console code 09Dec05 - Merge updates into 1.38 branch - Update specs to include mysql4 define. +- Fix when attributes are sent, must be after binit(). - Stop read_record() if status not ok in second loop. - Return rec->FileIndex in dcr->VolLastIndex for normal and partial records in read_record(). This allows bscan to get FileIndex at EOT correct. - Fix butil.c to correctly set dcr -- fixes seg fault in bls. 08Dec05 +- Fix Win32 built to work with new crypto code. - Apply patch supplied by user (slightly modified) to fix correct detection of holes in block devices and FIFOs. Bug # 506. @@ -482,6 +874,9 @@ Beta release 20Dec05: Christian Masopust. - Remove warning message about multiple saves of hardlinked files from find_one.c as it can generate too many warning messages. +- Modify most restore error messages to be queued so that they + appear at the end of the job rather than mixted with the restore + listing where they could be "lost". 06Dec05 - Reset timeout values before select() per patch from Frank Sweetser for problems with non-blocking sockets. @@ -495,30 +890,36 @@ Beta release 20Dec05: - Set new Pool defaults in Vol when moved from Scratch Pool. - Remove argument from create_bacula_database for SQLite as it caused an error. -- Add back next_vol index code so that two drive autochangers can get +- Add back index code so that two drive autochangers can get a second tape. - Change a bunch of debug levels to aid debugging autochangers. - Fix reservation so that mutexes are properly applied. - Rework reservation algorithm so that two drives can be used at the same time. 04Dec05 +- Landon merged his data encription changes into the HEAD - Apply days keyword patch from Alexander.Bergolth at wu-wien.ac.at If this patch is applied, the number of days can be specified with - 'list nextvol days=xx' + "list nextvol days=xx" or - 'status dir days=xx' + "status dir days=xx" My use case is to be able to preview the next scheduled job (and the next tape to be used) on fridays if there are no scheduled jobs during the weekend. +Changes to 1.39.1: 03Dec05 - Fix font code in gnome2 console user patch. Fixes bug #501. - Fix malformatted bnet error message that caused seg fault fixes bug 502 - Applied user patch to improve README.vc8 in src/win32. 29Nov05 +- Add Migrate, Copy, Archive Job types (some where there) - Correct some more editing of JobId's (for 64 bit compatibility). - Ensure that StorageId is stored in Media record when ever possible. - Add Migration Job to Job. +- Add Migration Time, Migration High Bytes, Migration Low Bytes + Next Pool to Pool resource. +- Add more code to mac.c (migration archive copy). - Change Start Storage daemon job to require read and write storage pointers. - Pass read storage data to SD as well as write storage data. @@ -528,10 +929,13 @@ Beta release 20Dec05: - Separate read/write DCR in SD. Add jcr->read_dcr. - Cleanup how find_device() works. - Add read output to Status in SD. +Changes to 1.39.0: +23Nov05 +- Add red-black btree routines 21Nov05 -- Remove abs() in bfile.c so that it compiles on Solaris. Bug #491. - -Changes to 1.38.2: 22 November 2005 +- Remove abs() in bfile.c so that it compiles on Solaris. + Bug #491. +20Nov05 - Fix crash in tray-monitor when daemon disconnects. Bug #479. - Fix bnet-server bug found on OpenBSD. Bug #486 - Fix cancel failure bug. Bug #481 @@ -541,9 +945,7 @@ Changes to 1.38.2: 22 November 2005 - Fix memory overrun in bfile.c in building OS X resource fork filename. Bug #489 - Add Pool name to SD status output. -- Add Python install dir for Solaris to configure. Bug #492 - -Changes to 1.38.1: 15 November 2005 +14Nov05 - Apply SunOS patch for ACLs submitted by David Duchscher. - Make sure to set storage before trying to set drive. - Add bacula_mail_summary.sh to examples directory. It makes @@ -551,1623 +953,23 @@ Changes to 1.38.1: 15 November 2005 by Adrew J. Millar. - Make sure when we do a mount to unblock the device even if the drive could not be opened. -- Merge Scott's new spec files. -- Add doc on setting up Win32 environment variable supplied - by Kees van den Broek. -- Turn off API debug output unless debug set to avoid confusing - the user. -- Add Solaris ACL detection in configure.in as supplied by - Attila Fulop. -- Implement 'autochanger drives' protocol so that Dir knows - how many drives an autochanger has. -- Do not request drive number in label, ... if only one drive. -- Turn off debug code. -- Fix update slots to clear slot number of every slot before - setting it. This fixes (I believe) bug #471 -- Make unmount unload the autochanger slot. -- Modify open() on mount to be read-only and non-blocking, - otherwise the mount can block for a long time. -- Make a few error message numbers unique. -- Make a few error messages more correct. -- Apply patch from Thorsten to fix Win98 stat() command. -- Remove delete of CVS from all makefiles. +13Nov05 +- Remove the USE_WIN32STREAMEXTRACTION #defines (always on) + and correct a few minor problems to make it build on Linux. +10Nov05 +- Remove delete of CVS from all Makefiles - Fix seg fault when clicking on Add button in wx-console restore panel. Bug #470. - Fix copyright date and URL typo -- bug #468. - Change autostart install for FreeBSD to look for rc.conf rather than rc.local as suggested fix for bug #466. -- Apply patch supplied by Eric Bollinger to fix PostgreSQL +- Apply patch supplied by Eric Bollengier to fix PostgreSQL grant on status. Bug #465 -- Apply patch supplied by Eric Bollinger to fix PostgreSQL +- Apply patch supplied by Eric Bollengier to fix PostgreSQL update script. Bug #464 -- Fix off by one for last Slot of autochanger for label. -- Update release date. -- Tweak an authentication error message in dir. -- Fix autoloader so that mutex is set and released around - each run_program(). There was a missing set. -- Remove an unnecessary drive release in autochanger. -- Modify configure.in to add execute option to sqlite3 catalog - scripts. -- Create update_xxx_table_8_to_9 scripts for updatedb -- Fix wrong variable in bpipe.c debug output reported by user. -- Fix improper placement of encode_and_send_attributes() in - FD backup.c causing first file of non-portable Win32 backup - to have wrong stream. Reported by Thorsten. -- Move the -lcrypt for PostgreSQL after the PostgreSQL libs in - autoconf/bacula-macros/db.m4 as suggested by user. Fixes bug #457. -- Remove @STATIC_CONS@ from tray-monitor Makefile as suggested - by user. Fixes bug #456. - -Released 1.38.0 (28Oct05): 31 October 2005 - -Changes to 1.37.42: -26Oct05 -- Don't overwrite pthreadVCE.dll or msvcr71.dll during Win32 - install. -- Update README.win32 instructions. -25Oct05 -- Make db_get_job_record() return Name so that the ACL - can be checked. Fixes bug #446 -22Oct05 -- Insure that all the SD tools init the Autochanger - resources. - -Changes to 1.37.41: -22Oct05 -- Print error message if no Changer Command found. -- Apply fix from Martin Simmons to clear structure before - using it in IPADDR -- fixes a bind() bug on AIX. -14Oct05 -- Add NetBSD fstype patch from Geert Hendrickx -- Update num_parts only when writing to DVD. -13Oct05 -- Fix error conditions in bpipe.c DVD routine (terminate buffer). -- Use a bigger buffer 32K as suggested by Arno in bpipe.c. -- Increase dvd mount timeout with patch from Arno. -- Modify DVD code so that it keeps a state flag that indicates - when the freespace variable is valid. freespace_errno, now has - either 0 or an errno. There are no negative errnos. -- Create is_freespace_ok() to test state flag. Also, set_freespace_ok() - and clear_freespace_ok(). Modify code to use them. This - simplifies a bit the logic of the freespace code. -- Edit 64bit debug values correctly in dvd.c -- Fix %e variable to check num_parts rather than part. -- Use static buffer instead of static buffers for FI_to_ascii() - and stream_to_ascii() debug routines in SD. This is to prevent - possible race conditions between two threads (possibly Phil's - unmount problem). -12Oct05 -- Add a .dir command that separates arguments with commas. It - is intended to be used in the tree routines to get a - machine readable output for GUIs like wx-console. -- Make configure set dvd-handler to have execute permission. -- Install dvd-handler as is done for other dvd-xxx scripts. -- In block.c call dvd_write_part() to write last part rather - than dvd_open_next_part(). -- Prefix some DVD subroutines with dvd_ -11Oct05 -- Add extra debug to Update media error for VolFiles decrease - error. -- Do not update dev->file on set_ateof() for non-tape. -10Oct05 -- Mark DVD volume in error if part cannot be written. -- If a DVD is mounted, unmount it before asking operator - to mount an different one. -- Add Arno's dvd-handler script to the scripts directory and - integrate with configure. It replaces both existing scripts. -- Make default schedule start at 23:10 -- Implement gui release in Makefile. It creates two .tar.gz - bacula-web and bimagemgr. -08Oct05 -- Add README plus tar release to gui project. -- Manual documentation -- Tweak bacula.man doc -- Add PRAGMA synchronous = NORMAL; to SQLite3 tables. This - speeds up SQLite3 so it is only about 10% slower than version - 2.xx. Thanks to Russell Howe for this tip. -- Add msvcr71.dll to pebuilder .inf file as it is needed by - Bacula FD. Thanks to Brandon for passing this fix to Scott. -05Oct05 -- Add VolumePurged method to Python JobEvents class. Fixes - bug #428 (I think). -- Add JobId index to File table for MySQL. -- Correct tray-monitor crash of bacula-dir. qstatus_cmd() - code referenced the wrong pointer. Fixes bug #438. -- Add bacualnovss.mak file from Martin. -- Remove Pool from restore string in wbrestorepanel.cpp. Patch - from user for bug #433. -- Correct code in wbrestorpanel.cpp with misplaced parens. Patch - from user for bug #431 -- Correct printing filenames/date/times in wbrestorepanel.cpp due to bad - column alignment. Patch from user for bug #432. - -Changes to 1.37.40: -01Oct05 -- Add fix to compat.h supplied by Martin Simmons that permits - building the Win32 FD without VSS. -29Sep05 -- Bring cats/bdb_x.c routines up to version 1.37 (return values - are different). -28Sep05 -- Integrate libwrap patch from Szechuan Death. They should - also fix bug 423. -- Clean up patches directory for next release. -- Add PS variable in bacula.in script as recommended by a user. -- Correct mtx-changer.in so it only creates a temp file when - actually needed. -- Add patch supplied by user in a bug report to fix gnome2 - console buttons. -- Add patch from Peter Eriksson to correct - NLS error in tray-monitor.c -26Sep05 -- Add code to catalog_update to detect NULL db pointer. -- Remove char *msg argument from catalog_request and - catalog_update(). -24Sep05 -- Fix mode change open in btape.c -- Use nonblocking opens on Linux only. -- Move set_blocking code for tapes into method to - simplify main line code. -- Cleanup the code for ensuring we advance tape on fsf. - This should fix IBM problems -- patch from Adam Thorton - was very helpful. -- Remove test for BMT_EOD in fixup_device... this eliminates - need for status_dev() routine. -- Before doing label ensure device is in read-write mode. - -Changes to 1.37.39: -20Sep05 -- Tweak daemon.c berrno, copyright. -19Sep05 -- Fix handling of temp file in mtx_changer.in, reported as - a security bug, but it is not really. Bug #422 -- Fix security problem of handling temp file in randpass. - Bug #422. -- During label/relabel, add new_volume to VOLRES list in SD. -18Sep05 -- Apply Landon's patch for the TLS ANS1 API change. -- Remove old code. -- Make single exit path in first_open_device(). -17Sep05 -- Make new_volume walk through all Vols looking for dev - to release. -16Sep05 -- Make 'quit' command in console always allowed. -- Remove the storage list between each console command to - keep Dir from remembering a previously selected SD. -- Add code to reservation VOLRES subroutines to try to ensure - we don't end up with two Volumes on the same drive. -- Simplify the mutex code in VOLRES a bit to reduce the chance - of error. -15Sep05 -- Apply Nicolas' dvd-freespace.in patch. -- Make sure SQL table names are not translated. -- Eliminate incorrect message saying barcodes not - found in 'label barcodes' -- fixes bug report. - -Changes to 1.37.38: -07Sep05 -- Add ability to have passwords on backup of catalog as - alternate 3rd argument. Submitted by Andrew Ford - -- Turn off TapeAlert by default if user enables a Device - and add a note to install mtx. -04Sep05 -- Fix out of order volumes during restore. - -Changes to 1.37.37: -30Aug05 -- Final tweaks to build Win32. -- Enable debug code in ua_label.c -- Remove devices from the Volume list even if no - Volume is in drive. Hopefully this fixes Arno's problem - of multiple volumes listed in the same drive. -28Aug05 -- Apply Landon's patch for TLS default values. -- Correct LOCALEDIR problem in build of Win32 -- Correct ssize_t problem in build of Win32 -- Add code to llprint pools and volumes to debug next item. -- From bug report, fix resetting Pool defaults in Volume. It - was a typo 'Max' was missing in several places. -- Don't allow translation of database Volume Status values. - -Changes to 1.37.37 released 26 Aug 05 -24Aug05 -- Ensure that the drive is closed before calling the - mtx-changer script so that the script can access the drive. -- Add drive name to reserved Volume list printout in SD. -23Aug05 -- Fix bug in acquire.c that incorrectly reported volume - busy. -- Add additional debug code and messages in reserve.c -- Eliminate unwanted warning message in reserve.c - -Changes to 1.37.36 released 22 Aug 05 -20Aug05 -- Landon's fix for NLS detection -- Eliminate incorrect compiler warning on FreeBSD. -- Move Win32 errno message build into berrno constructor. -- Minor Win32 tweaks -19Aug05 -- A number of minor Win32 fixes. -- Remove a PostQuitMessage() as suggested by Thorsten so that - BartPE restore can work correctly. -- Fix for create JobMedia so that VolIndex remains valid even - during a delete Job or pruning -- bug 402. -- Minor tweak for Win32 build. -18Aug05 -- Win32 fix -- remove debug O_NONBLOCK code. -- Fix bug 399 -- make_catalog_backup does not work for sqlite3 -- Implement unloading a volume in a different drive if it - is needed in the current drive. -- Implement search for unused autochanger drive. -- Implement search for exact Volume in reservation before - other searches. -- Fix picking up drive in Dir so that it is not done in - the status command. -- Eliminate double check on 'loaded' for autochanger. -17Aug05 -- Start coding better reservation algorithm -- Always look for slot for label command. -- Add more debug code for autochangers. -- Apply fix from Stephan Leemburg for - improper scanning of schedule resource: - Run = Level=Full Pool=Catalog daily at 1:20 -- Apply patch from Chris Lee for - adding --enable-build-dird --enable-build-stored. -- Tweak datadir definition in configure.in -16Aug05 -- Fix bug that missed drive=nn specification. -- Eliminate nonblocking kludge in heartbeat of FD as - it caused high CPU usage. -- Pickup loaded slot when doing open() of tape drive. -- Make autochanger reservation code go through full list - first pass until exact match found. -15Aug05 -- Fix how FileSet is saved in job record to correct continual - Full save. -- Make datadir print on config.out listing. -- Move get FileSet record up in backup init to eliminate continual - Full save seen by Peter Sjoberg. -- Add VolumeName to read-only Python variables. -- Add VolumePurged event for Python. -- Suppress /dev/ Filesystem change prohibited INFO messages. -- Do not delete FT_RAW files before restore (allows FIFOs - to be used for restore). -13Aug05 -- Add drive specification to mount, unmount, release, label, - and relabel for Autochangers. Note Dir<->SD protocol has - changed. - -Changes to 1.37.35: -12Aug05 -- Disable parts of NLS as the configure does not work here. -- In job backup init (backup.c) define definitive Job level and - since time, *then* apply Job Pool override selection if any. -11Aug05 -- Modified bconsole script so that it is improperly - installed, it will refuse to execute. This avoids - recursive call loops. - -Changes to 1.37.34: -06Aug05 -- Apply David's ACL fix to src/filed/acl.c -05Aug05 -- Apply patches sent by David Duchscher for - making ACLs work on MacOS X and FreeBSD. -04Aug05 -- Apply patch in bug#397 that improved configure - - find readline under $with_readline/include/readline - - no libutil under Solaris - - no need for -ldl under Solaris -- Make reservation system single threaded during the - search to avoid two threads competing for the same - resource. -- Correct a return code in find_suitable_device_for_job() - Possibly cause of 'busy writing to another volume'. -03Aug05 -- Modify open() for tape so nonblocking really works. -- Use fcntl() to reset blocking status rather than close() - and reopen the drive. -- Make sure dev->open() is always called so that any change - in read/write permissions will occur. -- Open drives initially in daemon in read-only mode. -- Ensure that each time the VolHdr.VolumeName is zapped - or changed that free_volume() is called on the old name. - -Changes to 1.37.33: -03Aug05 -- Require 5 arguments to mtx-changer except list and slots -- Turn -EPIPE status returns from bpipe to ETIME -- Include Slot in SD status output -- Do not term_dev() during initialization in SD if the device - could not be opened. In the case of a tape drive, there may - be no tape in the drive. +- Tweak #ifdefing a bit in new Win32 stream code. +- Fix #ifdeffing for FD_NO_SEND_TEST. +- Add documentation of performance #defines -Changes to 1.37.32: -02Aug05 -- Correct PostgreSQL database scripts as suggested by a user. -- Add additional info to FATAL message generated when a device - is busy writing to another volume. -- Suppress an inappropriate NULL Volume name message after a cancel. -- Correct a warning message in reserve.c -29Jul05 -- Apply user's patch to make mutiple modifiers for times - work correctly. -- Make read_dev_volume_label() handle ANSI/IBM labels - correctly -- ie space over any label at the beginning - of the tape. -28Jul05 -- Make ANSI/IBM writing of HDR1/2 labels ignore any - errors if at end of tape. -- Apply Martin's patch to improve Python detection in - configure.in -- Temporarily turn off disk seeking until I find the - cause of the problem. -27Jul05 -- Add OSF1 patch supplied by user. -- Use number of files selected from write_bsr() only - if it is not defined. -- Explicitly seek to end of file when getting size for - restore test. -- Correctly set EndBlock position in JobMedia record - for files. -- Remove unnecessary set StartBlock in bscan. Caused bscan - regression error. -26Jul05 -- Modify mtx-changer to wait a maximum of 300 seconds. -- Do restart of failed jobs only for Backups job types. -- A number of DVD updates from Nicolas. -24Jul05 -- Turn off old service helper code in Win32. -- Correct Messages bug found by Phil in stored. -23Jul05 -- Complete (almost) documentation of 1.38. -- Add error messages for error conditions with VSS. -- Fix additional problems with VSS backup that I introduced. -Changes to 1.37.31: -22Jul05 -- Correct compiler complaints in wx-console and tray-monitor. -- Correct VSS problems recognizing c: -- Add VSS before job status -- Fix output of status from being one big line. -- Change cd xx; make to cd xx && make as suggested by Phil. -- Cleanup projects file -- Remove unnecessary casting of FF_PKT in filed. -- Apply Thorsten's bugfix for vss_generic.cpp -- Add check for df path for dvd_freespace -- Use df to get space used on DVD. -- Change sense of flag indicating erase DVD or not before writing. -- Fix bpipe so that it never modifies the result pointer. -- Replace more dev_name by print_name(). -- Rewrite edit_device_codes_dev() so it does not overwrite the - supplied buffer. -- Update printing of labels (for bls) so that critical information - is printed (Job name and timestamp). -- Cleanup old spool files when starting the SD. -- Modify vss.cpp to allow C: as a path name. Otherwise VSS - doesn't work when only a drive name is given. -- Modify vss.c to eliminate double / in filenames. -- Update doc -- particularly the restore chapter. -18Jul05 -- Make all files in working directory have .xxx at end. -- Work on DVD writing. -- Fix keepatime bug (bugs database). -- Move Python variables from Job to Bacula. They are - DirName, Version, ConfigFile, and WorkingDir -- Fix delete of bootstrap to only occur on Bacula created - filenames. -- Allow cancelling a Job name that is not active. It is - sent to the daemons. -17Jul05 -- Fix name space pollution by OpenSSL 0.9.8 reported by - Matthias Kurz -- applied his patch. -- Fix bpipe.c so that it does not modify results pointer. - ***FIXME*** calling sequence should be changed. -- Remove some remaining references to dev_name. -- Fix calls to mount_dev() and unmount_dev() to - correspond to returned value (bool instead of int). -- Try without success to make DVD writing work. -== Nicolas -15Aug05 - - Convert dvd-writepart to Python. - - Increase delay from 3 seconds to 5 seconds between SIGTERM and SIGKILL when - killing external programs. -13Aug05 - - Add gettext macros in autoconf/gettext-macros. - - Modify how localedir is set in configure.in. - - Remove setlocale check (useless). -10Aug05 - - Mark translatable strings in all source files. -08Aug05 - - Create French and Italian translation files (fr.po, it.po). - - Add support for translation in configure and Makefiles. - - Update autoconf/aclocal.m4 so it is automatically created with aclocal - (Note: autoconf/gnome-macros is not used anymore, it may be removed). -30Jul05 - - Fix src/lib/bpipe.c:run_program and run_program_full_output to detect if the watchdog - killed the program, and return an error if it is the case. -26Apr05 - - Modify parse_config to get a LEX_ERROR_HANDLER as a parameter - - lex_open_file now returns NULL if the file can't be opened. All calling functions have - been adapted. - - Remove set_exit_on_error function -07Apr05 - - Fix 'unknown device type' problem with DVD devices. - - Fix crash when there is no media in the DVD drive. -09Jan05 - - Update the documentation and ReleaseNotes. -05Jan05 - - Add FreeSpaceCommand in Device (SD configuration file) and implement it. - - Some modifications (again) on how guessed volume names are handled (now it should work). - - Part files on the hard disk are removed if they are empty. -04Jan05 - - Major fixes on how guessed volume names are handled. - - Minor fix in src/stored/append.c. - - Replace, when possible, POOLMEM by POOL_MEM in the new code of src/stored/dev.c. - - New script, scripts/dvd-freespace, which gets the free space available on a writable DVD. -03Jan05 - - Add WritePartAfterJob directive in Job resource (Director) - - Add WritePartAfterJob directive in Schedule Resource (Director) - - Implement these new directives -02Jan05 - - New function, open_guess_name_dev in src/stored/dev.c, which tries to guess the volume - name of a mounted device, so the label can be read. - - New script, scripts/dvd-writepart, which write parts to DVD+/-R(W). - - Removed WriteFirstPartCommand directive in Device (SD configuration file). - - Use readdir_r instead of readdir (src/stored/dev.c:open_guess_name_dev). -01Jan05 - - Add RequiresMount, MountPoint, MountCommand, UnmountCommand directives in Device (SD configuration file). - - Implement these directives (volumes can now be restored from a manually written DVD). - - Add WriteFirstPartCommand, WritePartCommand directives in Device (SD configuration file). - - Implement these directives (DVD writing now works). - - New function run_program_full_output in src/lib/bpipe.c. - - Lots of bugfixes and cleanups in the new code. -29Dec04 - - Add VolParts field in Media table - - Add MaximumPartSize directive in Device (SD configuration file) - - File Volumes can now be splitted in multiple files ('parts') - - Fix SQL error in sql_list while doing 'llist jobmedia' -Changes to 1.37.30 released 16 July 2005: -14Jul05 -- Fix 'dir' command scanning field misalignment in - wx-console. -- Switch to using the wxWidgets Unicode library. -- Include msvcr71.dll in distribution. -- Add VSS to status line in Win32 FD if enabled. -- Get VSS build scripts working with Thorsten's help. -- Unlink the bootstrap file after sending it to - the FD. -- Remove sending include/exclude lists to the FD during - a restore -- deprecated code. -- Cleanup the bootstrap files in the FD. - -Changes to 1.37.29: -14Jul05 -- Remove old commented out code from configure.in -- Add baculavssfd.mak file for building VSS version of - Win32 FD. -- Correct date (year) in vss.cpp and vss_generic.cpp -13Jul05 -- I finally found and squashed the elusive SD crash. - I needed to initialize the used volume list before - firing off the device initialization thread. -Changes to 1.37.28: -11Jul05 -- Make sure that bpipe results are zapped even on - error return. -- Lots of documentation. -- Do not prune volume marked as append when needing a - new Volume. -- Print a warning message in SD if a non-used Volume - is specified and autolabel not turned on. -- Correct a bug in chksum.c concerning SHA1 signatures - (an * should have been & when checking for a bit flag). -- Print File:Block for all label records in label.c -- concerns - primarily bls when doing Job listings (-j). -- Correct is_volume_in_use() to return false if testing - on the same device where the Volume is already mounted. -- Define a init_done flag in the SD that is set when the - devices are initialized and make users connecting wait. - This prevents useless connect failure warning messages. -- Do additional device locking in ask_op_to_mount_volume() - to prevent race conditions with a user labeling a Volume - or autolabeling. -09Jul05 -- Add a test for error return from bnet_wait... in heartbeat.c - in FD to avoid CPU loop. -- Implement TLS in gnome console and wx-console. - -Changes to 1.37.28: -08Jul05 -- Correct a NULL pointer reference in the mount command. -- Correct typo in Copyright -- Add detection of EOM for IBM drives (i.e. errno == ENOSPC) -07Jul05 -- Remove temp file created in mtx-changer script. -- Make fsf_dev() into a class method. -06Jul05 -- Modify mtx-changer.in script to return slot:barcode for - Volumes that are loaded in the drives. -- Correct some more places where dev->is_blocked() needs - to be checked in dircmd.c in SD. -- Update doc. -05Jul05 -- Add code to ensure that reserved but unused volumes - are freed. -- Correct how Volumes are mounted and handled so that the SD - does not get stuck if multiple volumes are used (recycling, - relabling, ...) -- Correct bug where you could relabel a volume while it - was being acquired -- created chaos. -04Jul05 -- Correct seg fault caused by open() calling sequence change. -03Jul05 -- Add new rc-chio-changer script by Rudolf Cejka to - examples/autochangers -- Apply Rudolf's changes to bacula.in -- Expand the space from 8 to 10 characters in editing - file sizes for restore and dir of catalog, otherwise - GB sizes are truncated -- fixes bug report. -- Modify wx-console to know about 10 character widths. -- Allow decending into top level directory if 'recurse=no' - is set. Fixes a bug report. -- Install pthreadVCE.dll when installing console or wx-console - on Win32 systems. Fixes bug report. -02Jul05 -- Tweak dvd-writepart script to prevent door from opening/closing - so much. -- Remove GROUP BY in several PostgreSQL commands to prevent error. - Resolves bug report. -- Ensure that < as first character of filename list is not treated - as a directory for restore. -- Add debug to heartbeat in FD as it seems to go into an - infinite loop from time to time during SD failure in DVD writing. -- Add more debug code to dvd writing. -- Attempt not to destroy existing fs on DVD. -30Jun05 -- Detect device mounted for DVD and suppress be sure to - mount message after label. -- Set Cleaning tape status to 'Cleaning' and force no - MediaType. -- Get DVD writing working with new standard Bacula open() - code. -- Rename get_filename() to make more sense. -- Detect 'is already mounted on' on mount command so to avoid - error if device is already mounted. -- Eliminated guess_name() code. It may be necessary to - add it back later. -- Eliminate seg fault from printing invalid results. -- Make dvd_write_part() bool. - -29Jun05 -- Attempt to fix DVD writing by eliminating a number of the - DVD subroutines to simplify. -- Modify DEVICE::open() to take dcr as first argument. This - will permit providing more info to DVD opening. -- Fix scanning for time/size items which in some cases - ate the next line. -- Eliminate read_dvd_volume_label(). New code (not yet written) - *must* open dvd appropriately before calling - read_dev_volume_label. -- Modify open_first_part() open_next_part() to take DCR as - argument. -- Make label command from console work on DVDs. -- Make mount command from console work on DVDs. - Unmount does not work yet. - -Changes to 1.37.27: -27Jun05 -- Add Database vendor to CatalogRes tuple for Python. -- Update doc -- Implement DoesVolumeExist(Vol) for Python. -- Prevent python command from seg faulting if no arg given. - -Changes to 1.37.26: -26Jun05 -- Add set_mode method in DEVICE. -- Correct set_mode method in DEVICE -- Add more DVD debug info -23Jun05 -- Check for incorrect duration and size modifiers in conf files. -22Jun05: -- Make Version a tuple (version, build-date) -- Add CatalogRes tuple (DBName, Address, User, Password, - Socket, Port) -- Add Version, ConfigFile, and WorkingDir as Python attributes - in the Director. -- Implement code (principally for Win32) that on failure to - create a file, it will cd into the directory and attempt - to create the file using a relative path. This avoids creating - files with paths which fail on Win32. -- Fix parsing of times and sizes with decimal numbers. -- Make free_volume_list() in SD work if vol list is not - initialized (./bacula-sd -t). -21Jun05: -- Add debug error printout when open() fails. -- If open() of DVD fails in mount.c, return false. -- Split open() code for DVD into separate subroutine in dev.c - -Changes to 1.37.25 released on 20 Jun 05: -20Jun05: -- Fix bug where Storage daemon gets confused about what - tape is mounted. (one line of code was inadvertently - deleted). - -Changes to 1.37.24: -18Jun05 -- DVD writing/reading seems to be mostly working. -- Set execute bits on dvd-freespace and dvd-writepart -- Make dvd-freespace use existing dummy file. -- Modify dvd-freespace to pickup size from Track Size: -16Jun05 -- Add Date, Job, level to updates to .bsr file in - dird/backup.c -- Add debug info to dvd-freespace.in -- Fix hard coded bacula.sql in make_catalog_backup reported - by a user. -- Make sure a verify volume to catalog never reports an error - if there are zero files to verify. -- Remove confusing debug info in filed/backup.c on network - error. -- Make sure output from console is not sent to system log. -- Convert open_dev() into a class method. -- Change VolHdr.VolName to VolHdr.VolumeName. -- Add a flag in the device state word to indicate that - we found Media in the drive (DVD). -- Make mount_dev() and unmount_dev() return bool. - -Changes from Nicolas Boichat: -26Apr05 - - Modify parse_config to get a LEX_ERROR_HANDLER as a parameter - - lex_open_file now returns NULL if the file can't be opened. All calling functions have - been adapted. - - Remove set_exit_on_error function -07Apr05 - - Fix 'unknown device type' problem with DVD devices. - - Fix crash when there is no media in the DVD drive. -09Jan05 - - Update the documentation and ReleaseNotes. -05Jan05 - - Add FreeSpaceCommand in Device (SD configuration file) and implement it. - - Some modifications (again) on how guessed volume names are handled (now it should work). - - Part files on the hard disk are removed if they are empty. -04Jan05 - - Major fixes on how guessed volume names are handled. - - Minor fix in src/stored/append.c. - - Replace, when possible, POOLMEM by POOL_MEM in the new code of src/stored/dev.c. - - New script, scripts/dvd-freespace, which gets the free space available on a writable DVD. -03Jan05 - - Add WritePartAfterJob directive in Job resource (Director) - - Add WritePartAfterJob directive in Schedule Resource (Director) - - Implement these new directives -02Jan05 - - New function, open_guess_name_dev in src/stored/dev.c, which tries to guess the volume - name of a mounted device, so the label can be read. - - New script, scripts/dvd-writepart, which write parts to DVD+/-R(W). - - Removed WriteFirstPartCommand directive in Device (SD configuration file). - - Use readdir_r instead of readdir (src/stored/dev.c:open_guess_name_dev). -01Jan05 - - Add RequiresMount, MountPoint, MountCommand, UnmountCommand directives in Device (SD configuration file). - - Implement these directives (volumes can now be restored from a manually written DVD). - - Add WriteFirstPartCommand, WritePartCommand directives in Device (SD configuration file). - - Implement these directives (DVD writing now works). - - New function run_program_full_output in src/lib/bpipe.c. - - Lots of bugfixes and cleanups in the new code. -29Dec04 - - Add VolParts field in Media table - - Add MaximumPartSize directive in Device (SD configuration file) - - File Volumes can now be splitted in multiple files ('parts') - - Fix SQL error in sql_list while doing 'llist jobmedia' - -Changes to 1.37.23: -- Renamed to make unique version for open_next_part() - changes. - -Changes to 1.37.23: -- Renamed to make unique version for open_next_part() - changes. - -Changes to 1.37.22: -14Jun05 -- Fix the same state variable problem in open_next_part(). -- C++ify the SD code a bit more. -13Jun05 -- Add more debug code and clarify debug code for DVDs. -- Do not save and restore state in open_first_part() - since state should be properly set after open_dev(). -- Make default mandir /usr/share/man -- Install Bacula man page. -- Implement passing of FileSet Enable VSS to FD. -- Move main body of reserve drive code into subroutine - so that it can be called multiple times. -12Jun05 -- Eliminate getpass() for Win32 builds in console as the - function does not exist. -10Jun05 -- Correct some reservation problems in SD when no devices - are available. -- Start removing #ifdef HAVE_TLS by sneaky tricks. -- Begin implementation of TLS in wx-console -- Remove ignoring SIGCHLD from console. -- Rework the dlist binary search routines for implemenation - of the Volume reservation code -- make it more general. -- Strip double slashes // from Win32 filenames in an attempt - to resolve restore problems on some systems. -- Fix a minor bugs in the trace code that caused the first - line output to be lost. -- Implement a good first cut at adding Volume reservation code - to the storage daemon (in file reserve.c). -- Remove old unused code from the tree.c routines. - -Changes to 1.37.21: -06Jun05 -- Fix compile problems on Win32 -- Start writing Volume reservation list (already exists, but - is not really very good). -- Implement attribute caching to put Signature into database - at the same time as the file attributes thus eliminating a - number of database accesses. -- Correct a reservation problem. -- Implement full Dir Storage use. -- Reduce a bit of TLS #ifdeffing. - -Changes to 1.37.20: -04Jun05 -- Minor changes -01Jun05 -- Add more documentation to mtx-changer.in -- Correct link to manual in authenticate.c in various - directories. -- Create a new src/stored/reserve.c file where the - Use Storage command is processed and drives are - reserved. -- Modify src/stored/autochanger.c to keep track of each - Slot that is loaded for each device. -- Ensure that changer_command and changer_name are picked - up from Autochanger resource if not specified, and if - neither is specified, err. -30May05 -- Fix bextract.c compile problem -- Create bacula.man -- Make make distclean clean a bit better -29May05 -- Remove old code in jcr.c -- Make testls release jcr chain when terminating. -27May05 -- Implement Maximum Job Spool Size (actually DCR based) -26May05 -- Use light weight non-recursive locking on jcr chain. -- Make JCR a class and implement inc_use_count() and - dec_use_count() methods that ensure that the jcr is - locked when inc/dec the use count. -- Remove the global jcr lock when traversing the jcr - chain. -- Use dlist to implement the jcr chain rather than hand - crafted next and prev links. -- Lock the jcr chain inside each function that modifies - the chain. - -Changes to 1.37.19: -26May05 -- Fix compile problem of ua_restore.c on broken compilers. -- Apply patch from bug 326 to permit bacula status by any user. -- Fix bug 325 -- conversion of 12:30pm to 24hour time. -25May05 -- Put Dmsg() on inside if() to avoid calling subroutine. -- Make restore.bsr have unique name. -- Allow user to define bsr filename on restore command line - with bootstrap=xxx.bsr -- Add limit=nnn to 'list jobs' command. -- Remove old restore code that did not use .bsr file. -- unlink automatically generated bsr file. -- Cleanup heartbeat code so that duped fd is almost sure - to be released. Previously under certain conditions, the - memory was not released due to race conditions. -- Shorten copyright. -20May05 -- Unify the reserve_device() for a single device into one subroutine. -18May05 -- Modify wait during use_device to happen only after all devices - have been examined rather than in the reserve_device code. -- Correct updating count of number of Volumes in a pool. - -Changes to 1.37.18: -16May05 -- Add more debug to SD for Autochangers + status output. -- Add Scratch to PoolType in PostgreSQL make...tables and do not - permit NULL PoolTypes. Fix for bug 319 reported by Eric. -- Update LICENSE. -- Add quotes around filename in parse_config error message. Bug - reported by Eric. -15May05 -- Change nested \include to \input so that sections are properly - included in the pdf manual -- update the Web site. -- Set reconnect flag in MySQL packet to 1 to ensure that connection - is re-established. MySQL 5 changed default to 0. Fixes bug report. -- Fix Scratch pool handling as reported in a bug by Eric Bollengier - by applying his patch. -- Remove delete job in favor of delete jobid. -- Add = NULL to configfile definitions as reported by Eric in a bug - report. -- Update winbacula.nsi.in to reflect new manual file structure. -10May05 -- Correct a minor build problem with wx-console. -- Add cancel() to Dir Python scripting. -- Re-correct bug in parse-config error handling. -- Reorganization of use_command in SD to permit - waiting and multiple drive autochanger support. -09May05 -- Correct bug in parse_config error handling. -- Where ever possible mark a volume in error or not - InChanger in mount.c -- Fix bug in changing tape pools after first backup. Reported - by Peter Sjoberg. -- Enhance mtx-changer to use Working Directory as temp. -- Remove all but initial setup locking of Res in SD. -08May05 -- Add Client OS type to Job report. -- Add version to manual -- Update the Web site to have a single page for - the documentation links. - -Changes to 1.37.18 release 08May05: -08May05 -- Correct attribute definition compile error in 1.37.17 -- Correct inverted order of CreateTime and MD5 pointed out - by a user in a bug report in FileSet db routine causing - the MD5 to print in the output instead of the time/date. - -Changes to 1.37.17: -07May05 -- Implement cstrlen() in sql list routines. -- Implement caching of attributes to add the - signature so that only one DB call will be made - per file. Not yet turned on. -- Fix Win32 build for TLS. -- Optimize File pruning to eliminate one database call. -- Fix bug that prevented File pruning from working. -- Implement a cstrlen() which returns the character - length of a UTF-8 string. -06May05 -- Move test for MaxStartDelay as suggested by Peter. -- Implement Python methods (I had to read the Python source - code). -- Implement run() method in Director. -- Add Priority and Scheduled time to Job report. -- Add JobInit and JobRun events. -- Add Priority as Python read/write attribute to Job. -- Correct typo in bsmtp reported by Jo. - -Changes to 1.37.16 (07May05): released 07May05 -07May05 -- Implement cstrlen() in sql list routines. -- Implement caching of attributes to add the - signature so that only one DB call will be made - per file. Not yet turned on. -- Fix Win32 build for TLS. -- Optimize File pruning to eliminate one database call. -- Fix bug that prevented File pruning from working. -- Implement a cstrlen() which returns the character - length of a UTF-8 string. -06May05 -- Move test for MaxStartDelay as suggested by Peter. -- Implement Python methods (I had to read the Python source - code). -- Implement run() method in Director. -- Add Priority and Scheduled time to Job report. -- Add JobInit and JobRun events. -- Add Priority as Python read/write attribute to Job. -- Correct typo in bsmtp reported by Jo. - -Changes to 1.37.16 (03May05): released 05May05 -03May05 -- Make a few tls ifdef tweaks. -- Fix create_file.c Win32 problem pointed out by - Peter Sjoberg. -- Fix really ugly bstrncpy() but found by Thorsten. -- Move winapi.h/c from findlib to lib for inclusion in - multiple places. -02May05 -- Thorsten Engel finished his work on Win32 Unicode. We - now have a single executable that runs on all Win32 machines. -- Move job initialization code after job scheduling so that - Verify jobs check for the prior JobId after they are really - started rather than before. -- Fix lib/fnmatch.c so that it does proper testing before folding. -- More documentation -- at tls and ansi labels chapters. -- Fix fileset_convert.pl to handle empty Exclude statements. -- Turn regex back off in Win32 -01May05 -- Fix sign extension problem in lex.c that reads UTF-8 - with Chinese characters incorrectly. - -Changes to 1.37.14: -30Apr05 -- Remove a few HAVE_TLS #ifdefs -- Implement final Python style interface. More implemention to - be done, but the interface should change little if at all. -28Apr05 -- Make default no tls support. You must add - --with-openssl to get tls support. -27Apr05 -- Update Web header to include google search in the search - box -- thanks to input from Michel Meyers. -- Fix md5sum so that it builds with the new openssl stuff. -- Take some enhancements to the md5sum test program proposed - by a user. -26Apr05 -- Apply Tru64 patch supplied by Pascal Pederiva -- Apply Unicode fixes for Win32 from 'Thorsten Engel' - -- More work on Python read feature in FD. -22Apr05 -- Fix (hopefully) the ftello() overflow reported by Peter. -- Landon Fuller committed his TLS patch. -- Fixed two minor warnings in console.c with TLS turned off. -- Updated the Makefile.in for wx-windows and tray-monitor - to handle TLS. I can only build the tray-monitor. -- Fix bscan to open tape in read-only mode (actually fix - it so that it doesn't use the standard open routine). -- Correct what appears to be an error in setting the - return value in dvd.c -21Apr05 -- Get FD Python running -- design Python backup interface. -- Fix seg fault in SD when referencing Alert Command. -- More documentation. -- Fix one more thing in Win32 build. -20Apr05 -- Doc updates -- Fix Win32 build -- Put in production here - -Changes to 1.37.13: -19Apr05 -- Fix SQLite and PostgreSQL table creation script syntax - problems. -- Fix new Python code to work for Director. -- Move lib/python.c to lib/pythonlib.c so that debug output - is easier to read (can distinguish lib from dird, ...). -- Cleanup Python build so that Python is not dragged - into programs that don't use it. - -Changes to 1.37.12: -02Apr05 -- Reset NumVols in Pool record from database on every update - Pool. -- Modify DB to support multiple simultaneous copies and - RAIT stiping. -- Pass copy and stripe between DIR and SD and put into - the JobMedia DB record. -- Update and test SQLite and MySQL datebase creation and - update scripts. -- Implement version 9 of the DB. -31Mar05 -- Convert more atoi to str_to_int64() for DB. -- Implement filling in NumVols by querying DB rather - than trying to keep track of it. -- Add storage name to string passed to in use storage= -- Fix newVolume() so that the Python script is always - called. -- Fix handling of pool,PoolId, and storage in ua_output. -- Same fix in ua_status.c -- Remove required locking of resources -- Replace pthread_cond_signal() by pthread_cond_broadcast() - hoping to fix the /lib/tls hang problems (lost signal). -- Move resource locking seaching from parse_conf.c to res.c - in src/lib. -- Modify end of volume handling so that fixup_... does not - redo what block.c has already done -- writing Vol info to - DIR. This fixes a bug with bad numbers of files on a tape - when it filled as reported by Peter. -- In release_device() do not update the DIR on the Volume - info if the the information was already written at the - end of the tape. -28Mar05 -- NOTE!!!! This version has a new DIR <--> SD protocol. Both - must be updated at the same time. -- Begin implementation of passing all the Storage and Device - possibilities to the SD for examination during the reserve - phase. -- Modify the reserve and acquire code in the SD to make a - job wait if the device is not available. -- Implement New Volume Each Job in DIR and pass to SD, not yet - used. -- Remove init/update of the Device resource in DIR -- Remove passing PoolId to SD and back. -26Mar05 -- Remove \a and -e from error echos in most Makefiles. -- Add more debug code when there are errors on the tape - to try to find Peter's tape problem. -- Add wait.c (oops forgot previously). -- Move all the reserve/acquire_device_for_read/append to have - only a DCR as the argument. -- Rework the reserve_device_for_append() in stored to wait - if the drive is not available. Note! This is a short - term solution. -25Mar05 -- Comment out Multiple Connections in the document. -- Move the P() and V() to subroutines so that they can be accessed - from class methods. The reference to strerror() caused problems. -- Implement new DEVICE class methods block() and unblock() that - do what was previously done in 3 lines of code. -- Implement wait_for_device(), which will wait for any device - to be released then return. This requires a new global mutex - and condition variable, and is implemented in src/stored/wait.c -- Change the code in reserve_device_for_read(), which previously - failed the job to use the new device wait code. -22Mar05 -- Apply reschedule patch to 1.37 code. -- Add copyright to title page of manual so it is clear. -- Create patch for rescheduling problem found by Ludovic. Storage - pointers were lost during rescheduling. -- Attempt to fix 2.6 rescue disk -- failed! -- Start working on adding a wait routine in the SD. -- Cleanup some old invalid doc in watchdog. -- Convert a number of references to dev->dev_name to dev->print_name(). -- Add new wait.c file to SD. -- Add a few more methods to DEVICE in SD to cleanup code a - bit -- implement a few of the methods. -18Mar05 -- Fix more print_name()s for printing device name. -- Modify open_dev to try 10 times every 6 seconds to - open the device if it gets an I/O error (meaning no - volume mounted). This gives a bit of settling in time - for an autochanger and avoids spurious messages. -- Change all yes/no to yes|no in the manual. -- Fix win32 create_file.c typo. -- Fix a typo in an error message. -17Mar05 -- Detect if fseeko exists with autoconf. If so, use it - and ftello. -- Remove old bacula-*.conf from examples directory (out - of date). -- Remove latex-fr index files from CVS. -- Rewrite code that stops reading the tape so that the - tape is marked at EOT, then once the work is done, - the EOT flag is removed. -- Flush output to file after every send in console. -- Make setting VolFiles to smaller number fatal. -- Disable Multiple Connections code. -- Add patch from user for NetBSD statvsfs() fix to - fstype.c -- Take more care with errors in acquire.c -- Don't run through dvd code in append.c if bad status - returned. -- Modify code so that an autochanger fault is fatal. -- Use dev->print_name() in more places. -- Implement dev->can_steal_lock() to simplify code. -- Make btape re-read first 10000 records on fill command. -- Check error return and fail job from fseeko and ftello - in spool.c. Don't let a -1 slip in as size. - -Changes to 1.37.7: -15Mar05 -- Apply NetBSD patch from kardel in bug 258. -14Mar05 -- Add a second job and a second client to the default - bacula-dir.conf file. -- Remove old style Include/Excludes. -- Fix ANSI labels to put EOF1 and EOF2 after each file mark. -- Add Python to SD and FD. -12Mar05 -- Implement IBM labels -- Implement EOF and EOV labels at the end of a volume. -- Fix a rather ugly problem with the PoolId not getting - passed correctly. Now the DIR passes the Pool name and - Media Type to the SD, who passes them back when requesting - the next Volume. The DIR then looks up the correct PoolId. - This takes more time, but always works, AND allows wild - card Media Types (i.e. the SD can decide). -- The DIR <==> SD protocol has changed. - -Changes to 1.37.6: -11Mar05 -- Fix scanf of PoolId in catreq to handle 64 bit Ids. -10Mar05 -- Add new ua_update.c file and move update_cmd there. -- Modify 'update slots' to obtain actual number of slots. -- Tweak autochanger code to handle new slots request. -- Modify autochanger code to lock/unlock around slots and - update slots code. -09Mar05 -- Patch the FD so that it does not issue an error message if - it attempts to restore the permissions on a Win32 drive. -- Edit 'Resource-name' (physical-name) for the device name - everywhere in the SD. -- Remove .linked.tex files in preparation for cutover to - using .tex in place of .wml. -08Mar05 -- Copy latest config.sub and config.guess from autoconf. -- Try new way of identifying drives with: - 'resource-name' (physical-name) - More work need to a complete conversion. -07Mar05 -- Rework some of the autochanger data so that the DIR has - the number of drives. -- Modify the way the Device info is returned so that it comes - back as a special message type and can be sent anytime the - Device status changes. -- Copy the change name and changer command into the device - record if none is specified. -- Require the change command and changer name to be specified in - and AutoChanger resource. -- Force all the Media Type records of all devices in an Autochanger - to be the same. -06Mar05 -- Add new 'run' command to Job resource in DIR. This permits - cloning a job as many times as you want. -- Pass PoolId to SD on Query request. It is now used in the - Find_media catalog request. -- Reworked the Device resource in the DIR. Eliminated num_waiting - and use_count, but added max_writers, reserved, and PoolId. -- This DIR is nolonger compatible with previous SDs. -- Add since and cloned keywords to the Console run command - to support cloning. -- Implemented store_alist_str() to allow multiple string items - to be specified in a .conf file. -- Added %s (since time) to Job code editing. -- Reworked reserving drives in the SD. It now does it much simpler - and correctly. -05Mar05 -- Integrate HP-UX patch from Olivier Mehani -- Fix FD job.c to test correctly for no level. - -Changes to 1.37.4: -04Mar05 -- Change Developers to Developer's Guide as requested by Michael. -- Fix developers link in manual -- Add additional dcr changes in SD to allow multiple dcrs. -02Mar05 -- Fix a few problems with the MySQL table create in 1.37. -- Delete the new tables in the table delete files. -- Increase the number of items permitted in a conf table. -- Make Director loop over alternative Devices specified in the - Storage resource until one is reserved by SD. -- Fix storing of StorageId in Media records. -- Add AutoSelect = yes|no in bacula-sd.conf -- Add Autochanger support to Label command. -- Do not autoselect devices with autoselect set false -01Mar05 -- Implement setting DIR Storage device to Autochanger - name. -- Select first available device in Autochanger. -- Pass back actual device name used. -- Allow Query of AutoChanger. -- Modify Query to include name of AutoChanger if - Device belongs to one. -- Remove old Pool code in jobq.c -- Add Autoselect flag to query and DEVICE class (still - need Directive). -28Feb05 -- Lock autochanger script when running. -- Mark Volume not InChanger if correct volume is not - autoloaded. -- Corrected some typos in the make_xxx_tables.in files. -- Made preliminary split of pre-run and run code for each - job type. This will permit early opening of SD for reserving - drives. -- Add offline and autochanger fields to Device Query record. -- Correct pthread_mutex_init() for autochanger in SD. -- Tweak Makefile for LaTeX manual, plus add nav buttons. -26Feb05 -- Clean up drive reservation system. Add more sanity checks. -- Implement a few more methods for the DEVICE class in SD. -- Add latex directories to make clean -- move DEV_BSIZE to B_DEV_BSIZE to avoid conflicts with - certain header files (FreeBSD). -24Feb05 -- Fix an ASSERT that was triggering in stored/acquire.c - attempt to fix a bug report. -23Feb05 -- Corrected SunOs to SunOS in btraceback (user submitted). -- Applied patch from Roger Haakansson - to warn the user of defective AWKs during ./configure. -20Feb05 -- Add some changes submitted by a user for HP client build. - Not all changes accepted. -- Rework code in filed/backup.c to ease #ifdefing and make - program flow more obvious. -- Split DVD code out of dev.c into dvd.c -- Tweak #ifdefing to add back all the performance measurement - #defines in version.h -- Put most of MTIOCGET code in a subroutine to simplify the - mainline code. -- Make clean remove old CVS files -- Remove unnecessary image files from Latex directory -- Implement remaining parts of Storage DB record and - its use in the Director. -- Implement - FullMaxWaitTime, Differential Max Wait Time, and - Incremental Max Wait time in Job resource. -- Start work on SD Autochanger code. -19Feb05 -- Add back JobId index for MySQL as default -- speeds up - pruning. -- Add more database fields and fix the update scripts to - include the new items. -- Pass actual level to FD so that ClientRun editing can reflect - correct level -- ditto for job status. This makes the DIR - incompatible with older clients! -- Move jobq.c acquire resources to static subroutine so that - the code logic becomes clearer. This is in preparation for - actually using the new Device resources. -- Fix some lower case problems in sql_cmds.c reported by - Debian. -- Correct a seg fault in the SD reported by a user. Occurred - only when a high debug level was set. -- Modify init_dev() in dev.c to take JCR as first arg so that - proper error messages can be reported in next item. -- Modify the query and use device SD commands to attempt to - open the device if it could not previously be opened. -- Correct error message for Could not reserve device. -- Correct some minor details with Autochanger resource in SD. -18Feb05 -- Fix seg fault if debug level 900 set in SD. -- Truncate Win32 child return code to 8 bits. -- Remove some old lld's. - -Changes to 1.37.3: -16Feb05 -- Make another attempt at fixing the ClientRunXXX return code - bug on Win32 machines. -- Apply ua_status patch from Carsten Paeth - which enforces console ACLs in the status command for Jobs. -15Feb05 -- Fix Media LabelDate and FirstWritten to be correctly set. -- Fix deadlock in multiple simultaneous jobs. -- Fix tape 'truncation'/'number of files' after restore bug. -10Feb05 -- Ensure that correct error messages are returned when - reading an ANSI label. -09Feb05 -- Modified ANSI label code to preserve any ANSI label - already found by skipping over it rather than rewriting - it. -- Split the ANSI label code into ansi_label.c -- Do not let user relabel an ANSI labeled tape. -- Applied a patch for the console help command supplied - in a bug report. -- Added some new dev methods. Most notably was - set_eof(), which handles setting all the dev variables - when an EOF is just read. This is now used most everywhere - in the code. -07Feb05 -- Added code to detect that no files were inserted into the - tree for a restore. If a specific JobId was specified, the - user has the option of restoring everything. -- More progress in implementing 64 bit DB Ids. -- Modified the daemon start messages for RH. -- Implement update scripts for all database types. -- First cut at implementing restore directory (it will not - recurse). -04Feb05 -- OK, I think ANSI labels work. -- Added Label Type = ANSI|IBM|Bacula to Device resource in SD. - If this is set, it will force writing of the appropriate - label type. -- Added Check Labels = yes|no to Device resource in SD. If this - is set, Bacula will check for ANSI labels and accept them, - otherwise, ANSI labels will not be accepted when the tape - is first mounted. -02Feb05 -- Second cut ANSI labels. -01Feb05 -- Merge Preben's patch for ACLs and for Mac OS X resource forks. -- Some doc updates. -- Display more informative message when a device was not - found or could not be opened. -- Add the sqlite3 database scripts. -- Add some patches for 1.36.1 (note, I have now prepared - a 1.36.2 with all the patches and some new features -- - to be documented). -- Some minor doc updates. -- Add Arno's baculareport.pl script to the examples directory. -29Jan05 -- after vacation -- Add support for SQLite3 (it seems to run at 1/2 the speed - of SQLite2). Use --with-sqlite3 instead of --with-sqlite - to get SQLite3. -- Add target for running qemu to boot Rescue CDROM -- Add code to support kernel 2.6 in Rescue CDROM -- does NOT yet - boot correctly. -- Implement ANSI labels -- not yet tested. - This required changes to DB format. No upgrade script yet. - Note, more work needed to modify 'update' command to handle - changing label types, also must restrict volume name lengths - to 6 characters. -- Add new Device, Storage, and MediaType records to DB. No - upgrade script yet. -- Add MediaType to bsr file record types. Not yet used in SD. -- Permit multiple device specifications in Storage resource in - Dir conf file. -- Implement Device resources. Director requests Device resource - info from SD on startup. -- Note!!!! DIR->SD incompatible with previous versions. -- Remove multiple Storage definitions in Job resource. One can - still specify multiple Storage resources, but they all go into - a single alist, and imply sending data to each Storage daemon - simultaneously. -- Implement Device query command between DIR and SD. -- Allow DIR to 'reserve' a Device. It will then be acquired - when the FD connects to the SD. -- Turn all DIR resources into classes, and implement a few class - methods -- more to come. -- Turn DEVICE in SD into a class, and implement a number of inline - class methods -- more to come. -- I had serious problems with ACL errors on my Laptop, and so had - to add the following patch: - @@ -181,7 +181,7 @@ - } - /***** Do we really want to silently ignore errors from acl_get_file - and acl_to_text? *****/ - - return -1; - + return 0; - } -- Added edit_int64() -- Reworked and tested a bit the htable routines. -- Major changes to SD acquire.c -- DIR can now reserve devices. Needs - lots of testing!!!! -- Made a special state code for DVD -- this simplifies the logic - of the code, but I probably broke it. Testing needed!!!! -- Add AutoChanger resource to SD, but not yet used. - -Changes to 1.37.2: -12Jan05 -- Integrate Preben 'Peppe' Guldberg 's - acl patch. Fix case where configured but no ACL exists. - Rework calling arguments to be shorter and positioned - more typically in Bacula usage. -11Jan05 -- Fix scripts/bacula.in to have awk on an environment variable - and add comments for Solaris users. -- Turn off inet_aton in src/lib/address_conf.c for Win32 -- Add new files to win32 build and eliminate a compiler warning. -- Add sample DVD Device resource to bacula-sd.conf -08Jan05 -- Integrate Nicolas' patch for direct DVD support. -07Jan05 -- Fix fstype error returns. -- Apply Preben's cleanup.patch which puts back much of the - cleanup code in src/filed/restore.c -06Jan05 -- Apply all of Preben's patches, but revert to old backup.c - and old restore.c in filed. Also turn off code in new - acl.c because of errors. The new code, when fully implemented - moves platform specific code into acl.c. - One of the patches also implements WildFile and WildDir -- thanks. -01Jan05 -- Implement Python in the SD (no events yet though). -- Fix some typos in the previous commit. -30Dec04 -- Enhance CDROM boot to include some documentation at boot time. -- NOTE!!!!! The CDROM will not boot 2.6 kernels because the - boot sequence has changed significantly. Updates to come - later. -- Add memtest option to CDROM boot. -- Include Nicolas' changes to fix llist JobMedia records. -- Make sure that ClientRunBefore/After messages from the program - are terminated with a newline. Add strerror to output error - messages. -- Return program exit status code in Win32. -29Dec04 -- Add memtest86 to Bacula Rescue disk -- Enhance Rescue disk startup screen -24Dec04 -- Move some variables to eliminate Solaris 2.6 compiler warnings. -- Fix the seg fault at the end of a job in the FD when using - old style include/excludes. -22Dec04 -- Apply Preben's ACL patch. -- Integrate Preben's restore patch. -- Integrate Preben's verify teaks. -- Fix doc/latex/Makefile to copy/remove .eps files when building - html and web outputs. -21Dec04 -- Fix Bacula so that it does not exit if there is a syntax error - in its conf file during a reload command. Bug 182. -- Apply fixes suggested for old Solaris networking. - Fixes bug 190. -- Apply Preben 'Peppe' Guldberg - three patches that clean up white space: - ws.patch.02.strings: - Breaks strings that span lines into concatenated strings. I am not sure - if you like this one. Other code works with concatenated strings, though. - ws.patch.03.trailing: - This removes trailing whitespace. No changes resulted from this for - my setup. - ws.patch.04.leading: - This replaces space runs at the start of line with tabs. No changes - again. -- Fix overriding storage specification to be done - through a subroutine. -- Fix autoconf so it runs with FC3. -- Add Python4.3 to configure search paths. -- Always copy and delete storage definitions into jcr. -- Check that VolumeName supplied by Python is valid. - Return 0 if not. -19Dec04 -- Fix undefined in non-Python build. -- Update rescue disk to include mkinitrd -- Fix umount_drives in rescue disk (only one arg to umount) -- Ensure that if SD is manually set in Console, it is used. -- Put generate_event on pointer and plug it in init. This - permits using it in /lib -- Correct despooling size reported to be Job specific rather - than for the whole drive. -18Dec04 -- Fix bug 207. jcr use count off by one when manually - scheduling jobs. -- Remove FNMATCH test in configure.in and always use - the one in our library to get the FN_CASEFOLD GNU - extensions on all platforms. -- While using the rescue CDROM after my computer would not - boot, I realized that it would be very useful to have - a umount_disks. So, it is not implemented, along with - updates to the READMEs and some minor tweaks. -- Moved mounting the CDROM in the rescue boot from /cdrom - to /mnt/cdrom (more standard location). -- Reboot in CDROM rescue should now work -- requires -d - option (no write) to work. -- Hopefully fixed all the IPV6/4 problems and buffer - problems with networking in lib. Bugs 190 and 204. - Cleaned up a lot of #ifdefing problems by using routines - in address_conf.c -17Dec04 -- Apply Preben 'Peppe' Guldberg - alist fix patch. -- Remove duplicate code from chksum.h (mentioned by Preben). -13Dec04 -- Integrate Tim Oberfoell patch to ACLs - to handle both the 'standard' and 'default' ACLs. -12Dec04 -- Integrated Preben 'Peppe' Guldberg - three cleanup patches (btest, verify, find). -- Integrated Preben 'Peppe' Guldberg - three cleanup patches (backup, chksum, and verify) -09Dec04 -- Integrated Preben 'Peppe' Guldberg - patch to avoid doing MTIOCGET on OSes that do not support - it such as OpenBSD. -- Integrated Preben 'Peppe' Guldberg - patch to add filesystem type matching to FileSets in the - Options resource. -- Integrated Preben 'Peppe' Guldberg - patch to add Mac OSX resource fork support (save/restore) - to Bacula -- HFS Plus support. -- Add FileSet to client Job listing query. -06Dec04 -- Integrated Preben 'Peppe' Guldberg - patch to backup directories skipped (due to no file system - changes or no recursion), and to add a slash to the end - of the directory name during the match process. -- Implement Jamie ffolliott - patch to dird_conf.c that enables Multiple Connections and - fixes a typo in show. The rest of his patch awaits my suggested - changes. -05Dec04 -- Implement run command in Python -04Dec04 -- Implement conversion of the manual, and some minor - tweaks to the script tags. -- Apply a patch supplied by Preben 'Peppe' Guldberg that implements - ignore case in wild cards and regexes. -- Fix a truncated line in the above patch due to my cut and paste. -03Dec04 -- Fix it so that the InChanger flag is only changed for Volumes - in the same Pool. -- Add PIDOF configuration path and apply to bacula.in -- Add user supplied patch to add inet_aton() of old Solaris - systems. -- Require pools to match before allowing multiple simultaneous - accesses to same storage resource. -- Add patch supplied by Martin to correct buffer overrun in - bsnprintf() with no library snprintf(). -02Dec04 -- Apply user supplied patch that implements No Hard Links. -- Document Python interface -- Add hardlink keyword patch supplied by David R Bosso -01Dec04 -- Fix non-python prototypes in dummy routines. -- Add python 2.3 to config search list (user submitted patch) -- Add JobStatus to Python variables. -28Nov04 -- Add 'python restart' command in Console. -- Make built-in variables table driven. -- First cut of Python Events for Bacula. Director only. - StartJob, EndJob, NewVolume events. - - - Technical notes on version 1.37 - Nicolas Boichat - -General: - -Changes to 1.37.*: -26Oct05 - - dvd.c: update VolParts when writing the last part. -19Oct05 - - configure: add check for dd, remove check for df - - block.c:do_dvd_size_checks: Check we are writing to a dvd before doing tests - (reported by David Raine on the list, '[Bacula-users] LTO drive - End Of Volume error'). - - Update bacula-sd.conf.in to use dvd-handler correctly. - - dvd.c:dvd_write_part: Increase timeout when writing the first part (see the code for - more details). -18Oct05 - - Modify .backups command to get a fileset parameter (fix bug #444). -17Oct05 - - Fix bug when recycling DVD devices (append flag was removed). - - Add tests for dvd+rw-format in configure script. - - scripts/dvd-handler: Reformat DVD-RW when needed. This needs dvd+rw-format. - - Add patch for dvd+rw-tools in patches dir (this should probably be elsewhere). -16Oct05 - - Remove scripts/dvd-freespace and scripts/dvd-writepart, as they are now - merged into scripts/dvd-handler. Note: Documentation needs to be updated. - - scripts/dvd-handler: 'zero' brand-new DVD+/-RW to fix a problem with some - DVD-writers, thanks to Arno Lehmann for reporting this, and providing the - way to fix it. - - new scripts/dvd-handler. Note: it also needs a patched version of dvd+rw-tools. - - new scripts/dvd-freespace. Note: it needs a patched version of dvd+rw-tools. - - dvd.c:dvd_write_part: Don't write empty part. (Fix 4GB crossing bug reported by Arno Lehmann) -14Oct05 - - dvd.c:dvd_write_part: Use part_size and not max_part_size when setting write timeout. - - dvd.c:do_mount_dev: When checking if the DVD is mounted, do not count ., .. and .keep (needed on Gentoo). -15Aug05 - - Convert dvd-writepart to Python. - - Increase delay from 3 seconds to 5 seconds between SIGTERM and SIGKILL when - killing external programs. -13Aug05 - - Add gettext macros in autoconf/gettext-macros. - - Modify how localedir is set in configure.in. - - Remove setlocale check (useless). -10Aug05 - - Mark translatable strings in all source files. -08Aug05 - - Create French and Italian translation files (fr.po, it.po). - - Add support for translation in configure and Makefiles. - - Update autoconf/aclocal.m4 so it is automatically created with aclocal - (Note: autoconf/gnome-macros is not used anymore, it may be removed). -30Jul05 - - Fix src/lib/bpipe.c:run_program and run_program_full_output to detect if the watchdog - killed the program, and return an error if it is the case. -26Apr05 - - Modify parse_config to get a LEX_ERROR_HANDLER as a parameter - - lex_open_file now returns NULL if the file can't be opened. All calling functions have - been adapted. - - Remove set_exit_on_error function -07Apr05 - - Fix 'unknown device type' problem with DVD devices. - - Fix crash when there is no media in the DVD drive. -09Jan05 - - Update the documentation and ReleaseNotes. -05Jan05 - - Add FreeSpaceCommand in Device (SD configuration file) and implement it. - - Some modifications (again) on how guessed volume names are handled (now it should work). - - Part files on the hard disk are removed if they are empty. -04Jan05 - - Major fixes on how guessed volume names are handled. - - Minor fix in src/stored/append.c. - - Replace, when possible, POOLMEM by POOL_MEM in the new code of src/stored/dev.c. - - New script, scripts/dvd-freespace, which gets the free space available on a writable DVD. -03Jan05 - - Add WritePartAfterJob directive in Job resource (Director) - - Add WritePartAfterJob directive in Schedule Resource (Director) - - Implement these new directives -02Jan05 - - New function, open_guess_name_dev in src/stored/dev.c, which tries to guess the volume - name of a mounted device, so the label can be read. - - New script, scripts/dvd-writepart, which write parts to DVD+/-R(W). - - Removed WriteFirstPartCommand directive in Device (SD configuration file). - - Use readdir_r instead of readdir (src/stored/dev.c:open_guess_name_dev). -01Jan05 - - Add RequiresMount, MountPoint, MountCommand, UnmountCommand directives in Device (SD configuration file). - - Implement these directives (volumes can now be restored from a manually written DVD). - - Add WriteFirstPartCommand, WritePartCommand directives in Device (SD configuration file). - - Implement these directives (DVD writing now works). - - New function run_program_full_output in src/lib/bpipe.c. - - Lots of bugfixes and cleanups in the new code. -29Dec04 - - Add VolParts field in Media table - - Add MaximumPartSize directive in Device (SD configuration file) - - File Volumes can now be splitted in multiple files ('parts') - - Fix SQL error in sql_list while doing 'llist jobmedia' +Release 1.38.11 (28Jun06) released 28JunO6 diff --git a/bacula/Makefile.in b/bacula/Makefile.in index 80fceeae4c..a6dc267e96 100755 --- a/bacula/Makefile.in +++ b/bacula/Makefile.in @@ -189,7 +189,7 @@ Makefiles: chmod 755 make_catalog_backup delete_catalog_backup) clean: - @for I in ${all_subdirs}; \ + @for I in ${all_subdirs} src/win32; \ do (cd $$I; echo "==>Entering directory `pwd`"; ${MAKE} $@ || exit 1); done @(cd platforms; echo "==>Entering directory `pwd`"; ${MAKE} $@ || exit 1) @$(RMF) *~ 1 2 3 core core.* config.guess console.log console.sum diff --git a/bacula/ReleaseNotes b/bacula/ReleaseNotes index e839a661b3..c4f398b287 100644 --- a/bacula/ReleaseNotes +++ b/bacula/ReleaseNotes @@ -1,807 +1,192 @@ - Release Notes for Bacula 1.38.11 - - Bacula code: Total files = 423 Total lines = 139,479 (*.h *.c *.in) - -Warning for version 1.38.8 and greater: -- The Windows FD no longer automatically folds the case - in wild-card comparions. To get the same behavior as before, - you must explicitly use "Ignore Case = yes" in your FileSet. -- Backslashes are no longer permitted in File directives - (typical error for Windows users), unless the string is - enclosed in double quotes, in which case, the backslashes - must be doubled. - -Major Changes for 1.38.11 -- Add test for IRIX64 as OS -- Fix scheduler hang during clock shift (due to missing unlock()) -- Minor tweaks to bregex.c -- Fix to block.c to correctly check for DVD number of parts. -- Fix to dev.c to permit DVD seeking in spool file. Corrects - label rewriting problems. -- Clarify license for techlogs (GPL). I consider them "part" of - the source code of Bacula. -- Use FDL license for developer's manual, French translation, German - translation, bimagemgr manuals (same as the main manual), and - the web site. - -New features for 1.38.11: -- None - -==================================================================== - -Major Changes for 1.38.10: -- This is a primarily a bug fix release, with the following bugs being - resolved #570, 609, 611, 613, 614, 617 as well as other bugs not - reported in the bugs database. See below for details. -- The bconsole "reload" command should now work properly in virtually - all situations thanks to the efforts of a number of people (Eric, - Christopher, and myself). -- There is an untested fix to eliminate the scheduling problems (either - no job run or the same job run twice) during sudden clock shifts (daylight - savings time change). -- The manual has been released under the GNU Free Documentation License (FDL). - The major difference is that this removes the prior restriction on - commercial reproduction of the manual. -- Fixed a race condition (thanks to Christopher) on dual processor machines - that caused jobs to block when starting with the SD. - -New features for 1.38.10: -- None - -Fixes for 1.38.10: -08Jun06 -- Modify setting ACLs to suppress error message if the file is a - symbolic link since the file linked to may not yet be created, - and symbolic links really should not have attributes ... -06Jun06 -- Complete implementation of acl.c error message during restore. - During backups, errors getting acls are silently ignored, as was - previously the case. -04Jun06 -- Modify configure.in to check for typeof(). -- Better detection of postgresql installation if pg_conf works. -- Fix RescheduleTimes = 0 bug (should not reschedule). -- Down port from 1.39: fixes for reload, autochanger error messages, - scheduler fixes for reload and day light savings change, -01Jun06 -- Implement partial error messages for src/filed/acl.c -- Fix return code to fail when doing update barcodes and - Pool resource is not found. This previously caused Volumes - to be labeled as cleaning tapes. -- Small updates to projects file. -26May06 -- Prevent DVD code from rewriting label if the device cannot be - opened read/write. -- Fix Dir/SD run race in migrate.c, verify.c, and restore.c -- Update projects file. -24May06 -- Applied patch posted by Jaime Ventura to bug #570 to correct failure - of restarted jobs to complete (due to a destroyed pthreads conditional - variable used by the message thread). -- Fixed bug #619 where Bacula would not restart jobs with MaxRestartTimes - set to zero. -- Apply patch from John Goerzen bug #611 to fix bad manual links in the code. -- Apply patch from Rudolf Cejka bug #614 to removed trailing - colons in query.sql file. -- Apply patch from Rudolf Cejka bug #613 to correct prunning of files - not to create orphans. -- Apply patch from Rudolf Cejka bug #617 to use mtime instead of ctime - in restore long listing. -- Apply patch from Rudolf Cejka bug #609 to use MarkId in verify.c instead - of incorrect MarkedId. -- Apply patch from adioso bug #616 to correct text in manual (replace - Director with File daemon). -21May06 -- Move DIR "run" command to SD before starting the message thread - as suggested by Cristopher Hull to avoid a race deadlock from - two threads using the bsock structure. -- Modify LICENSE to correct some problems pointed out by Debian. -05May06 -- Correct EOF with no \n lex.c problem. -- Add additional INFO messages if autochanger cannot be used. -- Add Eric Bollengier's lex error handler fix, which corrects most - of the reload problems. - - -New features for 1.38.9: -- A "Dir Status" button in the Gnome console. - -Fixes: -This is mainly a bug fix release containing a collection of - minor fixes for 1.38.8. -- Added code to strip backslashes from Windows filenames during - a restore. -- Corrected Win32 License to use the correct LICENSE file. -- Corrected the buffer count and bytes reported in the heap - statistics. -- Fix a number of incorrect strings marked for translation, when - they should not be (e.g. commands). -- Fix StartTime bug reported for ClientRunBeforeJob and RunBeforeJob - Patches supplied by user in bugs #608 and #599. -- Use most recent of st_ctime and st_mtime in restore tree DIR - listing. This fixes some problems with Win32 printing incorrect - values. -- Correct the clock shift comm time calculation between the DIR - and the FD. It was added rather than subtracted. -- Strip all backslashes in filenames to be restored on Win32 - machines -- the names should all be in Unix format, and if - there are any backslashes it is most likely due to an improper - FileSet definition, and the files will not otherwise be - restorable. -- Delete src/win32/License.txt -- Modify installer to install LICENSE -- Add back ua_label barcode fix from Rufolf Cejka. -- Add 'Dir Status' button to the gnome console. -- Display heap stats in Storage daemon without debug level. -- Implement using pg_config for finding PostgreSQL files. - Fixes bug #600. Patch supplied by user. -- Remove -t option from mktemp in mtx_changer.in and use - working directory. Fixes bug #578. -- Update job start time after the any run before job so that - files created by the script are only backed up once. Fixes - bug #599. -- Strip trailing newline only from filenames entered in - the restore command when reading a file. This permits - the user to enter filenames with trailing spaces. Fixes - bug #549. The user supplied a patch that I modified slightly. -- Use the most recent time (st_mtime, st_ctime) in the dir - command in restore. This gives the user a better idea of what - the newest file really is. This fixes bug #574. The fix - was suggested by the user. -- Remove the -f option from the chown in Makefile.in for more - portability. -- Change setting the group in Makefile.in to use chgrp for - more portability. -- Implement a Bacula read/write lock for Python rather - than using the Python lock to avoid recursive problems. -- Correct the uninstall directory names in filed/Makefile.in - as reported by a user. - - -New features for 1.38.8: -- Regex, RegexFile, and RegexDir are now implemented in the - Win32 FD. However, this is new experimental code that is - largely untested. It may not work, it may cause memory - leaks, or it may even crash the FD. Please test carefully - before using. -- On Linux/Unix systems there are two new programs, bregex - and bwild that allow you to test regular expressions and - wild-cards. These programs are installed with the other - binaries. They are not available on Win32 systems. - -Fixes: -- See below. - -New Features from pre-1.38.8 releases: -- For autochanger get Scratch tape if in autochanger if - no appendable Volumes are available. -- New virtual disk autochanger. See scripts/disk-changer for - documentation. -- New optional Device resource directive in SD. 'Device Type =', - which may have types: File, DVD, Tape, or FIFO. This can - be useful for writing DVDs on FreeBSD where Bacula cannot - correctly detect the DVD. -- Faster restore tree building and uses less memory. -- The command line keyword job (or jobname) now refers to the - name of the job specified in the Job resource; jobid refers - as before to the non-unique numeric jobid; and ujobid refers - to the unique job identification that Bacula creates for each - job. -- The job report for Backups has a few more user friendly ways - of displaying the information. -- The wait command can now be made to wait for jobids. -- New command line keywords are permitted in update volume. They - are Inchanger=yes/no, slot=nn. -- Add two new console commands: enable job= and - disable job=. When a job is disabled, it will not - be started by the scheduler. If you disable a job and restart - Bacula or reload the .conf file, the job will be re-enabled. -- Add a new Job resource directive "enable = yes|no". -- There is a new program named regex in the tools directory that - allows you to try regular expressions on your system. - -Major bug fixes: -- Fix race condition in multiple-drive autochangers where - both drives want the same Volume. -- Do not allow opening default catalog for restricted console - if it is not in ACL. -- Writable FIFOs now work for restore. -- ACLs are now checked in all dot commands. -- Multiple drive autochangers and multiple different autochangers - should now work correctly (no race conditions for Volume names, - update slots use correct StorageId). -- Fix bug where drive was always reserved if a restore job failed - while in the reservation process. - - -Minor bug fixes: -- See below: - -Release 1.38.8 (14Apr06) -14Apr06 -- Correct Makefile for Solaris /bin/sh -- Correct mtx-changer.in for Solaris /bin/sh -- Abort if a conf resource does not have a Name = -12Apr06 -- Change the name of the regex program to bregex. -- Add the bwild program to the tools directory. It is similar - to the bregex program. -- Implement create bregex.h and bregex.c in src/lib from the - Python regexp program. -- Use the new bregex.c to implement Regex expressions on Win32. -11Apr06 -- Modify Makefile to change the permissions on Working Directory - to 770 if the directory is created. -- Do not fail the Makefile if changing the permissions or - owner/group on WorkingDir fails. -- Correct the old recycling algorithm so that Scratch Volumes - are selected when looking for a Volume in the changer. -- Correct a typo in the Verify SQL reported by Joe Park. -10Apr06 -- Remove automatic case folding on Windows FDs. You must - explictly use the 'Ignore Case = yes' option. -- Remove the code added to 1.38.6 and 1.38.7 that pulls a - scratch volume in an Autochanger early in the 'recycling' - algorithm. -08Apr06 -- Tweak license to include Microsoft restrictions. -- Move mysql.reconnect to after real_connect(). Thanks to - Frank Sweetser for the patch. -- Disallow a backslash in a File = directive (Windows junk) - unless the string is quoted. -- Apply Eric's patch to ua_label.c so that daemon protocol - is not translated. - -Release 1.38.7 (06Apr06) released 07Apr06 -06Apr06 -- Remove timed wait for VSS on Win2K3 as it is not yet - implemented. -- Correct bacula.in script to reference bacula-ctl-xx in the - sysconfig directory rather than the bin directory. - -Release 1.38.6 (28Mar06) released 29Mar06 -28Mar06 -- Back port from 1.39 fixes to lib/jcr.c to use foreach_jcr() - and new jcr chain locking. -26Mar06 -- Fix a long standing bug in the bacula start/stop scripts. -- Attempt to add the new bacula-ctl-* files to the rpm. -- Switch to using typeof() for list traversing to avoid - as many FC5 g++ compiler warnings as possible. -25Mar06 + Release Notes for Bacula 1.39.18 + + Bacula code: Total files = 448 Total lines = 150,330 (*.h *.c *.in) + +Warning for version 1.39.18 and greater: +- If you have an old pre 1.39.18 database, you must upgrade it using + the upgrade_bacula_tables script. +- You *should* be able to use 1.38.x FDs with version 1.39.18 Director + and SD providing you do not use any of the new features (runscript, + data encryption). However, we do not recommend this, nor guarantee + that it works. +- The restore command no longer uses the MediaType as the primary method + of finding a suitable Storage device. Normally it will select the last + device used to write a Volume. If no storage device is defined, it + will use the old algorithm which selects the first Storage resource + with the correct MediaType. +- The MD5/SHA1 hash codes kept in the database are now kept in a binary + format compatible with the rest of the world. This means that all + FileSets will be updated, and if you are running verify jobs, you *must* + do an InitCatalog. Also, authentication uses the new algorithm by + default, but *should* accept connections from older components (FD) using + the old non-compatible algorithm. +- The --mandir ./configure option now points to the top level man + directory. The man files will be installed under mandir/man8 and + mandir/man1 as appropriate. +- The "Accept Any Volume" directive has been removed. It was never + implemented. Bacula will always accept any valid tape that is in + the drive for appending. + + +New features for 1.39.18: +- Bacula and bextract can now extract non-portable Win32 data to + any client (including Unix/Linux clients). Of course, in doing so, + the Microsoft specific permissions and ACLs will be lost. Thanks + to Thorsten Engel for this code. +- The 260 character limitation in Win32 paths is now eliminated thanks + to Thorsted Engel. +- The examples directory has a new bacula_mail_summary.sh file that + creates a single email summary of any number of jobs. Submitted by + Andrew J. Millar. +- SunOS ACLs should now work thanks to a patch from David Duchscher. +- The database Id records should be 32/64 bit independent now. 64 bits + can be enabled by changing one define, but this has never been tested. +- Apply days keyword patch from Alexander.Bergolth at wu-wien.ac.at + If this patch is applied, the number of days can be specified with + "list nextvol days=xx" + or + "status dir days=xx" + My use case is to be able to preview the next scheduled job (and the + next tape to be used) on fridays if there are no scheduled jobs during + the weekend. This patch was probably back ported to 1.38.x +- Data encryption done in the Client is now supported due to code + submitted by Landon Fuller. +- Add nagios plugin to the examples directory. Submitted by + Christian Masopust. +- Modify most restore error messages to be queued so that they + appear at the end of the job rather than mixted with the restore + listing where they could be "lost". +- Apply patch supplied by user (slightly modified) to fix + correct detection of holes in block devices and FIFOs. + Bug # 506. +- Added a report.pl program to the examples directory from Jonas Bjorklund. +- Add enable/disable job=. This command prevents + the specified job from being scheduled. Even when disabled, + the job can be manually started from the console. +- Add two new queries to query.sql provided by Arno. One + list volumes known to the Storage device, and the other + lists volumes possibly needing replacement (error, ...). +- Implement new code for changing userid and group at startup. This + should get Bacula into the correct groups. +- Implement support for removable filesystems. +- Transfer rates are now presented in a more readable format thanks + to a user submission. +- SD is now aware of what volumes are mounted. More information is printed + in the Status report. +- The Pool Maximum Volumes directive is now respected in all places. +- A Storage device can now be specified in a Pool resource. It will override + all other Storage specifications. +- Most but not all directives accept true/false in place of yes/no. +- Integrate patch from Karl Hakimian that reads JobIds, FileIndexes + from a database table for restore. +- There are a number of new tables. Some such as the Location table are + designed for user use in doing Volume Management software. +- Fix Maximum Changer Wait, Maximum Open Wait, Maximum Rewind Wait to + accept time qualifiers. +- Implement jobuid to replace old usage of job in keywords as + suggested by Eric Bollengier. +- Apply patch for enhancing wait from Eric Bollengier. On can now: + wait (wait for all jobs to stop) + wait jobid=nn + wait jobuid=unique id + wait job=job-name +- Implement write variables for Python to set Priority (anytime), and + Job Level, only during JobInit event. +- Use the keyword ujobid to mean the unique job id; job or jobname + to mean the Job name given on the Name directive, and jobid to + be the numeric (non-unique) job id. +- Allow the SD to use multiple drives during a backup/restore (only + one at a time). This is not well tested. +- Integrate addition of line count limitation to bsmtp -l from + Sebastian Stark - Split the bacula start/start script into four files: bacula -- starts and stops calling other scripts bacula-ctl-dir -- starts/stops the director bacula-ctl-fd -- starts/stops the File daemon bacula-ctl-sd -- starts/stops the Storage daemon -- Create datestyle fix for PostgreSQL. Fixes bug #574. -- Correct editing of JobId from int to int64 in fd_cmds.c -- Eliminate FileSet name race with bash_spaces() and multiple - threads by bashing in a local. -- Fix error return from 'use storage' to print a correct error - message rather than nothing. -- Correct false re-read last block error message when two jobs - are simultaneously writing at the end of a tape. -- Simplify exit conditions in the reserve.c code to avoid - possible non-release of reservation_lock(). -- Suffle lock order in reserve to avoid deadlock between - reservation lock and device mutex. -- Add Thorsten's VSS timeout code to 1.38 branch. -- Initialize jcr mutex before first use. Thanks to Thorsten for - tracking this down for me !!!! as it broke the Win32 build. -- Integrate addition of line count limitation to bsmtp -l from - Sebastian Stark -- Implement regex test program in tools directory. -- Attempt to fix time problem with bsmtp with foreign langs. -- Add strip_trailing_newline() submitted by user. - -Release 1.38.6 beta6 16Mar06 -- Fix bug #537 to allow arbitrary time to mount a volume for - restore, if polling is turned on. -- Disallow multiple storage specifications for a job. Should fix Arno's - problem. -- Add back a missing store of poolid in jr.poolid. -- If dir_user or dir-group is specified in ./configure apply it to - the working-dir. Fixes bug #533. -- If rescheduling a job cancel the previous incarnation with the SD. - Fixes bugs #566 and 557. -- Fix bug #567 do_message() definition type conflict. - -Release 1.38.6 beta5 14Mar06 -- Add more jcr methods and make mutex and use_count private. -- Create lock/unlock methods for jcr. -- Fix PostgreSQL bug doing sql_data_seeek() by explicitly reading - records to get to seek position. -- Integrate patch from bug #561 to correct conio.c signal definitions. -- Fix Rescheduling failed Jobs. Ensure that SD message thread - terminates correctly by doing pthread_kill(). Do not destroy - SD cond wait variable between executions of the job. Use local - mutex for cond variable to avoid blocking jcr chain. Fix poor - use of jcr use count in jobq.c for restarted jobs. -- Fix obsolete usage of foreach_dlist() to use foreach_jcr() in - lib/jcr.c -- prevents locking the jcr chaing. -- Apply patch from bug #564, which corrects listing volumes with - multiple autochangers. Apply same fix to next volume list. -- Fix bug #562 where restore bootstrap file is not unique. -- Use new routine lock_reservations() to lock the reservations - system, and call it while looking for a volume in askdir.c. - This could possibly fix bug #543. -- Stop SD command loop if job is canceled. - -Release 1.38.6 beta3 4Mar06 -04Mar06 -- The po files should now be current. -- Fix new sql_use_result() code to properly release the - buffers in all cases. -- Convert to using new Python class definitons with (object). -- Use the keyword ujobid to mean the unique job id; job or jobname - to mean the Job name given on the Name directive, and jobid to - be the numeric (non-unique) job id. -- Allow listing by any of the above. -- Add the user friendly job report code for reporting job elapsed time - and rates with suffexes. -- Add Priority and JobLevel as Python settable items. -- Use TEMPORARY table creation where the table is created by - Bacula. -- Add new code submitted by Eric for waiting on specific jobid. -- Add ACL checking for the dot commands. -- Fix restore of writable FIFOs. -- Fix a bug in bpipe where the string was freed too early. - -26Feb06 -- Fix bug reported by Arno listing blocks with bls -- Update the po files at Eric's request. - -Release 1.38.6-beta2 25Feb06 -25Feb06 -- Add sql_use_result() define. - -Changes to 1.38.6-beta1 -- Don't open default catalog if not in ACL. -- Add virtual disk autochanger code. -- Add user supplied bug fix to make two autochangers work - correctly using StorageId with InChanger checks. -- Correct new/old_jcr confusion in copy_storage(). -- Remove & from Job during scan in msgchan.c -- probably - trashed the stack. -- When getting the next Volume if no Volume in Append mode - exists and we are dealing with an Autochanger, search - for a Scratch Volume. -- Check for missing value in dot commands -- bug fix. -- Fix bug in update barcodes command line scanning. -- Make sure Pool Max Vols is respected. -- Check that user supplied a value before referencing - it in restore -- pointed out by Karl Hakimian. -- Add Karl Hakimian's table insert code. -- Don't ask user to select a specific Volume when - updating all volumes in a Pool. -- Remove reservation if set for read when removing dcr. -- Lock code that requests next appendable volume so that - two jobs to get the same Volume at the same time. -- Add new Device Type = xxx code. Values are file, tape, - dvd, and fifo. -- Preserve certain modes (ST_LABEL|ST_APPEND|ST_READ) across - a re-open to change read/write permission on a device. -- Correct a misplaced double quote in certain autochanger - scripts. -- Make make_catalog_backup.in a bit more portable. -- Implement Karl Hakimian's sql_use_result(), which speeds - up restore tree building and reduces the memory load. -- Correct a number of minor bugs in getting a Volume from - the Scratch Pool. -- Implement additional command line options for update Volume. -- Don't require user to enter a Volume name when updating - all Volumes in a pool. - -Release 1.38.5 released 19Jan06: -- Apply label barcodes fix supplied by Rudolf Cejka. -- Modify standard rpm installation to set SD group to disk - so that SD will by default have access to tape drives. -- Allow users to specify user/group and start options - for each daemon in /etc/sysconf/bacula file. - -Changes to 1.38.4 released 17Jan06: -- The main changes are to the Director and the Storage daemon, - thus there is no need to update your File daemons. Just the - same, I do recommend running with the release 1.38.3 Win32 - FD or later. -- Add two new queries to query.sql provided by Arno. One - list volumes known to the Storage device, and the other - lists volumes possibly needing replacement (error, ...). -- Add periodic (every 24 hours) garbage collection of memory - pool by releasing free buffers. -- Correct bug counting sized (for display only) in smartall.c -- Print FD mempool stats if debug > 0 rather than 5. -- Correct bug in alist.c that re-allocated the list if the - number of items goes to zero. -- Move the reservation system thread locking to the top level - so that one job at a time tries all possible drives before - waiting. -- Implement a reservation 'fail' message queue that is built - and destroyed on each pass through the reservation system. - These messages are displayed in a 'Jobs waiting to reserve - a drive' list during a 'status storage='. Note, multiple - messages will generally print for each JobId because they - represent the different problems with either the same drive - or different drives. If this output proves too confusing - of voluminous, I will display it only when debug level 1 - or greater is enabled in the SD. -- Add enable/disable job=. This command prevents - the specified job from being scheduled. Even when disabled, - the job can be manually started from the console. -- During 'update slots' clear all InChanger flags where the - StorageId is zero (old Media records). -- Fix autochanger code to strip leading spaces from returned - slots number. Remove bc from chio-changer. -- Back port a bit of 1.39 crypto code to reduce diffs. -- Fix first call to autochanger that missed close()ing the - drive. Put close() just before each run_program(). Fixes - Arno's changer bug. -- Add PoolId to Job record when updating it at job start time. -- Pull in more code from 1.39 so that there are fewer file - differences (the new ua_dotcmds.c, base64.h, crypto.h - hmac.c jcr.c (dird and lib) lib.h md5.h parse_conf.c - util.c. Aside from ua_dotcmds.c these are mostly crypto - upgrades. -- Implement new method of walking the jcr chain. The - incr/dec of the use_count is done within the walking - routines. This should prevent a jcr from being freed - from under the walk routines. - - -Changes to 1.38.3 released 05Jan06: -- This is mainly a bug release fix. In addition, the multiple drive - reservation algorithm has been rewritten. -- In addition, the method of handling waiting for tapes to be - mounted and the mount messages has been modified. - (the above two items are a potential source of problems). -- Simplify code in askdir.c that waits for creating an appendable - volume so that it can handle multiple returns from the wait code. -- Modify the wait code to permit multiple returns. -- Return a zero when 'autochanger drives' is called and - it is not an autochanger. -- Make rewind_dev() a method taking a DCR as an argument. - This permits closing and reopening the drive if the - rewind fails as happens if the drive was loaded while the - file descriptor was open. This refreshes the file descriptor. -- Remove the ST_OPENED flag and always rely on fd < 0 for knowing - if the device is open or not. This should eliminate - Arnos problem. -- Return error if reserve cannot find at least one suitable device. -- Make wait_for_sysop() return correct state information. -- Fix Win32 state file problem. write was not using compat - code. This should fix bug #500. -- Modify gui on command to set only GUI mode and not batch. -- Modify .messages command to always print messages regardless - of the mode. -- If GUI mode is on, suppress automatic printing of - You have messages. -- Modify restore command in wx-console to set gui on and to use - only .messages instead of messages. Hopefully this fixes bug - #514. -- Implement load balancing code with multiple drive autochangers. -- Rewrite reservation algorithm again. Rename variables to be - more logical, add HEARTBEAT with Director, allow cancel of - jobs stuck in reservation, add last resourt any_drive. -- Fix seg fault if user labels a drive directly bug #513 -- Remove quotes around Version as it breaks things. -- Merge in Aleksandar Milivojevic's mods to the spec file. -- Apply sparse code fix for raw drives and fifos. Bug 506 -- Thorsten fixed Unicode cd problem with wx-console bug 505. -- Correct reservation system to do a last ditch try - for any mounted volume, then anyone anywhere. -- Updates to ssh-tunnel from Joshua Kugler. -- Added a report.pl program from Jonas Bjorklund. -- Simplify the O_NONBLOCK open() code for tape drives, - and always open nonblocking. -- Do not wait for open() if EIO returned (shouldn't happen). -- Eliminate 3 argument to tape open(). -- Correct the slot # edited in the 3995 Bad autochanger unload - message. -- With -S on bscan (show progress) do not divide by zero. -- Make cancel pthread_cond_signal() pthread_cond_broadcast(). -- When dcr is freed, also broadcast dev->wait_next_vol signal. -- Remove unused code in wait_for_device. -- Make wait_for_device() always return after 60 seconds of wait. -- Use localhost if no network configured -- Eliminated duplicate MaxVolBytes in cat update -- bug 509. -- Update specs to include mysql4 define. -- Return rec->FileIndex in dcr->VolLastIndex for normal - and partial records in read_record(). This allows bscan - to get FileIndex at EOT correct. -- Fix butil.c to correctly set dcr -- fixes seg fault in bls. -- Apply patch supplied by user (slightly modified) to fix - correct detection of holes in block devices and FIFOs. - Bug # 506. -- Apply patch supplied by user (slightly modified) - to fix SD hang with multiple pools and bad client - IP. Fixes bug # 508. -- Add nagios plugin to the examples directory. Submitted by - Christian Masopust. -- Remove warning message about multiple saves of hardlinked files - from find_one.c as it can generate too many warning messages. -- Reset timeout values before select() per patch from - Frank Sweetser for problems with non-blocking sockets. -- Unlink the state file if either reading or writing it gets - errors. Hopefully this will fix Win32 exit problems. -- Get next volume from Scratch pool before creating a volume. -- Set new Pool defaults in Vol when moved from Scratch Pool. -- Remove argument from create_bacula_database for SQLite as it - caused an error. -- Fix reservation so that mutexes are properly applied. -- Rework reservation algorithm so that two drives can be used - at the same time. -- Apply days keyword patch from Alexander.Bergolth at wu-wien.ac.at - If this patch is applied, the number of days can be specified with - 'list nextvol days=xx' - or - 'status dir days=xx' - My use case is to be able to preview the next scheduled job (and the - next tape to be used) on fridays if there are no scheduled jobs during - the weekend. -- Fix font code in gnome2 console user patch. Fixes bug #501. -- Fix malformatted bnet error message that caused seg fault - fixes bug 502 -- Applied user patch to improve README.vc8 in src/win32. -- Ensure that StorageId is stored in Media record when ever possible. -- Remove old code from winservice.cpp -- Break on error in scan. -- Fix typo in signal.c -- Separate read/write DCR in SD. Add jcr->read_dcr. -- Cleanup how find_device() works. -- Remove abs() in bfile.c so that it compiles on Solaris. Bug #491. - -Changes to 1.38.2: -- Fix crash in tray-monitor when daemon disconnects. Bug #479. -- Fix bnet-server bug found on OpenBSD. Bug #486 -- Fix cancel failure bug. Bug #481 -- Fix failure when Pool name has spaces. Bug #487 -- Fix SD crash in autochanger code. Mutex failure. Bug #488 -- Fix a couple of free()s in src/filed/acl.c -- Fix memory overrun in bfile.c in building OS X resource - fork filename. Bug #489 -- Add Pool name to SD status output. -- Add Python install dir for Solaris to configure. Bug #492 - -Changes to 1.38.1: -- Corrected ACL for Solaris (David Duchscher and Attila Fulop). -- Add bacula_mail_summary.sh to examples directory. It makes - a single email summary of any number of jobs. Submitted - by Adrew J. Millar. -- Unmount command now unloads autochanger. -- Fix hang in FD (Martin Simmons) -- Fix Win98 stat() problem in FD (Thorsten Engel) -- Fix update slots which did not clear missing tapes. -- Fix autostart install for FreeBSD (user reported) -- Fix several problems with PostgreSQL scripts (Eric Bollinger) -- Critical: allow restore of the first file of non-portable Win32 backup. -- Important: with muliple concurrent jobs the autochanger could get - confused because of a missing mutex. -- Fix accessing last slot in label and update slots. -- Modify configure.in to add execute option to sqlite3 catalog - scripts. -- Create update_xxx_table_8_to_9 scripts for updatedb -- Move the -lcrypt for PostgreSQL after the PostgreSQL libs in - autoconf/bacula-macros/db.m4 as suggested by user. Fixes bug #457. -- Remove @STATIC_CONS@ from tray-monitor Makefile as suggested - by user. Fixes bug #456. -- AMD64 users see compiler bug warning below!!!!!!!!! - -Major Changes in 1.38: -- Fixed out of order Volumes in restore. -- Improved algorithm for reserving drives in multiple drive - autochangers. Autochange users MUST use the new Autochanger - resource in the Storage daemon. -- There is a new database format that is not compatible - with previous databases. You must upgrade if converting - from 1.36.x. No changes from version 1.37.30. -- The Director, Storage daemon, and File daemons are - Deamons are not compatible with prior versions. - All FDs must be upgraded at the same time. -- Support for ANSI/IBM labels. -- Faster database inserts due to combining the MD5/SHA1 into - the attributes record, eliminating one INSERT/file backed up. -- Python Event support has been added. See below for - configuration and details. The implementation is somewhat minimal, - so the functionality is not complete. The Python interface - has not been extensively tested, so please consider it BETA. -- DVD writing support, using parts, and some new directives in - the Device resource of the Storage configuration file thanks - to Nicolas Boichat. Please note that this code is still - BETA and should be carefully tested before using in - production. -- Seven new options keywords in a FileSet resource: - ignorecase, fstype, hfsplussupport, wilddir, wildfile, regexdir, - and regexfile thanks to Pruben Guldberg). See below for details. -- Restore of all files for a Job or set of jobs even if the file - records have been removed from the catalog. -- Restore of a directory (non-recursive, i.e. only one level). -- Support for TLS (ssl) between all the daemon connections thanks - to Landon Fuller. -- Any Volume in the Pool named Scratch may be reassigned to any - other Pool when a new Volume is needed. -- You may clone a Job and thus write (almost) the same data - to multiple Volumes simultaneously (see below). Actually, - any Job may start any other Job with this mechanism, so it - also be used to group jobs. -- Unicode filename support for Win32 (thanks to Thorsten Engel) -- Volume Shadow Copy support for Win32 thus the capability to - backup exclusively opened files (thanks to Thorsten Engel). - A VSS enabled Win32 FD is available. You must explicitly - turn on VSS with 'Enable VSS = yes' in your FileSet resource. -- New manual format with an index (thanks to Karl Cunningham). -- New Web site format (thanks to Michael Scherer). -- SQLite3 support. -- Web-bacula, previously a separate project by Juan Luis Frances, - is now included in the Bacula GUI release. This is a management - level tool for reporting the state of Bacula jobs. -- The code is now Internationalized so that it can be localized - in native languages. Thanks to Nicolas Boichat. - -New Directives: -- New Job directive 'Prefer Mounted Volumes = yes|no' causes the - SD to select either an Autochanger or a drive with a valid - Volume already mounted in preference. If none is available, - it will select the first available drive. -- New Run directive in Job resource of DIR. It permits - cloning of jobs. To clone a copy of the current job, use - Run = 'job-name level=%l since=\'%s\'' - Note, job-name is normally the same name as the job that - is running but there is no restriction on what you put. If you - want to start the job by hand and use job overrides such as - storage=xxx, realize that the job will be started with the - default storage values not the overrides. The level=%l guarantees - that the chosen level of the job is the same, and the since=... - ensures that the job uses *exactly* the same time/date for incremental - and differential jobs. The since=... is ignored when level=Full. - A cloned job will not start additional clones, so it is not possible - to recurse. -- New Options keywords in a FileSet directive (backported to 1.36.3): - - WildDir xxx - Will do a wild card match against directories (files will not - be matched). - - WildFile xxx - Will do a wild card match against files (directories will not - be matched). - - RegexDir xxx - Will do a regular expression match against directories (files - will not be matched). - - RegexFile xxx - Will do a regular expression match against files( directories - will not be matched). - - IgnoreCase = yes | no - Will ignore case in wild card and regular expression matches. - This is handy for Windows where filename case is not significant. - - FsType = string - where string is a filesystem type: ext2, jfs, ntfs, proc, - reiserfs, xfs, usbdevfs, sysfs, smbfs, iso9660. For ext3 - systems, use ext2. You may have multiple fstype directives - and thus permit multiple filesystem types. If the type - specified on the fstype directive does not match the - filesystem for a particular directive, that directory will - not be backed up. This directive can be used to prevent - backing up non-local filesystems. - - HFS Plus Support = yes | no - If set, Mac OS X resource forks will be saved and restored. -- Label Type = ANSI | IBM | Bacula - Implemented in Director Pool resource and in SD Device resource. - If it is specified in the SD Device resource, it will take - precedence over the value passed from the Director to the SD. -- Check Labels = yes | no - Implemented in the SD Device resource. If you intend to read - ANSI or IBM labels, this *must* be set. Even if the volume - is not ANSI labeled, you can set this to yes, and Bacula will - check the label type. -- Scripts Directory = name. Defines the directory from - which Bacula scripts will be called for events. In fact, Bacula - appends this name to the standard Python list of search directories, - so the script could also be in any of the Python system directories. -- In FileSet, you can exclude backing up of hardlinks (if you have - a lot, it can be very expensive), by using: - HardLinks = no - in the Options section. Patch supplied by David R Bosso. Thanks. -- MaximumPartSize = bytes (SD, Device resource) - Defines the maximum part size. -- Requires Mount = Yes/No (SD, Device resource) - Defines if the device require to be mounted to be read, and if it - must be written in a special way. If it set, the following directives - must be defined in the same Device resource: - + Mount Point = directory - Directory where the device must be mounted. - + Mount Command = name-string - Command that must be executed to mount the device. Before the command - is executed, %a is replaced with the Archive Device, and %m with the - Mount Point. - + Unmount Command = name-string - Command that must be executed to unmount the device. Before the - command is executed, %a is replaced with the Archive Device, and - %m with the Mount Point. - + Write Part Command = name-string - Command that must be executed to write a part to the device. Before - the command is executed, %a is replaced with the Archive Device, %m - with the Mount Point, %n with the current part number (0-based), - and %v with the current part filename. - + Free Space Command = name-string - Command that must be executed to check how much free space is left - on the device. Before the command is executed, %a is replaced with - the Archive Device, %m with the Mount Point, %n with the current part - number (0-based), and %v with the current part filename. -- Write Part After Job = Yes/No (DIR, Job Resource, and Schedule Resource) - If this directive is set to yes (default no), a new part file will be - created after the job is finished. -- A pile of new Directives to support TLS. Please see the TLS chapter - of the manual. - -New Commands: -- 'python restart' restarts the Python interpreter. Rather brutal, make - sure no Python scripts are running. This permits you to change - a Python script and get Bacula to use the new script. - -New configure options: -- --with-libintl-prefix for defining alternate locations for - the NLS internationalization libraries. Not normally required. -- --datadir for defining where the language files will be installed - required only if you do not want the default /usr/share. - -Items to note!!! -- The Storage daemon now keeps track of what tapes it is using - (was not the case in 1.36.x). This means that you must be much - more careful when removing tapes and putting up a new one. In - general, you should always do a 'unmount' prior to removing a - tape, and a 'mount' after putting a new one into the drive. -- If you use an Autochanger, you MUST update your SD conf file - to use the new Autochanger resource. Otherwise, certain commands - such as 'update slots' may not work. -- You must add --with-python=[DIR] to the configure command line - if you want Python support. Python 2.2, 2.3 and 2.4 should be - automatically detected if in the standard place. -- When linking with --with-python, there are a few warnings that - can be ignored. -- You must either create a new catalog database or upgrade your - old database. After installation, run from your scripts - directory: - - ./upgrade_bacula_tables - - You can also find this script in the /src/cats - directory. -- The Director, Storage daemon, and File daemons are - Deamons are not compatible with prior versions. - All FDs must be upgraded at the same time. -- You must add --with-openssl to the configure command line if - you want TLS communications encryption support. -- Disk seeking during restores does not yet work correctly in - all cases, so it is turned off. -- Note, with gcc (GCC) 4.0.1 20050727 (Red Hat 4.0.1-5) on an - AMD64 CPU running 64 bit CentOS4, there is a compiler bug that - generates bad code that causes Bacula to segment fault. - Typically you will see this in the Storage daemon first. The - solution is to compile Bacula ensuring that no optimization is - turned on (normally it is -O2). - This same compiler bug has been reported and confirmed with - gcc (GCC) 4.0.2 20050901 (prerelease) (SUSE Linux) running on - an AMD64 CPU. This for the moment, I would recommend that all - users of GCC 4.0.1 or greater turn off all optimization when - compiling. - - -Other Items Fixed: -- Security fixes for temp files created in mtx-changer, during - ./configure, and during making of Rescue disk. -- A new script, dvd-handler, in the scripts directory, - which is designed to be used as parameters to Write Part Command and - Free Space Command. They need the dvd+rw-tools to be installed - (http://fy.chalmers.se/~appro/linux/DVD+RW/) AND, the growisofs - program must be patched using the - /patches/dvd+rw-tools-5.21.4.10.8.bacula.patch - You must have Python installed to run the scripts. -- Part files support: File volumes can now be split into multiple - files, called 'parts'. -- For the details of the Python scripting support, please see the new - Python Scripting chapter in the manual. -- The default user/group for the Director and Storage daemon installed - by rpms is bacula/bacula, thus you may need to add additional permissions - to your database, or modify the permissions of the tape drive. If - all else fails, change to using user=root. However, it is more secure - to use user=bacula. +- Remove automatic case folding on Windows FDs. You must + explictly use the 'Ignore Case = yes' option. +- Implement wild program in tools directory for testing + wild-cards. Almost identical to the regex program. +- Use the new bregex.c to implement Regex expressions on Win32. +- Apply patch from Christopher Hull + - Allow multiple connections to database with different + parameters. + - Invalidate the scheduler when doing a reload. Fixes seg + fault, but still 60 second window. + - Additional info in Reschedule message. + - Use set_jcr_job_status() everywhere to prevent loss of + cancel, error. + - Display peer IP in FD if error from connecting DIR. + - Don't increment file count for DIRBEGIN. + - Replace illegal characters in Win32 filename by _. + - Add SE_CREATE_PERMANENT_NAME privilege in Win32. + - Hash hard link filenames rather than linked list. + - Fix for security failure in chdir on Win32. + - Add CreateDirectoryA/W win32 API entry points. +- Add /silent option to Win32 FD for Install/Remove service. + programs to duplicate Bacula's base64 algorithm using standard + routines. This fixes bugs #296, and 565. Patch submitted by + author of bug #565. +- Switch the Win32 build from using Microsoft C++ to using mingw32 + cross-compiling. The inital work was done by Howard Thomson, + then tweaked by me. +- Robert Nelson then totally reworked the cross-compiling code so that it + not only cross-compiles, but also compiles on Visual Studio, and at the + same time, he added all the current Unix features to the FD, such as + selection on drives, encryption support, building *all* the tools, ... + Finally, he also ported the Directory and the Storage daemon to Win32. +- Fixes to reloading the Dir conf file from Eric Bollengier and Christopher + Hull. +- Modify LICENSE to correct some problems pointed out by Debian. + Implement patch submitted by cesarb in bug #606 to implement O_NOATIME + support. + O_NOATIME is a open() flag which makes it possible to read a file without + updating the inode atime (and also without the inode ctime update which + happens if you try to set the atime back to its previous value). It also + prevents a race condition when two programs are reading the same file, but + only one does not want to change the atime. It's most useful for backup + programs and file integrity checkers (and bacula can fit on both + categories). + + Recent versions of the Linux kernel and glibc have support for it (the + glibc support being mostly copying the O_NOATIME definition to + bits/fcntl.h). If there's no support for it on the kernel, trying to use + it does nothing (since the kernel ignores unknown flags). + + If the kernel has support for it, trying to use it either works, fails + silently (mostly in remote filesystems), or returns errno=EPERM (if you + are not either the owner of the file or root). A simple way to prevent the + failure is to open the file without the flag and set it later with + fcntl(F_SETFL), ignoring any EPERM errors. +- Implement a pile of new man pages contributed by Jose Tallon. +- Implement a number of user supplied patches for DVD writing. +- Add Eric Bollengier patch for new RunScript directive. +- Modify the database format for handling Migration jobs: + Add PriorJobId, RealEndTime to Job table + Delete MAC table + Remove Stripe from JobMedia record (not used, wasting space) + Add ScratchPoolId, RecyclePoolId, Enabled to Media record + Add Cost to Location table. + Enabled to Media table and Location table. +- Security: harden authentication failure in FD by single threading errors + and forcing a 6 second wait. +- If using GCC (actually g++) add the following compiler flags + -fno-strict-aliasing -fno-exceptions -fno-rtti +- Turn on new bsnprintf() code. This could cause print output + to look different. +- Implement job report that indicates where Storage and Pool + came from -- with overrides and Pool storage and NextPool, + it is all very complicated. +- Add more detail (Storage, Device) to list of volumes printed + for restore. +- Add new VOLMGMT message class. No messages are yet sent with this + class. +- Add Catalog message destination in Messages resource that puts the + job report in the Log database table. +- Spend a lot of time integrating mkcdrec with the rescue disk. +- Add spooling/despooling info in status output of SD. +- Add Comment field to llist of a volume. +- Allow true/false in some yes/no questions. +- Implement update volume enable=(on|off|true|false|archived|0|1|2) diff --git a/bacula/kernstodo b/bacula/kernstodo index 4926a8fdb7..9379461ad5 100644 --- a/bacula/kernstodo +++ b/bacula/kernstodo @@ -28,6 +28,7 @@ Document: Priority: For 1.39: +- Possibly turn on St. Bernard code. - Fix bextract to restore ACLs, or better yet, use common routines. - Do we migrate appendable Volumes? diff --git a/bacula/kes-1.39 b/bacula/kes-1.39 index 03b251768d..a5aaeb7dbc 100644 --- a/bacula/kes-1.39 +++ b/bacula/kes-1.39 @@ -2,6 +2,21 @@ Kern Sibbald General: +31Jul06 +kes Make a first cut at a ReleaseNotes and ChangeLog for a + beta release. +kes Make make clean decend into the src/win32 directory. +kes Fix some #ifdefing so that Solaris and FreeBSD compile + sys/stat.h was turned off. +kes Use suffix editing for new transfer rate messages. +kes Attempt to come up with a workaround which seems to be an OS + bug where write() returns EBUSY. IMO this should not happen. + It triggered in truncatebug test. The workaround retries using + a 100 ms wait. +kes Eliminate a strerror() call in a class method that failed with + older C++ compilers. +kes Use rm -rf rather than rmdir to delete the src/win32/release + directory during make clean. 30Jul06 kes Make bscan ignore ACL streams. kes Update projects files with new Feature Requests. @@ -480,7 +495,6 @@ Version 1.39.17 is not translated. - Add NT_ definition for strings that should not be translated. - Apply NT_() to ua_label.c - - Remove timed wait for VSS on Win2K3 as it is not yet implemented. - Correct bacula.in script to reference bacula-ctl-xx in the @@ -802,7 +816,7 @@ Changes to 1.39.3: You have messages. - Delete old bnet packet code. - Ignore new BNET_START_SELECT and BNET_END_SELECT signals in - wx-console. + wx-console. -- not implemented because bconsole must be updated. - Modify restore command in wx-console to set gui on and to use only .messages instead of messages. Hopefully this fixes bug #514. diff --git a/bacula/src/bacula.h b/bacula/src/bacula.h index 60a219fee6..9d49a63aee 100644 --- a/bacula/src/bacula.h +++ b/bacula/src/bacula.h @@ -105,9 +105,10 @@ #endif #if defined(HAVE_WIN32) & !defined(HAVE_MINGW) #include -#else -//#include -#endif +#endif +#if !defined(HAVE_WIN32) & !defined(HAVE_MINGW) +#include +#endif #include #if HAVE_SYS_WAIT_H #include diff --git a/bacula/src/count-lines b/bacula/src/count-lines index 577cd61e92..cde79ce7ac 100755 --- a/bacula/src/count-lines +++ b/bacula/src/count-lines @@ -1,9 +1,11 @@ #!/bin/sh rm -f 1 touch 1 -for i in . console gnome-console gnome2-console cats dird filed filed/win32 \ +for i in . console gnome2-console cats dird filed tray-monitor \ win32 win32/compat findlib lib wx-console stored tools \ - win32/wx-console win32/console win32/baculafd tray-monitor; do + win32/wx-console win32/console win32/baculafd win32/filed \ + win32/dird win32/libwin32 win32/stored win32/stored/baculasd \ + tray-monitor; do ls -1 $i/*.c $i/*.cpp $i/*.h $i/*.in 2>/dev/null >>1 done cat 1 | $HOME/bin/lines diff --git a/bacula/src/stored/append.c b/bacula/src/stored/append.c index 6168acc8bb..d972e76d5c 100644 --- a/bacula/src/stored/append.c +++ b/bacula/src/stored/append.c @@ -259,7 +259,7 @@ bool do_append_data(JCR *jcr) Jmsg(dcr->jcr, M_INFO, 0, _("Job write elapsed time = %02d:%02d:%02d, Transfer rate = %s bytes/second\n"), job_elapsed / 3600, job_elapsed % 3600 / 60, job_elapsed % 60, - edit_uint64_with_commas(jcr->JobBytes / job_elapsed, ec)); + edit_uint64_with_suffix(jcr->JobBytes / job_elapsed, ec)); /* Create Job status for end of session label */ set_jcr_job_status(jcr, ok?JS_Terminated:JS_ErrorTerminated); diff --git a/bacula/src/stored/block.c b/bacula/src/stored/block.c index e0907d54da..75a86fd8be 100644 --- a/bacula/src/stored/block.c +++ b/bacula/src/stored/block.c @@ -509,13 +509,20 @@ bool write_block_to_dev(DCR *dcr) #endif /* - * Do write here + * Do write here, make a somewhat feeble attempt to recover from + * I/O errors, or from the OS telling us it is busy. */ - if (dev->is_tape()) { - stat = tape_write(dev->fd, block->buf, (size_t)wlen); - } else { - stat = write(dev->fd, block->buf, (size_t)wlen); - } + int retry = 0; + do { + if (dev->is_tape()) { + stat = tape_write(dev->fd, block->buf, (size_t)wlen); + } else { + stat = write(dev->fd, block->buf, (size_t)wlen); + } + if (retry > 10) { + bmicrosleep(0, 100000); /* pause a bit if lots of errors */ + } + } while (stat == -1 && (errno == EBUSY || errno == EIO) && retry++ < 30); #ifdef DEBUG_BLOCK_ZEROING if (bp[0] == 0 && bp[1] == 0 && bp[2] == 0 && block->buf[12] == 0) { diff --git a/bacula/src/stored/btape.c b/bacula/src/stored/btape.c index 21ea77ede6..b4adea4eed 100644 --- a/bacula/src/stored/btape.c +++ b/bacula/src/stored/btape.c @@ -2099,6 +2099,7 @@ static void do_unfill() file_index = 0; if (last_block) { free_block(last_block); + last_block = NULL; } last_block_num = last_block_num1; last_file = last_file1; diff --git a/bacula/src/stored/dev.c b/bacula/src/stored/dev.c index 3ccde2b2c3..0643ff3b4e 100644 --- a/bacula/src/stored/dev.c +++ b/bacula/src/stored/dev.c @@ -1712,10 +1712,11 @@ void DEVICE::clrerror(int func) /* Typically on FreeBSD */ #ifdef MTIOCERRSTAT { + berrno be; /* Read and clear SCSI error status */ union mterrstat mt_errstat; Dmsg2(200, "Doing MTIOCERRSTAT errno=%d ERR=%s\n", dev_errno, - strerror(dev_errno)); + be.strerror(dev_errno)); tape_ioctl(fd, MTIOCERRSTAT, (char *)&mt_errstat); } #endif diff --git a/bacula/src/stored/spool.c b/bacula/src/stored/spool.c index e91967bef5..25f8a8a9de 100644 --- a/bacula/src/stored/spool.c +++ b/bacula/src/stored/spool.c @@ -279,7 +279,7 @@ static bool despool_data(DCR *dcr, bool commit) Jmsg(dcr->jcr, M_INFO, 0, _("Despooling elapsed time = %02d:%02d:%02d, Transfer rate = %s bytes/second\n"), despool_elapsed / 3600, despool_elapsed % 3600 / 60, despool_elapsed % 60, - edit_uint64_with_commas(jcr->dcr->job_spool_size / despool_elapsed, ec1)); + edit_uint64_with_suffix(jcr->dcr->job_spool_size / despool_elapsed, ec1)); dcr->block = block; /* reset block */ diff --git a/bacula/src/version.h b/bacula/src/version.h index 9c9d33c459..20acb2777a 100644 --- a/bacula/src/version.h +++ b/bacula/src/version.h @@ -4,8 +4,8 @@ #undef VERSION #define VERSION "1.39.18" -#define BDATE "30 July 2006" -#define LSMDATE "30Jul06" +#define BDATE "31 July 2006" +#define LSMDATE "31Jul06" /* Debug flags */ #undef DEBUG diff --git a/bacula/src/win32/Makefile b/bacula/src/win32/Makefile index 9775382d07..f4a29a9ddb 100644 --- a/bacula/src/win32/Makefile +++ b/bacula/src/win32/Makefile @@ -13,7 +13,7 @@ DIRS= dll \ all: Makefile.inc $(DIRS) clean: $(DIRS) - $(ECHO_CMD)-rmdir release + $(ECHO_CMD)-rm -rf release $(DIRS): @if $(MAKE) -C $@ $(MAKECMDGOALS); then \