-- Added HOST_OS, DISTNAME, and DISTVER to the status output.
-- Eliminated a few stray Dmsgn(000, messages making them either
- debug_level 100, or Pmsg().
-- Made the default "Maximum File Size" 1Gbyte in SD.
-- Cache path in tree.c to reduce calls to make_tree_path
-- Documentation updates
-- Implement forward space file and block when reading a bsr.
-- Fixed a bug in db_find_next_volume() where the VolStatus was
- not being returned.
-- Rework some of the query.sql records that were incomplete.
-- Fixed an ambigous SQL statement in restore.
-- Fix proper sorting order in restore display last 20 jobs.
-- Remove duplicate JobId's in feeding the directory tree.
-- Fix an orphaned ua buffer due to a return that should have been
- break so that cleanup code executed.
-- Changed some strcats and sprintfs int bstrncat() ... to prevent
- possible buffer overflows.
-- Fix max file size code on tape so that after writing EOF,
- an appropriate jobmedia record is created.
-- Fix error messages in dev.c, which were copied into lots of
- different subroutines without updating the text.
-- Add reposition_dev(), and make more of the return statuses of
- dev routine standard.
-- Eliminate old semaphore and workq code. Keep only new jobq code.
-- Try to get a better default size for the gnome-console
-- Add code to avoid race conditions in starting/stoping the
- heartbeat thread.
-- Correct potential race condition in heartbeat_stop().
-- Correct segmentation fault in mysql.c if no password given.
-- make pm_strcat and pm_strcpy return the string length
-- Use Phil's code to get the unadorned job name.
-- Move the MTIOCERRSTAT from just after a write() failure to
- after writing the EOF marks on FreeBSD systems.
-- Enhance packet too big error in bnet.c and add some
- ASSERTs in the send code.
-- Set heartbeat interval to zero by default.
-- Add Recycle to list of Update Volume parameters.
-- Use bget_dirmsg() wherever possible in Director.
-- Split next_volume code from catreq.c to next_vol.c
-- Consolidate editing job codes into a single routine.
-- Add Job resource name
-- Remove check for Win32 attributes in bls. It doesn't
- need to read them, only print ls -l.
-- Add SDConnectTimeout in FD.
-- Add Scott's perlgui directory
-- Upgrade from RH7.3 to RH9. New autoconf.
-- Eliminate gnome2-console directory.
-- Correct English in status command.
-- Eliminate old shell expansion code and use BPIPE to call shell
- with echo command.
-- Documentation as usual.
-- Add a new bacula.spec for Mandrake
-- Add ownership to alist items. Default the list owns the items.
-- Make record_cb return a status (preparation for internal use).
-- Remove all clearing of remainder in read_record.c -- not necessary
-- Write a tapetest program for FreeBSD end of tape testing.
-- Modify read.c in Bacula to use read_record.c
-- Implement multiple records in read_record.c. One for each session that
- is open. Free the record with the EOS_LABEL is found (or at the
- end of the scan).
-
-2003-08-02 Version 1.31a 02Aug03 Released
-- Yifang Dai reported a case where he stress tested Bacula and
- backed up to four volumes, but only two were selected for the
- restore. This is because I forgot that the selection could
- span a volume entirely.
-- Added a missing CLIENT_FOUND_ROWS to the second attempt to open
- the MySQL database -- this prevents UPDATE errors if nothing
- actually changed.
-- Applied corrections to the manual supplied by Bob Collins. Many thanks!
-
-2003-07-30 Version 1.31 Beta 30Jul03
-- Integrated Robert Mathews improved description of Priorities into
- the manual.
-- Chased down the "The data is not valid" bug on WinMe/98/95.
-- Found an orphaned buffer in the set_attributs part of WinMe/98/95.
-- Add sleep(1) to console when it gets a SIGTSTP signal
- to prevent it from using 100% of the CPU.
-- Improve description of Priorities.
-- Add a bit more documentation to jobq.c
-- Complete hash table routine htable.c htable.h
-- Change M_INFO to M_ERROR in attribs.c for Windows errors.
-
-2003-07-23 Version 1.31 Beta 22Jul03
-- Apply a patch from Nic Bellamy that clarifies the error messages
- during recycling volumes.
-- Documentation.
-- Clear VolCatInfo in askdir.c so that readbytes is zeroed.
-- Add SD statistics to backup report.
-- Removed old workq code.
-- Fixed rescheduling after error.
-- Fixed delayed starts which were not working.
-- Added priority to values that can change when starting
- a job.
-- Complete implementation of new job scheduler. jobq.h jobq.c
- This code is turned off unless specifically enabled in src/version.h
-- Integrate code from Nic Bellamy to check for recycled volume in
- mount.c in SD.
-- Fix a couple of bugs in dlist.c
-- Begin implementation of new job scheduler.
-- Take serial.h provided by David Craigon, which corrects differences in
- prototypes between serial.h and serial.c.
-- Make db_get_media_ids() return Media Ids only for the current pool.
-- Add new jobq.h and jobq.c drived from workq.
-- Add JobPriority to jcr, and Priority to Job resource as well as
- to the run line in a Schedule.
-- Remove unused pool record from autoprune.c.
-- Implement Nic Bellamy's RecycleCurrentVolume.
-- Implement RecycleOldestVolume.
-- Begin adding new JOB_QUEUE code to the Director.
-- Create a single routine recycle_volume().
-- Retry accept(), bind() and socket() if EINTR occurs.
-- Implement insert_before(), insert_after(), and empty() for dlist class.
- Also require offset to be given by giving item and link address.
-- Make error some messages in smtp.c a bit more explicit.
-
-2003-07-12 Version 1.31 Beta 14Jul03
-- Marc Brueckner reported a crash during restore (a missing tree->)
-- Moved host.h.in file from filed to src.
-- Update btraceback to include host os, distname, distver in output.
-- Split list (in lib) into alist and dlist both with .h and .c.
-- Update home page to include Project status page.
-
-2003-07-12 Version 1.31 Beta 10Jul03
-- Manual updates.
-- Clean up some unused variables detected by the IRIX compiler.
-- Test two directories on Win32 -- caused a crash. I forgot
- to NULL the uid cache pointer after releasing it.
-- Use bstrncpy() instead of strcpy() in find_files.
-- Clear a few linked lists in the temp directory packed in find_one.c
-- Eliminate an unnecessary variable in attr.c
-- Clear the cache pointer after release in idcache.c
-- Implement a new C++ doubly linked list class.
-
-2003-07-08 Version 1.31 Beta 08Jul03
-- Update document for Win32 stuff.
-- Ensure VolStatus value for update is permitted.
-- Fix cached_path so that it is local to the jcr, otherwise, there
- are problems from job to job.
-- Fixed idcache.c which was not thread safe and didn't release memory,
- and didn't always edit the userid correctly.
-- Correct missing pool memory allocation in update voluseduration.
-- Release mutex in pool_mem.c before triggering ASSERT.
-- Lock database while recycling.
-- Fix a bug in editing since where I forgot to update to the new size.
-- Implement all the command line update arguments.
-- Modify label to use volume=xxx for the new volume and oldvolume=yyy
- if doing a relable.
-- Added yes to run command line arguments.
-- Clear errno in editing a string to utime.
-- In restore print only volumes that will actually be used.
-- Fix bextract -- add appropriate breaks in new case code.
-- Add a new test -- bsr-opt-test for testing bsr optimization. As usual,
- it pointed out a bug where the directory tree handling code destroyed
- the restore arg list.
-- Many updates to the manual.
-- Pass prefix links flag to FD.
-- Sort list of commands for Console
-- Set default FD and SD concurrent jobs to 10.
-- Rework the find next volume code in catreq.c to correct some minor
- but subtle logic errors and to eliminate a goto.
-- Did spell check on manual.
-- Removed bindtextdomain() as it conflicted with RH8.0 headers
-- Fixed parse_args to pass address of POOLMEM struct.
-- Constrain FileIndexes written to BSR to be within range of Volume.
-- Suppress writing volumes to BSR if they are not actually referenced.
-- Make FOPTS use alist for match and base entries.
-- Pass prefix_links to SD.
-- Add command line interface to most items in "update volume=xxx"
-- Add command line interface to restore "jobid", "current", "before", "all".
-- Add command line "yes" to run command to supress prompt.
-- In new alist code, free only if allocated.
-- Overload [] with get() code for alist.
-- Fixed the code that wrote FirstIndex and LastIndex to the database. It
- was not correct at the end of a volume (basically included indexes in
- the second volume).
-- Fixed bscan to work with the new code and to properly build JobMedia
- records.
-- Added code to the read end of block.c to properly track Volume bytes,
- blocks, and files. I thought this was not necessary, but it is critical
- for bscan to work correctly.
-- Modified read_record to properly track First/LastIndex -- needed by
- bscan.
-- Eliminated some old Volume write code.
-- Changed RecycleOldestVolume to PurgeOldestVolume
-- Added what I hope are the "final" touches for Win32 stuff. There
- are still a lot of annoying little problems.
-- Added the "portable=yes/no" option to Include. If set, it disables
- use of BackupRead/Write for Win32, so in principle, the data should
- be portable.
-- Pulled in more recent config.sub and config.guess from /usr/share/libtool
-- Replaced the system fgets() by a Bacula version that ignores
- interrupts (i.e. signals). This truncated output from child processes.
-- Make file_index int32_t everywhere.
-- Moved LinkFI into ATTR structure. Also integrated data_stream there too.
-- Moved code that sets the stream for writing into create_file.
-- Removed a signal(SIG_IGN, SIGCHLD) from dird.c that prevented getting
- the status of child processes. This allowed removing the FreeBSD
- kludge to bpipe.c -- the status is now obtained correctly.
-- Hand scan the stream header that arrives in append.c to avoid machine
- dependencies of sscanf().
-- Implemented code to put Data stream in Attributes record.
-- Check if data stream is supported, if not, ignore.
-- Fix crash when multiple Includes are given (missing parens).
-- Clear WroteVol in askdir.c when JobMedia record is created.
-- Implement simple array list class for use in Bacula. New files
- are lib/list.c lib/list.h. Probably will not use until version 1.32.
-
-2003-06-24 Version 1.31 Beta 22Jun03
-- Change Purging Oldest Volume message to Recycling Oldest Volume.
-- Limit results from find_oldest_volume to one.
-- Fix possible buffer overrun in the restore tree handling routines.
-- Fixed a crash in VerifyToVolume because I moved the close_db()
- down into the free_ua_context() and should not have done so.
-- At a "var" command in the Console that does variable expansion and
- prints it.
-- Implement first cut of estimate command.
-- Change find_next_volume() for oldest to use LastWritten instead of
- FirstWritten -- also add Append to volumes slected.
-- Do normal recycling before checking for RecycleOldestVolume.
-- Implemented block rejection on read. This should make restores run
- much faster. Next release will have block positioning -- even faster.
-- Very preliminary support for Gnome-2.0. Text does not yet work.
-- Correct buffer corruption in find_one.c with long directory names (Win32).
-- Make setting owner on directories M_ERROR rather than M_WARNING.
-- Fix printing of JobId in run listing for restore job.
-- Reduce heartbeat read check interval to every 10 seconds on Cygwin because
- there is no working pthread_kill().
-- I finally designed a test for multiple simultaneous jobs,
- and sure enough it broke when the jobs are split over multiple
- volumes. Now fixed and working!
-- Eliminated a few "duplicate" error messages by testing for canceled.
-- Add ASSERT for device use count going negative.
-- Fix BlockNumber checking in stored/read.c (got first one wrong).
-- If socket is timed out, do a shutdown(fd,2) instead of close().
-- Fixed return status from SD to FD by setting JobStatus in append_end()
-- Add arrays to Environment variables. Elements separated by |.
-- Implement Reschedule On Error, Reschedule Interval, Reschedule Times.
-- Add a new pool PM_NAME -- gets a name length buffer.
-- Implement fast cancel of FD blocked on writing to SD by using
- pthread_cancel(). Turned off on Cygwin due to bug.
-- Add code to handle EAGAIN in writing (probably not necessary). Use
- select().
-- Eliminate size_t from pool control buffers.
-- Complete Counter resource.
-- Complete LabelFormat (except for WrapCounter) plus counter
- inrementation.
-- This needs a database change to eliminate PoolId from counters.
-- Made a more compact format for the document index.
-- Add Phil's checkhost to examples directory (thanks Phil).
-- Implement generalized LabelFormat (documentation to come).
-- Implement Counter resource.
-- Cleanup examples/kernsconfig
-- Implement restore to a specific date.
-- Fixed a but in automatic labeling (and use durations expiring) analysed
- and reported by Rob Proffitt (thanks!).
-- Cleaned up a few Cygwin compile problems.
-- Made a 10Jun03 release (it is in production here)
-- Finally took the big plunge and fixed restoration of links and other
- files that have been changed between the backup and restore. Basically
- if the file exists, it is deleted, then re-created.
-- Purge only Volumes marked Append, Full, Used, or Error.
-- Allow pruning of volumes marked Append, in addition to Full and Used.
-
-
-2003-06-10 Version 1.31 Beta 10Jun03
-- Eliminated all plain email addresses and replaced them with " at " in
- place of @ to reduce havesting by spammers. Doc + Web Site.
-- Started working on making POOLMEM a struct rather than a char. Lots of
- work to do.
-- Fixed bscan to handle -V option.
-- Fixed bscan to handle two File volumes.
-- Corrected a misplaced comma it get_fileset() in cats pointed out by bscan.
-- Added two Volume bscan test to regression scripts -- write two volumes,
- purge and delete everything, bscan the tapes, and do a restore. It works!
-- Reorganized the backup/restore code to move the attribute information into
- an ATTR packet, which is passed in place of tons of arguments. Moved some
- code into lib/attr.c and lib/attr.h. Then eliminated all the duplicate
- attribute code.
-- Moved FT_ types into baconfig.h.
-- Defined FT_ types to use only 16 bits. The upper half of the word is
- reserved for adding optional fields in the attributes packet.
-- Moved jcr->where into common part of jcr and have it deleted in lib/jcr.c
-- Put all attribute reading code on switch() with cases instead of a big
- if (restore.c, bls.c, bextract.c, bscan.c, ...)
-- set_attributes() now takes ATTR packet, and thus has much fewer args.
-- moved print_ls_output() into lib/attr.c
-- implemented is_stream_supported().
-- create_file() now takes ATTR packet so has many fewer args.
-- add mtime_only code.
-- Rewrote bnet.c read and write routines to quit if bsock->terminated is
- set. This will allow setting non-blocking writes and then receiving
- a termination message and terminating the Job immediately rather than
- waiting 2 hours for the line to timeout.
-- Put catalog db name in some error messages.
-- Code for restore is now much cleaner, with much of it in lib/attr.c,
- and it is now common for all readers.
-- Add first cut of proper support for Win32 Backup code.
-- Fix bug in restore Win95/98/Me.
-- Pass mtime_only flag to FD. Needs config record.
-
-2003-06-04 Version 1.31 Beta 04Jun03
-- Fix block.c to check errno only in case of return status -1 as
- suggested by Justin Gibbs (FreeBSD).
-- Implemented qfill command in btape for quick testing write/read of a tape.
-- Discovered that FreeBSD pthreads re-use the same thread id, which causes
- the SD to fail when a user leaves a device unmounted (old pid is reused
- and lock_device() thinks the same thread is calling again leading to
- inconsistent state). Set id to zero after blocking the device during
- unmount.
-- A lot of clean up, moving subroutines around for TermCode.
-- Free ua->prompt when Job terminates.
-- Add AutoPrune and Recycle to values copied from Pool resource
- into Pool record on create/updated.
-- Implemented bsr for Verify VolumeToCatalog.
-- Improved the Verify Job report using SD and FD term codes.
-- Split tree handling routines from ua_restore.c to ua_tree.c
-- Split bsr routines from ua_restore.c to bsr.c and bsr.h
-- Fixed clash between FD and SD returned job values. Report now contains
- values from FD. Maybe I should change? or give both.
-- Attempt to fix negative use_count for dev packet in SD by adding
- a couple of open_dev(). This may be cause of Dan's crash.
-- Clear no_wait_id when device is unblocked. This may be cause of Dan's crash.
-- Eliminate old "new lock code".
-- Add configure of mtx-changer for mtx path.
-- Always rewind tape before releasing it (for FreeBSD).
-- StartBlock was one too large for second volume.
-- Fixed restore to display status from both SD and FD.
-- Unified return status message for backup and restore.
-- Corrected segmentation fault reported by Dan when doing "label barcodes"
- on a File.
-- Corrected a segmentation fault when attempting to send a JobMedia record
- to the Console -- reported by Dan.
-- Added MySQL documentation for using the threaded libraries.
-- Added new columns and tables to Catalog database.
-- Wrote alter scripts and tested them (thanks to Dan for the help) on
- MySQL and SQLite.
-- Started using enums where ever possible when passing flags to
- subroutines. This helps make the source much more readable.
-- Corrected a bug where a vertical database listing was being used in
- the query command.
-- Added new argument to parse_args() to prevent command arg overflow.
-- Renamed ua_db_query.c ua_query.c.
-- Split scan.c out of lib/util.c
-- Perhaps I have *finally* fixed the command line history in gnome-console.
-- Added support for smartalloc for any global new or delete command
- by overloading the global operators.
-- Made the default time with no qualifier day rather than seconds.
-- Fixed a bug in the store_size() routine that improperly converted from
- double to uint32_t.
-- Started using "bool" where possible.
-- Zap SD session key once it is used.
-- Added *lots* more checking for strcpy -- bstrncpy(), ...
-- Added CreateTime field to FileSet record and print it to distinguish
- FileSets.
-- Print an information message when a new FileSet is created.
-- Include the FileSet date/time in the Job report.
-- Indicate if a Job is upgraded in the Job report and from what previous level.
-- Incremented the database version.
-- Ensure that any DB error message is printed if the start_time of a previous
- save is not found.
-- Free orphaned buffer in ua_restore.c in case of database error.
-- Implement enum for response DISPLAY_ERROR and NO_DISPLAY
-- Implement enum for create_pool (POOL_OP_CREATE, POOL_OP_UPDATE).
-- Make sure FileSets printed in restore are in order.
-- Add a number of bstrncat, and other protected string operations.
-- Clean up old structs in dird_conf.h
-- Remove all Slot invalidation code.
-- Add Automatic choice message to all do_prompt() calls.
-- Eliminate JobId from restore if not used.
-- Clean up a few error messages.
-- Make fill/unfill commands work correctly in btape.
-- Enhance btape fill and unfill commands.
-- Implement real Pmsg() code so that negative levels work in Dmsg()
-- Implement block number check -- had to turn it off because it doesn't
- work. Need to verify that it is the correct block and that block
- numbers are properly written.
-- Moved readline from depkgs1 to depkgs.
-- Reworked the configure code to handle readline correctly. This was broken
- mostly due to the fact that the readline routines are nested down one
- directory. Also, I missed one header file that was needed (possibly added
- in a later version).
-- Put correct include on the dependencies make for Console readline.
-- Remove JobMediaId from VOL_PARAMS (no longer needed).
-- Sort VOL_PARAMS by JobMediaId using SQL in cats.
-- Add jcr as argument to block.c read_block... routines so that error
- messages are immediately displayed.
-- Make bsr_dev() edit an error message if it is turned off and return 0.
-- Add checking for the BlockNumber in the read routines -- lots of
- false matches are found -- much check writing end.
-- Now sort bsr volumes by JobMediaId -- produces better results.
-- It turns out that under certain circumstances, when doing a restore, the
- Volumes will not be written to the BSR in the correct order. I don't
- know exactly why, but many thanks to Dan Langille for reporting this.
- The solution is to sort the Vol_Params within each bsr (done), and to
- sort the bsr chain (not yet implemented). Note, the bsr chain should
- always be in order unless the user explicitly specifies the JobIds in
- a different order.
-- Began implementing C++ structs rather than typedef structs as in C.
-- Added volatile to a lot of variables that are used in two threads at
- the same time. This should prevent improper optimization.
-- Fixed a missing space in the "run job=xxx where=" the where was
- glued to the end of the previous stuff (bootstrap filename).
-- I *finally* found the cause of the mysterious failure of shell expansion.
- It was due to the read() getting interrupted! That's what opening up
- SIGCHLD will do!
-- Remove unused default tape drive names.
-- Create a new status.c file in stored and split the status code out of dircmd.c
-
-2003-05-22 Version 1.31 Beta 22May03
-- I discovered that C++ permits "prototyping" structures e.g. struct A; is
- a valid statement. This permitted me to eliminate all the void *jcr, in
- favor of JCR *jcr, which pointed out a number of bugs in block.c.
-- Change lib/bmisc.c to bsys.c (system routines).
-- Add set_working_directory() to lib/util.c
-- Remove some unneeded setjcr_job_status() since Jmsg(jcr, M_FATAL,...)
- already sets it.
-- Do not increment jcr->Errors for Fatal errors -- they represent non-fatal
- errors.
-- Fix a few more places in FD where Errors was not incremented.
-- Print unexpected (or incorrect) termination message returned from FD.
-- Use switch() instead of giant if statement in verify_vol.c
-- Protect overrun from do_shell_expansion() by passing max length.
-
-2003-05-20 Version 1.31 Beta 20May03
-- Add mandrake to platforms
-- Suppress error messages if no bytes written to tape.
-- Suck up bootstrap file even on error so that Dir sees our error message.
-- Pretty much finish off the Win32 backup code.
-- Add DESTDIR code to autostart for creating non-root rpms
-- Echo input read from a script in Console.
-- Clarify error message for VerifyToCatalog
-- Add error counts in restore for M_NOTSAVED.
-- Adapt bfile.c to handle both Win95 files as well as WinXP files.
-- Add MTIOCERRSTAT for FreeBSD (clear error status).
-- Correct double jobmedia record when cancel at EOM reported by Phil.
-- Correct possible write at beginning of tape during cancel at EOM
- as reported by Phil.
-- Document in detail how Incremental and Differential jobs work.
-- Add non-fatal error count on backup and restore Job reports.
-- Remove a couple uses of lld -- now prefer to edit and use %s.
-- Fix directory could not be accessed on Win32.
-- Improve message indicating that last Full backup not found.
-- Fix free() too early in directory traversal code.
-- Prune Jobs with no JobFiles or that have JobStatus!='T'
-- Add a few more command line scans for prune/purge.
-- Restrict valid characters in a Volume name, and document it.
-- Make new Win32 save/restore work. Still a bit more to do.
-- Use reentrant version of mysqlclient library.
-- Use more machine independent way of finding gcc version.
-- Fix race condition in sql_list where messages edited before locking.
-- Lots of testing saving/restoring 6GB files.
-- Add where to restore where=/tmp
-- Complete implementation of Win32 streams in FD. Must test. Also,
- must implement new streams in SD.
-- Make termination of daemons more "error" tolerant.
-- Make default "duration" days rather than seconds if there is no modifier.
-- Install bcopy.
-- Add detection of available Win API's so that a single binary will
- work on all Windows systems. Reference those APIs through a pointer.
-- Remove use_win_backup_api and enable it in bfile.c if system supports it.
-- Modify dev.c so that it works if MTEOM is not defined (BSDI).
-- Change MT_xxx to BMT_xxx to prevent conflicts with BSDI.
-- Detect strtoll() in configure.
-- Implement replacement for strtoll() for BSDI.
-- Add platform files for BSDI.
-- Use Jmsg() instead of Jmsg1() in acquire because File:line prefixed in dev.c
-- Use Jmsg() in write_block_to_dev() so that no messages are lost.
-- Rework autochanger code in restore to handle case of cassette not in magazine.
-- Implement Windows BackupRead/Write(). I now have permissions right!!!!
-- Additions to the manual (Purging, Autopruning).
-- Add doc to code in autoprune.
-- Begin adding Level = Base.
-- Make Jmsg recognize console and direct messages directly back to it.
-- Hopefully fix mess in mount.c when a tape expires.
-- Fix restore bug recently introduced due to Unix backwards status convention.
-- New bacula.spec from Scott
-- Add globals for database name and version and print them in traceback.
-- Eliminate SubSysDirectory in each daemon conf file.
-- Implement get_yesno() and get_pint() in UA.
-- Make Jmsg aware of console. Messages now sent directly to Console.
-- Created a single bacula.spec.in for by the MySQL and SQLite builds.
-- Added proper configuration to console.in and gconsole.in
-- Start adding textdomain() code for translating.
-- A number of minor code cleanups.
-- Rework shell expansion just a bit.
-- Add rewind() when releasing a tape before acquiring the next one.
-- Implement addition of Description in Service entry for Win32.
-- Update manual to eliminate unclear autochanger points as mentioned
- by Dan Langille.
-- Implement DESTDIR everywhere.
-- Rework spec files for 1.31 and combine the main spec and the client
- only spec making a client package. At the same time, rename the packages
- so it is a bit clearer to the user. Also fix the build to work
- as non-root (scriptdir was not prefixed with $RPM_BUILD_ROOT).
-- Correct Auto Changers and all other forms to Autochangers in the
- manual.
-- John reported needing to do two "mount" requests, and indeed that
- was the case. It turns out that pthread_cond_timedwait() does not
- always return zero when awaken by a pthread_cond_signal().
-- Include RunBeforeJob and RunAfterJob output in job output report.
-- Implement a "real" Admin job that prints a mini-job report.
-- Clean up a few error messages in findlib and filed.
-- Recent changes to gnome-console caused initial output to be
- lost -- now fixed.
-- The Win32 version crashed after each job. After hours, it turns out
- that when running with LocalSystem privilege (and not as a user), when
- Cygwin does pthread_kill(id, SIGUSR2), it gets a memory fault.
-- Moved stored/fdmsg.c to lib/bget_msg.c, and moved SD messages to
- stored.c. So now bget_msg() can be used by both the SD and FD.
-- Changed Director's bget_msg() to be called bget_dirmsg() to avoid
- any possible confusion.
-- Implemented bget_msg() in general everywhere in the FD except for
- job.c where the Dir and FD are communicating.
-- Implemented a Director only heartbeat in the FD for the cases where
- there is either no connection to the SD or the FD is already reading
- from the SD. start_dir_heartbeat() ...
-- Add heartbeat to restore and verify volume.
-- Add "Heartbeat Interval" to Storage resource, which sets interval the
- SD sends heartbeats to the FD and DIR, 0 disables heartbeats.
-- Add "Heartbeat Interval" to FileDaemon resource, which sets the interval
- the FD sends heartbeats to the DIR, 0 disables heartbeats.
-- Added heartbeat from FD to Dir every HB_TIME rather than forwarding
- SD heartbeats.
-- First cut label dialog.
-- Turn on new semaphore code for simultaneous Jobs.
-- Fix cancel trying to release semaphore's not acquired.
-- Implement get_pint() and get_yesno() for UA.
-- Implement find_arg_with_value() for UA.
-- All command line "slot" to be specified for label command.
-- Rework heartbeat code in FD to correctly terminate.
-- Fix btraceback to use smtp and to eliminate double //
-- Fix "storage" command to include ssl for verify and restores.
-- Add Heartbeat code when SD is waiting on a tape -- heartbeat every 20 mins
- to keep stateful firewalls from timing out the connections.
-- Fix src/stored/Makefile.in typo causing problems in statically linking
- btape. Thanks to Lutz for reporting this.
-- Create an is_client_alive script for checking if a client is alive.
- Using this script prevents generating error messages.
-- Added corrections and updates to manual provided by Phil -- thanks.
-- Added RequireSSL to each program/daemon configuration.
-- Added EnableSSL to each correspondent for each program.
-- Added the Console resource to the Director (need to
- implement individual Console authorization).
-
-2003-04-28 Version 1.30 released
-- Fix command history for gnome-console (must malloc).
-- Add two cancel points in acquire_resources(). The job will not
- be immediately terminated in all cases.
-- The new AutoMount code broke File archives -- fixed.
-- Correct watchdog mutex race introduced yesterday.
-- Add JobLevel to Admin run started by UA.
-- Add -v to daemon startup scripts
-- Implement bmicrosleep(sec, msec);
-- Implement When for "run" command.
-- Remove unsigned from socklen_t definition in hopes it will work better
- with older systems.
-- Remove code that attempts to set PID dir and SUBSYS dir if they
- do not exist because it set them to sbindir!
-- Modify mount to initially attempt to read the volume if Bacula
- wants a tape, none is mounted, and "Automatic Mount = yes" is set.
-- Prohibit setting --sbindir and --with-subsys-dir the same.
-- Fix missing argument that cause Kaboom in update slots.
-- Fix orphaned bsock when UA gets error contacting FD or SD
-- Nearly full implementation of Win Backup API, but it does not
- work due to lack of permission! Arggg!
-- Implemented restoring directory permissions as they should be.
-- Implemented reasonable regression script. It found a number of
- restore errors.
-- Implemented the following @ commands in the console that work directly
- in the console rather than in the Director.
- input - read input from a file
- output - write output to file
- tee - tee output to file and terminal
- time - print current time
- version - print current version
- exit - quit
- quit - quit
-- Implemented new bfile io routines that will permit implementation of
- Windows native APIs for reading/writing files.
-- By default always update hard links with the prefix, but do
- not update soft links. It seems inconsistent, but it is what
- cp does.
-- Implement wait command in Console that waits until no jobs are running.
-- Fixed the < code in Include/Excludes, which forgot to skip over the <.
-- Do NOT attempt to chmod() a soft link as it will change the file behind
- the link!
-- OOPS! Lutz ran into a problem. In attempting to prevent string overflows,
- I used bstrncpy() on a variable that was malloc'ed thus truncating
- Volume names! Arrrggggg!
-- Lots of documentation of new features.
-- Rework Volume name scanning in console, made much more logical
- and corrected a bug (confusion in calling sequence).
-- Cleaned up a few error messages in cats adding more info.
-- Add the IP address to error messages due to bad connects to servers.
-- Implement default File output in config files so user can start
- saving right away without a tape drive.
-- Protect inet_ntoa() with mutex in case it is not thread safe.
-- Eliminate termcap from use in gnome console.
-- Remove unused SD maximum volume files and maximum volume jobs. They
- are implemented in the Director.
-- Make the default for Incremental and Differential saves to compare
- against both st_mtime and st_ctime rather than just st_mtime.
- This includes files moved or copied.
- Thanks to Matthias Wamser for bringing this fix to our attention.
-- On Win32 clients, make a pass through the include/exclude patterns
- and change any back slashes to foward slashes. Prevents creating
- unusable directory names containing both conventions.
-- Move ls -l output on restored files to M_RESTORED class.
-- Make gnome-console compile correctly on RH8.0
-- label barcodes now works.
-- Implemented "update slots".
-- Tweak btape "test" to always print suggestion for re-read last block.
-- Implemented "Cleaning Prefix"
-- Update alter_mysql_tables.in
-- More work on barcodes.
-- Zap VolHdr in SD when attempting to label a tape that is not
- there. Prevents false tape names the next label command.
-- First cut of bar code reading is implemented. It doesn't do
- anything but return the list to the Director.
-- Implemented relabel command that relabels "Purged" Volumes.
-- Check exit code in RunBeforeJob and err the job if it is non-zero.
-- Remove old testsuite -- too complicated
-- Print length when Authorization fails because of bad length.
-- Fix problem of NumVols in Pool getting reset on startup.
-- Implement full listing of DB records by listing them vertically
- instead of horizontally.
-- Make changes to mysql scripts as suggested by Lutz Kittler
-- Fixed code to write Uname to Client record.
-- Fixed a problem (in btape) where Pmsg() was not printing.
-- Moved re-read last block test to last in "test" command of btape.
-- Lots of new documentation.
-- Fixed newvol.c to handle retrying 10 times if the volume name already exists.
-- Removed int_least16_t from sha1.h because it does not exist on some systems.
-- Release job in SD if canceled and waiting on a mount (better cancellation).
-- Prompt for Client in restore if not specified.
-- Print "Selection is empty!" if no selection list found.
-- Add new spec files and bacula.desktop from Scott.
-- Update client every time a job is run.
-- Add verbose option to daemons for printing more user error info.
-- Test if console works with readline 4.3 (yes, it is OK).
-- Release new depkgs
-- Release new winbacula.
-- Add Uname info to Client DB record.
-- Improve error messages and make them more consistent when a non-existent
- Device is requested.
-- Separated the -mwindows option so that only Windows programs
- are built with it (bacula-fd, ...) the tty tools such as console
- dbcheck, smtp, testfind, ... are now able to be run in a standard
- Windows DOS box.
-- Add | and < options to Exclude the same as in Include.
-- Add typed in input to the text window in the gnome-console.
-- Change function that gets the entry text (previously had orphaned buffer).
-- Fix multiple Director problem in gnome-console (thanks to Lutz Kittler).
-- Thanks to Renato, I was able to test Bacula on a FreeBSD tape drive.
- There are a number of significant differences: 1. reading less than
- the number of bytes in a record returns an I/O error. 2. ioctl(MTEOM)
- looses the file position. 3. Reading two two EOF marks (or ioctl(MTEOM))
- leave you positioned after the second EOF, so you must backspace file
- to be able to append.
-- Added BSF at EOM = yes/no to Device resource to allow proper positioning
- at the end of a FreeBSD tape.
-- Made btape "test" do much better testing of error conditions (i.e.
- it now ensures that the append went well). It will automatically
- detect problems and apply fixes and then retry the test, if it
- finally succeeds, it clearly says what directives need changing.
-- Add Scott Barninger's rpm changes to the build environment
-- Add changes to mtx-changer so users can add eject and sleep for
- certain autochangers.
-- Implemented FreeBSD chflags (user defined flags).
-- Turn restore errors during setting of owner and modes into
- warning messages -- for restoring files as non-root.
-- Fix how prefixes are handled in restoring soft links.
-- Modified btape "test" command to do only those things that
- Bacula actually does. There is much more explanation, ...
-- Update manual.
-- Finally had to back up to gcc version 2 from version 3 to avoid version
- 3 nightmares.
-- Final cygwin tweaks.
-- Move start time to *after* the resource locks are acquired.
-- Unable to duplicate Phil's disabling of Bacula with nmap, but
- did make the authentication code a bit more conservative for
- dealing with bad input.
-- Added code to the query command to escape all strings input
- before substitution and sending to the SQL engine.
-- Escape user entered filenames for restore command.
-- Cleaned up the waiting code a bit -- using broadcast instead
- of signal and counting the waiters.
-- Implement new pthreads semaphore code.
-- #define new semaphore code rather than workq on USE_SEMAPHORE.
-- Lots of improvements to the document to address recent support requests.
-- Implement cycle through a set of tapes suggested by Eugeny
- Fisher with the "RecycleOldestVolume=yes" record in the
- Pool resource. Basically this record causes Bacula to purge
- to oldest tape when no more tapes are found.
-- Correct a number of small incorrect interactions between limit
- variables during recycling.
-- Corrected a bug in db_create_media_record() where VolMaxFiles and
- VolMaxJobs was not written to the database.
-- When the Director starts, the Pool record is updated in the
- database with the current contents of the Pool resource.
-- Corrected bnet_connect() to immediately stop (rather than looping
- for the timeout period) if there is a fatal error (socket, or
- hostname to ip).
-- Reworked "purge" code to make purging Volumes easier.
-- Made "list volumes" list the volumes in all pools -- also
- "list volumes pool=Default" does not produce and error message.
-- List Pool record after doing "update pool".
-- Remove pid file code from Win32 -- not really necessary.
-- Make bnet handle null jcr during cancel rather than crash.
-- Add CygwinInstall.bat and CygwinUnInstall.bat
-- Add db_lock() around newvol.c code to prevent race condition if multiple
- callers want a new Volume name.
-- Lots of cleanup to Win32 code, with additional error messages.
-- Make Bacula work on Win95 (test for GetAttributesEx).
-- Add better error messages when end of media is reached or volume
- capacity execed.
-- Turned off signal catching in readline(), necessary to keep console
- from crashing on ctl-Z with RedHat 8.0. Thanks to David Craigon for
- testing this.
-- Make the 3rd and hopefully final change to the Finclude structures.
- This new version permits multiple sets of options (more code to be
- written) to be applied against the same set of files. Thus one can
- have options that with match of *.gz and a different set of options
- for *.c, ...
-- Integrated GNOME Console font resource code supplied by Phil Stracchino.
-- Check for job_cancelled() in bnet_connect() code to stop wait loop if
- client not available.
-- Fix early end of file scanning conf file in lex.c, which previously
- caused ABORT -- now reports error. This could happen with an unterminated
- string for example.
-- Move Maximum File Size code before write and detect error on writing EOF.
-- Additional fix for Solaris 2.6 and a bdb.c fix submitted by Armin Buehler.
-- Added detection for Solaris 2.6, which uses older setsockopt() calls.
-- Defined sockopt_val_t for setsockopt() calls.
-- Added fixes sent by Bevan Anderson that fix multiple connects to FD
- (I zap keys for security, so must put back dummy key). Also a fix
- to the Internal database that wrote garbage after the filename in
- the database.
-- Back out the __SVR4 changes.
-- Add automatic configuration of socklen_t
-- Attempt to fix problems reported by Lutz with multiple simultaneous
- open file Volumes (experimental code). Serialized acquire. This may
- fix the problem, but more thought and testing is necessary.
-- Add table of "supported" autochanger models.
-- Add Solaris 2.6 (__SRV4) changes sent by Peter Schmitz.
-- Correct tape selection code in SD (|| => &&). Thanks to Chuck Hemker
- for the patch.
-- Eliminate FileOptions. Implement new Finclude and Fexclude that
- have file options contained in it. New structure must be transmitted
- to FD.
-- Split Include/Exclude into new inc_conf.c file.
-- Cleanup new Include/Exclude and FileOptions. Structures in Director
- now correct. Must transmit FileOptions to FD.
-- WARNING: With the adddress and port code in the Catalog you MUST
- remove old address= and dport= records!!!!!
-- Added code to remove cancelled jobs from the workq -- needs testing.
-- Added first cut AIX from output James MacLean sent me.
-- Second cut of FileOptions.
-- First cut of parsing FileOptions and Counters.
-- Added address:port for MySQL as well as socket for local access.
-- Fixed job.c in filed to properly handle excluded files. Apparently
- I changed the daemon protocol but forgot to update the code.
-- Enhance testfind to handle include and exclude files
-- Fix getdomainname() prototype for Darwin
-- Added new -u and -g options for specifying userid and groupid to
- use when running, so that Bacula can reduce its privileges.
-- When Bacula was hanging due to an NFS volume being down, I
- fixed a few places in the File daemon where is should have immediately
- terminated the connection instead of waiting for the Director to do so.
-- Added first cut support for Darwin.
-- Temporarily comment out the O_NOFOLLOW to avoid possible subtle problems.
-- Implemented O_NOFOLLOW in creating files in create_file.c to prevent
- creating a file at the end of a symbolic link.
-- Use chown() if lchown() does not exist (e.g. Darwin).
-- Always close stdin on startup to avoid having /dev/console attached.
-- Change all DATE occurrences to BDATE because it is used by Cygwin headers.
-- Add printing of Volume names in SD status output.
-- Display all open devices in device chain in SD status output.
-- All changing Pool in console run command.
-- Thanks to Eric Bollengier for pointing out that the run_program()
- return status was not correctly generated. Now fixed (I hope).
-- Corrected crash in Internal Database getting Volumes.
-- Flush all daemon messages at the end of every job.
-- Fix Install.bat script so that Bacula restarts after reboot on WinNT/2K systems.
-- Minor changes in the gnome-console directory.
-- Integrated in my old Tcl/Tk code into src/tconsole and moved it up
- from C to C++. Pretty crude, but it is a beginning.
-- Close syslog() %n exploit in message.c
-- Edit space before each line in gconsole.
-- Added INCEXE structure so we can have FileOptions.
-- Added support for multiple simultaneous open file volumes.
-- Fix hard linked files so that the one saved is always restored.
-- Add * to restore "dir" listing to indicate marked files.
-- Add ability to make md5sum and sha1sum in lib directory.
-- Work a bit more on the new daemon protocol.
-- Use unmask of 022 or more restive
-- Create File volumes with 0640 permissions
-- Added support for SHA1 signature. Need to modify DB to have type.
-- Document SHA1.
-- Work a bit on getting proper child status from bpipe calls.
-- Added Ludwig's mtx-changer to the examples/devices directory.
-- Added a Warning not to use the Internal Database when it is initialized.
-- Compiled and tested SHA1, and added it to the library.
-- Added code to print the "load slot" status after autoloading.
-
-=============================================================================
-2003-01-24 Version 1.29 released
-23Jan03
-- Tightened up permissions on all .conf files to be 640 so they are not
- world readable.
-22Jan03
-- Added prefixlinks=yes/no Job record to specify applying the Where
- prefix to absolute soft links. Code is not yet passed to FD, because
- FD would then be incompatible with version 1.28.
-- Added skeleton of installation for Gentoo release for Patrick Naubert.
-- Add timer on open() for reading or writing a FIFO file.
-- Put btraceback and btraceback.gdb in sysbin dir (a bit of polution,
- but at least dumps will work).
-20Jan03
-- Added "append" all messages to a log to default bacula-dir.conf
-- Added WriteBootstrap to default bacula-dir.conf
-- Made smartall.c print "Out of memory" if malloc() fails.
-- Added pthread btimer routines.
-- Added timer to FIFO open statement
-- George was still having problems with VolUseDuration failing.
- On looking into it, one line of code subtracting 1900 was
- mysteriously missing from the source -- bizarre.
-18Jan03
-- Yesterday's version corrects all the problems I was
- previously having, and my production jobs are now completing
- properly.
-- Added a #define dev_cap() to test the capabilities bits. I just
- makes the code a bit shorter and a bit simpler.
-- Added phase 1 support for an output fifo device. The big
- difference here is that it is a STREAM device, which means that
- Bacula will only write to it and not read. Thus, Bacula assumes
- that the correct "Volume" is mounted and will construct a valid
- label (without needing the Volume to be prelabeled), and write
- to the device.
-- Added phase 1 support for input from fifo device (suppress re-read,
- add empty buffer flag).
-17Jan03
-- Improve printout of dbcheck with # files/path fixing.
-- Zap SD authorization code after use.
-- Added <> back to smtp (think about this some)
-- Doc
-16Jan03
-- Massive change to add jcr as the first argument to nearly
- every db_ call. This is because I was storing the jcr in the
- db structure, which will not work because everyone shares
- exactly the same structure.
-- More cleanups of error termination status in filed.
-- Found another bug in message.c where %s was missing in JmsgN. A lot
- of cleanup in message.c
-- Found places where filename listing was made (restore, verify
- vol) where the buffer could possibly overrun.
-- Chain include files on the end of the list so that the
- order will be correct.
-- Rewrote mtx-changer to output one slot per line terminated by
- a colon followed by an optional Volume Tag for the "list" command.
- Preparation for handling Volume Tags.
-- My production crash remains elusive. Adding debug code or running
- under the debugger eliminates the problem. I found a case in
- message.c where I was extending the message string by two
- characters to send it to the console. VERY BAD. Rewritten.
-- Started implementing fifo and program handlers (i.e. streams)
- in the Storage daemon. Lots to do.
-- Added a trace capability where trace statements are written
- to a file. Tmsg(). Hopefully this won't be used much.
-- Running lots of "production" saved by scheduling a few minutes
- after the current time -- slow process ...
-15Jan03
-- Removed <> on From and To in smtp.c as suggested by James MacLean.
-- Added code to suppress spurious error messages during cancel,
- but I was unable to eliminate all errors -- to be worked
- on later.
-- Up size of print buffer from 2000 to 5000.
-- My production run failed again. I'm beginnig to suspect
- hardware problems because running by hand or under the
- debugger always works -- we will see.
-- Added Update Volume VolFiles to reset correct tape files
- a bit dangerous.
-- Use the mysql_escape_string() rather than internal version.
-14Jan03
-- Cleanup handling of JobStatus by creating a subroutine.
-- Fix a number of minor things with JobStatus.
-- Print FD and SD JobStatus on backup report.
-- Add JCR to findlib -- so now FD stops normally when cancelled.
-- My production Director segment faulted during the second Job.
- I haven't been able to track it down. After rebuilding, all
- jobs finished correctly.
-- In investigating the duplicated Paths, I found that there
- were 10,552 of them -- only Path records. After checking the
- code, I do not see the reason, but I've enhanced the code to
- print the full path name.
-- I made a few improvements to tools/dbcheck. Mostly it provides
- a bit more feedback with verbose mode on when eliminating
- duplicate filenames or paths.
-13Jan03
-- During four simultaneous backups, the File daemon started
- detecting buffer corruptions. It turns out to be due to the
- fact that the smartall.c routines were not thread safe. They
- are now.
-- Based on input from James MacLean and team, I eliminated a number
- of places where printf could be recursively called by using "%s".
-- It turns out that because of an error of my understanding of
- mysql_escape_string(), the last argument was taken as the length
- of the string to be escaped rather than the maximum length. I've
- now corrected all my code -- Thanks James.
-12Jan03
-- George Motter reported problems with UseDurations, and it seems
- that there were a number of inconsistencies and problems with
- FirstWritten and LastWritten. Hopefully for the most part they
- are now corrected. Also fixed LabelDate if done through Console.
-- Try to chase down reasons why there would be buffer overruns.
- Added P & V around referencing last_fname for status.
- Rewrote find_one.c with MEMPOOL, but not yet tested enough
- to commit.
-10Jan03
-- Give extra margin to converting filenames from Unix to Windows
- in attribs.c of findlib -- dumb cygwin API doesn't provide for
- a length.
-- Added file:line traceback to size_of_pool_memory, check... and
- realloc in an attept to get closer to the memory overrun reported
- by James MacLean.
-09Jan03
-- Made yet another fix to quoted string -- paths! Thanks to
- Scott Medlock for reporting this.
-- Made | and < work.
-- Implemented FIFO reading/writing. To do so, simply explicitly mention
- the fifo file (named pipe) in the Include AND add the new option
- readfifo=yes
-08Jan03
-- Started implementing | and < on Include names.
-- Changed source to . in cats directory as requested by Andrew Kokarev.
-
-=============================================================================
-2003-01-05 Version 1.28b released
-- Corrected a typo of working_directory in bacula-dir.conf
- reported by James MacLean.
-- Fixed the fact that path and filenames in some cases were not
- being quoted before going into the database. Many thanks to
- James MacLean for reporting this.
-
-=============================================================================
-2003-01-05 Version 1.28a released
-- Corrected a missing quote in bacula-dir.conf reported by James MacLean
-
-=============================================================================
-2003-01-05 Version 1.28 released
-General:
-- Implemented Bare Metal Recovery for Linux and manual procedures for Solaris
-- Now using only a single technotes file kes-1.28 and will add to
- it as the development goes on.
-- Wrote a general purpose bi-directional pipe command. This replaces
- previous use of pipes as well as the run_program previously used.
-- Make BSRs stop if no more matches are possible.
-- Allow unliminted number of devices in Storage daemon.
-- Allow connections to Storage daemon before all devices are initialized.
-- Better documentation (and btape test command) on using fixed block
- tape drivers.
-
-Changes submitted this submission:
-04Jan03
-- Add cygreadline5.dll to Win32 release -- needed for console
-03Jan03
-- Add scripts make_catalog_backup and delete_catalog_backup that makes and
- deletes an ASCII copy of the catalog for backup. An example of how
- to use it is in the <bacula-src/src/dird/bacula-dir.conf file.
-- Made a nicer column oriented listing of scheduled jobs for "status dir".
-02Jan03
-- Added backup/restore of raw partitions.
-- Corrected restoration of files in root directory (problem with
- splitting path from file).
-01Jan03
-- Finally decided to cleanup handling of splitting path and filenames
- in the cats directory. Now the code is in one place sql.c and it
- is done using Pool memory, so there are no length restrictions.
-31Dec02
-- Add start of Solaris bare metal recovery
-- Add Site Visit usage statistics to Web page
-- Got Bacula listed on www.backupcentral.com
-30Dec02
-- Retest bare metal recovery on Linux 2 times with verify
-- Cleanup printout of verify differences using proper casting to
- handle shorts and long longs.
-29Dec02
-- Added --enable-client-only to ./configure
-- Modified --enable-static-sd to work better and documented it.
-- Fixed Restore options (never,ifnewer, ...). They now work.
-- Moved the stored.c Resource lock into the allocation thread so
- that the same thread sets/clears it. This created a problem on
- FreeBSD.
-28Dec02
-- Added more rescue documentation.
-- Did a spell check of the Bacula doc.
-- Modified bscan to use the working directory as specified in the
- configuration file as the default.
-25Dec02
-- Fixed an important bug reported by George Motter that caused only
- the last option on an Include record to be used (all previous options
- were lost).
-24Dec02
-- Chase down some inconsistencies in creating Media records from
- the Pool defaults, and in updating/creating the Pool from the
- resource. Also fixed the cats DB routines to include all
- fileds (VolUseDuration was missing for example).
-21Dec02
-- Added building static versions of daemon static-bacula-dir, ...
-- Fine tuned the rescue (bare metal) code including support for grub.
-- Added skeleton freebsd rescue
-- Corrected SQL syntax error in autoprune code (JobType => Type).
-- Added error messages for SQL errors in autopruning.
-19Dec02
-- Documented Bare Metal Recovery
-- Create new "rescue" directory containg the Bare Metal Recovery code.
-- Fiddle with SQL a bit for pruning as apparently the last InitCatalog
- was pruned after the expiration date eventhough it was the ONLY copy!
- I'm not sure this is fixed yet.
-18Dec02
-- Allow Director to pass a NUL where string to FD (fix in FD).
-- Fix installation mv of query.sql.
-- Make sure btraceback.gdb is not wiped on "make distclean"
-- Corrected a bug in mod of replace options pointed out by Dave Anderson.
-16Dec02
-- Started adding FileOptions ...
-- Fixed and incorrect print out of the number of files restored (Jarif).
-- Finally fixed EndBlock (and file address for Files) in catalog!
-- Added hostname to tape header as always planned.
-- Removed Level code (will not implement unless strong demand exists).
-- Tweaked bscan to print number of errors ignored before first SOS.
-- Enhanced btape "fill" to permit using one tape and to dump last
- block before writing and upon read back.
-- Make fsf_dev() return 0 on fail and 1 on success.
-- Use new db_get_job_volume_parameters() to enhance Write Bootstrap to
- contain more info (start/end file/block, file indexes).
-- Added --enable-static-fd, sd, and dir to configuration to enable making
- static versions of the daemons.
-13Dec02
-- The btape test program was indicating errors on Adrian's machine
- using the ATAPI (ide-scsi) tape drive. It turns out that this
- is a fixed block driver as a consequence, Bacula must be setup
- to write fixed blocks. btape was not always using the fixed
- blocks defined in the Bacula config, so that has been updated.
- It now works fine. A lot of tips added to the Bacula test command
- to help guide the user.
-- Documentation of the above significantly improved in the manual.
-12Dec02
-- Added code in watchdog to permit setting and clearing child timers. If
- the timer expires, the child process is killed.
-- Modified restore to handle differential jobs.
-- Added a new test to the btape "test" command
-09Dec02
-- More documentation of new features (week position in scheduler, bsr).
-- Re-read last block written on full tape to verify it.
-- Fix segmentation fault with btape fill command due to missing FileSet MD5.
-07Dec02
-- Created better SQL input editing routines str_to_int64 and str_to_uint64()
-- Pull Client from database in Console restore command.
-- Create a Unique list of Volumes to be mounted (previously had repeats).
-- Made many of the SQL searches better by using the ClientId rather than the name
- in the restore Console command.
-- Modified reading of a tape to include the VolFile info. Once the
- tape is past the specified file, reading stops. The BSR now includes
- both the VolFile and VolBlock. Currently VolBlock is not used.
-- Handle multiple volumes better by creating a real volume list with all
- parameters in it.
-- Display "At prompt waiting for input" in gnome console when at subcommand
- prompt.
-- Broke ascii to internal and internal to string editing routines out into
- new lib/edit.c file.
-02Dec02
-- Added a readme and an afs-bacula script to the examples directory
- that permits Bacula to backup an AFS filesystem. Thanks to
- Lucas Mingarro for the submission.
-- Added A Sun-desktop autoloader script and Device definition to the
- examples/devices subdirectory. Thanks to Lucas Mingarro for the
- submission.
-- If the WriteBootStrap fails, the job will now be marked in error.
-- Added a week position to the scheduler syntax that allows you to
- specify 1st, 2nd, 3rd, 4th, or 4th, or first, ... fifth as a week
- position specification in front of a day. So if you say
-
- 1st sun ...
-
- the scheduler will start only on the first sunday of the month. The
- day specification can also be a day range e.g. sun-fri.
- This code is untested.
-- Implemented bpipe.h and bpipe.c in src/lib, which defines a bi-directional
- pipe. This allows executing other programs and sending them information
- as well as getting info from them.
-- Replaced the previous pipe usage with bpipes in RunBeforeJob and
- RunAfterJob.
-- The mail program now uses bpipes rather than pipes, which means that any
- error output will appear in the job output (truly bi-directional).
-- Modified BSR to handle counts and to stop when no more matches are possible.
- This is untested.
-- Improved error messages in smtp.
-
-=============================================================================
-2002-12-12 Version 1.27d
-- This is a minor update that fixes a segmentation fault in btape
- as well as reduces non-important error messages in bscan.
-
-2002-11-29 Version 1.27c
-- Yet another silly error duplicating a column name in the SQLite
- make tables. No code change, just a make file.
-
-2002-11-29 Version 1.27b
-- Set DB version to 5 in DB make files.
-
-2002-11-28 Version 1.27a
-- Use g++ instead of gcc for testfind in tools
-
-2002-11-27 Version 1.27 (26Nov02) released 28 November 2002
-
-General: from kes25Nov02
-- Mostly Cygwin changes
-
-Changes submitted this submission:
-- Updated bdb_find.c to have new calling sequence for db_find_job_start_time
-- dird/catreq.c edit in Volume name in error messages to SD
-- attribs.c switch to using the cygwin API to convert from POSIX paths
- to Win32 paths. This now permits Win32 path specifications in Include
- statements (all combinations not yet tested). It also avoids the large
- number of errors seen by Lutz if a Win32 path is specified in the Dir.
-- Update testfind help and remove set_attribsEx debug code.
-- Build testfind as default.
-- Turn off debug message in stored/askdir.c
-
-General: from kes21Nov02
-- Another change in the database. You MUST either re-initialize
- your database or use the appropriate ./alter_xxx_tables in
- the src/cats directory.
-
-Changes submitted this submission:
-- Additional documentation.
-- Added MaxVolFiles to the database (not yet implemented in code).
-- Increased the database version from 3 to 4.
-- Change VolMaxBytes to MaxVolBytes, which is much more descriptive.
-- Compressed unnecessary spaces out of a lot of SQL statements.
-- Changed many %d to %u where unsigned integers are used.
-- Added the Bacula version and build date to each backup output.
- This will help knowing what version of Bacula was used.
-- Implemented VolUseDuration MaxVolBytes, MaxVolFiles, and MaxVolJobs
- based on maximums set in the Volume (Media) record rather than in the
- resource. This means the values can be individually set on a Volume basis.
-- Allow commas separating Include options (this was a subtle bug).
-- Added maximum string length argments to a number of subroutines to
- prevent buffer overflows. Most notably was do_prompt().
-- Replaced MANY occurrences of strcpy() with bstrncpy(), which guarantees
- both that the length is not exceeded and that the string is properly terminated.
- This has a risk of a certain destabilization -- as does the changes to
- the SQL noted above.
-- In cram-md5 routine use my_name if gethostname() returns an error.
-- Increase timeout from 2 minutes to 3 minutes in authorization code.
-- Check the full string including \n in authorization.
-- Throw away any response longer than MAXSTRING.
-- Added a number of additional error checks on subroutine return statuses.
-- Replaced as many lld's with edit_uint64 as I could find.
-22Nov02:
-- Added MaxVolBytes to Pool record - had forgotten it. Updated DB version.
-23Nov02
-- Update manual to document new Pool/Volume attributes
-- Correct make_sqlite_tables (typo, plus missing value in Pool)
-- Fix bizarre behavior in gnome-console and console when auth fails.
-- Add Pool attribute query
-- Add a few more error messages in askdir.c
-- More strcpy() conversions to bstrncpy().
-
-General: from kes18Nov02
-- Did a number of cleanups of string copying to limit the length
- and prevent buffer overflows.
-
-Changes submitted this submission:
-- Added a mutex arount the gethostbyname() so that multiple simultaneous
- jobs get the correct address.
-- Added the MaxVolJobs to the Media alter tables script for MySQL (forgot it).
-- Changed arg to db_find_job_start_time to be POOLMEM for returning the string.
-- Add the new VolUseDuration and MaxVolJobs to all the db_ routines.
-- Use bstrncpy() in most places in the db_ routines to prevent a bad
- database from crashing Bacula (self protection).
-
-General: from kes13Nov02
-- You MUST either re-initialize your databases or use the
- ./alter_mysql_tables
- or
- ./alter_sqlite_tables
- in the <bacula-src>/src/cats directory to modify your database tables.
-- Major improvements to dbcheck including an interactive mode.
-
-Changes submitted this submission:
-- Implemented VolumeUseDuration and MaximumVolumeJobs which control
- when a tape can be marked Used.
-- New tape status "Used" means it was used and cannot be used any more.
-- Defined utime_t which is 64 bit epoch time in seconds. btime_t is
- 64 bit epoch time in microseconds.
-- Created alter_xxx_tables to add new columns (VolUseDuration, MaxVolJobs) to
- database. Incremented db version.
-- Changed a few subroutine names concerning dates to be more descriptive.
-- Fixed several places where the last filename was not stored in JCR in
- FD verify_vol.c and restore.c
-- Major update to dbcheck. Unfortunately I used subselects, which work
- perfectly fine in SQLite, but not at all in MySQL. I must now rework
- it for MySQL. What a pain!
-- Removed "Database found" from configure output. It was no longer used or valid.
-- Corrected doc --working-dir => --with-working-dir Thanks to Tuck for
- reporting this.
-- Added the database name to the error message for mismatched DB version.
-- Commented out GMP and CWEB from configure as they are not currently used.
-
-General: from kes09Nov02
-- Converted the manual over to a new format written in wml. This
- gives navigation buttons on the top and bottom of each page
- as well as a standard page size.
-- Updated the main Web site, providing a menu bar to the left
- and much better organization and presentation of the information.
-- Added code to recognize a Volume written with a larger block
- size than specified. The code automatically adjusts.
-
-Changes submitted this submission:
-- Created a new scripts directory and moved most of the scripts
- previously in the main directory there. This cleans things up
- quite a bit.
-- Moved the randpass stuff into autoconf.
-- ensure that the generic make_bacula_tables and drop_bacula_tables
- are installed.
-- Added code to filed to allow it to be run from inetd. Just add the
- -i option. I have not tested it.
-
-General: from kes30Oct02
-- Alex found a problem with GZIP compression -- fixed.
-- bacula stript fixes.
-- Segment fault in Director fixed.
-- Added openbsd to platforms
-
-Changes submitted this submission:
-- GZIP compression was broken for large files due to a variable that
- is changed during the compression. This was relatively easy to fix.
- However, there were a number of fixes required to make GZIP and SPARSE
- files work together. Found one more place in bextract where SPARSE_GZIP
- testing was missing.
-- During testing of the above, I ran into the restore problem of multiple
- FileSet records. Fixed by including the FileSetId and the MD5 on the
- selection string, then always using the FileSetId. It is a bit
- confusing for the user, but ...
-- Francis found a problem with bacula.in (fixed - thanks)
-- I found another problem with bacula.in, so now it REALLY should work
- on most systems.
-- Added the Replace options code for restores. Not tested.
-- Fixed an ugly stack overrun bug in reading the config file
- that has been in for a long time. I found this in testing on FreeBSD
- where the Director seg faulted.
-
-General: from kes29Oct02
-- Major change to the bnet communications routines.
-
-Changes submitted this submission:
-- Modified the bacula script to use pid files, so this script should
- now work on more platforms. Updated devel_bacula as well.
-- Added the full GNU hostname on the configuration print output.
-- Added gettimeofday() to configure, and tweaked a few variables for
- OpenBSD.
-- Added a chapter to the manual on Porting Bacula to other platforms.
-- Documented in Tips how to use the WriteBootstrap record.
-- Modified bc_types.h to error if 64 bit types are not found.
-- Pass replace option for restore to the FD (no code to use it yet).
-- Modify the FD to pass back the GNU OS string as well as the DISTNAME
- and DISTVER. This needs to be put in the Client record in the catalog.
-- Major reworking of the bnet routines to eliminate the zero length which
- previously indicated a signal. This risks to create some subtle communications
- bugs. The changes now permit blank lines to be sent from the user to the
- Director.
-- Found and corrected a few more places where the Win32 attributes were not
- being recognized.
-- Permit spaces in the Where string (restore) by bashing/unbashing them.
-- Handle quotes correctly in the Console program (actually Dir ua code).
- Previously they were not handled in the middle of a string.
-- Corrected two error message (error reading file), which previously stated
- it was a network error.
-- Reworked the files in the binary Windows release. Removed unused programs
- and added a README with the copyright as suggested by John. Also added
- console.exe to the release.
-- Found and corrected an autoloader mount problem where the wrong tape
- was specified. Previously it looped, then gave up. Now it correctly
- detects the volume is not correct and zaps the Slot in the catalog.
-
-General: from kes23Oct02
-- I have mainly worked on getting all the details of a Restore
- to work correctly (new tape format, support for Win32
- attributes, ...)
-- Trademarked name Bacula.
-- Implement Bacula tape format 11 (1.0 Immortal). This format
- will be maintained forever.
-- Accept Any Volume is yes by default. This modifies Bacula's behavior
- when writing tapes.
-
-Changes submitted this submission:
-- Corrected a bug on FreeBSD where CFLAGS would get a "yes". I was
- unable to reproduce this, but a user confirmed the correction.
- It was a problem with detection of largefile support, which FreeBSD
- has by default.
-- Added a new "license" chapter in the manual. Re-licensed a number of
- library routines (bnet.c, hmac.c md5.c, cram-md5, ...) with LGPL so that they
- can be used in proprietary software to access Bacula if so desired.
-- Move Director's AutoChanger doc to correct location (in Storage
- resource).
-- Document why trademark (to protect compatibility).
-- Implement and turned on Bacula tape format 11 (also BB02). This
- format moves the VolSessionId and VolSessionTime from each record
- header into the Block header. This is MUCH more efficient when reading
- records as now whole blocks can be skipped.
- Also added JobStatus in End Of Session record, and added MD5 for
- FileSet, which is necessary to insure uniqueness.
-- Implement a new Bacula time format for btime_t. It is Epoch time
- in microseconds (i.e. base 1 Jan 1970 in microseconds).
- This replaces previous floating point times.
-- Added Win32 extended attributes. In doing so, I moved all attribute
- handling from src/lib into src/findlib. Added new streams for
- Win32 attributes and for GZIP Win32 attributes.
-- Modified "Accept Any Volume" so that it really permits any volume
- in the pool to be mounted.
-- Removed "Mount Anonymous Volumes" from Storage daemon config.
-- Implemented sparse files. You must add "sparse=yes" on the include line
- for it to be enabled.
-- Print "None" in backup summary rather than 0.0% if there is no compression
- enabled.
-- Improved error checking in daemon connection/authentication code to prevent
- garbage data from harming a Bacula daemon.
-- All daemon tools MUST have a config file.
-- Completely strip drive specification on Win32 if a Where prefix is specified.
-- Corrected DB info for writing to files. Now the File Address is stored
- in File-Block variables in the catalog.
-- All Storage daemon tools now use common code for acquiring/reading
- Volumes.
-- If a device is unmounted, report it even if the device is not open. This
- will help inform users who have BLOCKED Bacula by unmounting a drive.
-
-
-=============================================================================
-2002-10-12 Version 1.26 (10Oct02)
-General: from kes10Oct02
-- Changed Job name conventions to avoid : which is an illegal
- character on Windows.
-
-Changes submitted this submission:
-- Added check for inet_pton to configure.in. If it does not
- exist (e.g. Windows) use inet_aton
-- Documentation on GZIP.
-- Another restore doc example.
-- Documented btape fill command.
-- Set default restore directory from /tmp to /tmp/bacula-restores
-- Add additional no find error messages to sql_get.c
-- Creating a bootstrap file on Windows failed because the Job name
- contained colons which are illegal on Windows. Replaced the
- colons with periods. This corrects the Windows restore problem.
-- Print number of files to be restored in "restore" command.
-- On Windows systems, if there is a prefix, completely eliminate
- any drive: at the beginning of a path.
-- Minor corrections to the tree routines to handle Windows
- files such as c:/ better. Previously it insisted on /c:/, which
- would then not be found in the catalog for a "dir" command.
-- Modified cd command in restore to try /c: if c: fails.
-- Add a new S_ISWIN32 bit to the st_mode word so that low level
- routines that create files do not print error messages.
-- More work must be done to restore all Windows files correctly.
- Currently the following bits are not handled:
- Archive
- Hidden
- System
- Also, all the dates are not properly restored.
-
-General: from kes09Oct02
-- More documentation.
-- Implemented new fill command in btape that permits filling
- a tape and then reading it back to ensure that it works
- with Bacula.
-
-Changes submitted this submission:
-- Added ReadBytes to JCR, which contains Job bytes read by
- FD, JobBytes contains compressed output of FD.
-- Modified FD to pass back JobStatus, ReadBytes, JobBytes, ...
- for backup jobs. This is upward compatible.
-- Modified backup termination status report to contain the
- compression ratio 100 * (1 - compressed-bytes/uncompressed-bytes)
- This will always be zero if no software compression was
- done, or if you are using a version 1.25 or older FD.
-- Pickup Job termination status of FD in backup, so now
- the termination status represents the state of all three
- daemons.
-- Implemented new fill command in btape that permits filling
- a tape and then reading it back to ensure that it works
- with Bacula.
-
-General: From kes06Oct02
-- Implemented first major cut of bscan -- program to scan a tape
- and recreate a Bacula catalog.
-- Fixed lseek() relative negative seek that prevented writing multiple
- jobs to a File volume.
-- Implemented BB02 tape format -- currently turned off for writing.
-
-Changes submitted this submission:
-- Updated README
-- Implemented new BB02 tape format, which moves the VolSessionId and
- VolSessionTime from the record headers into the Block header. It
- is currently turned off.
-- Implemented new btime time/date format on the tape. This is currently
- turned off.
-- Added JobStatus to EOS tape label. This is currently turned off.
-- Changed start_block, ... to StartBlock in JCR for uniformity.
-- Print a message telling which tables were dropped/made with
- ./drop_bacula_tables.
-- Return JobType and JobLevel in db_get_job_record().
-- Implemented get_current_btime(), which returns btime_t.
-- Bump debug message max size to 2000 bytes.
-- Add btime_t serial/unserial routines.
-- Rework all tape label routines to integrate btime and other
- label format changes (currently turned off -- for writing).
-- Fix lseek() to always be positive -- block.c
-- Consolidate record, block, and label major #defines in block.h.
-- Major implementation of bscan. Some more minor tweaking will be
- necessary. E.g. add multiple records for multiple simultaneous
- Jobs.
-- Cleanup lseek() to always use off_t as second argument.
-- Add new "created" tape label (EOT_LABEL). This generates a callback
- to the read_records() routine when the final end of all tapes is
- reached allowing proper termination and updating of the media records.
-
-General: From kes25Sep02
-- Added means to bind servers to specific address.
-- Documentation
-
-Changes submitted this submission:
-- Added DirAddress, FDAddress, and SDAddress records to the corresponding
- resources that allow the server to bind to a specific address
- rather than any address. This security improvement was suggested by
- a user -- thank you.
-- Eliminated deprecated "Address" record from all sample Storage resources.
-- Made quite a lot of improvements to the bscan program. Much more
- to do. Aside from details, it is able to recreate a database
- from which you can do a restore.
-- The s option is not accepted on all versions of ar, so replaced it
- by an explicit ranlib call.
-- Fixed a bug that caused the Director to crash if you rudely bring
- down the console program in the middle of an SQL command.
-- Fixed a bug (missing break) that caused scheduled Admin jobs to
- be listed as "Unknown type".
-- Removed old code from Storage daemon that used a separate FD port.
-
-General: From kes14Sep02
-- Better key generation on non OpenSSL systems.
-- 64 bit file address support if available.
-- Implement autochanger for reading
-- Lots of cleanup of tape reading code.
-- Automatically create all Pool resources when Bacula starts.
-- Implement bscan.c
-- Implement autochanger use via the Console commands "add" and "label"
-- Begin implementation of a regression script
-- Write bootstrap after ever job
-
-Changes submitted this submission:
-- After noticing that the non OpenSSL random key generator was
- not good on Solaris, John wrote a very nice randpass generator.
-- Integrated John's makeSessionKey for generating the FD->SD
- authorization.
-- Statically link tools (doesn't work on Solaris).
-- Document how to debug Bacula (new chapter in the manual)
-- Remove unneeded printing of error message in sql_get.c
-- Free SD description config record (previous oversight)
-- Bash spaces when sending Director names, and unbash them when
- received.
-- Ensure no divide by zero in rate computation in backup.c
-- Implement WriteBootstrap in backup.c
-- Allow tape reading to request volume information for any
- volume.
-- Create all Pool resources at startup.
-- Show only Backup jobs in Restore listing of last 20 Jobs.
-- Handle 64 bit stat packets in restore.
-- Don't do shell expansion on store_dir in config if string
- starts with |. This is used for piping the program for the
- WriteBootstrap.
-- Ignore SIGHUP -- Déjà Gnu was triggering this.
-- Implement autochanger for reading, many changes to
- acquire_device_for_read()
-- Implement callback for reading Volume. Implement in bextract,
- bls, and bscan.
-- Implement bscan
-- Add count to bsr.
-- Fix Volume in bsr.
-- Move autochanger code to new subroutine in mount.c
-
-=============================================================================
-2002-09-05 Version 1.25a (05Sep02) Released
-- Fix unitialized stack variable in bextract so it
- will always read the currently mounted tape.
-
-=============================================================================
-2002-09-04 Version 1.25 (01Sep02) Released
- General:
-- Added .cvsignore files in each directory to cut down on the
- CVS output when scanning directories and finding Makefiles
- and such which are not part of the CVS tree.
-
- Changes submitted this submission:
-- Cleaned up a lot of the error messages in Verify, including
- indenting.
-- Had to remove some of the "automatic" error message printing
- in the DB because they are in fact things that come up
- for Verify but not really errors.
-
-
- 2002-08-30 Version 1.25 (30Aug02) Beta
- From kes30Aug02
-- Fixed a bug where only the first file was restored if
- it is hard linked. The other links were lost.
-- In some cases of restoring to alternate directories, softlinks
- were not properly restored.
-
- From kes28Aug02
- General:
-- Bacula backups now run up to 12 times faster than version 1.24
-- Bacula can run multiple simultaneous Jobs.
-- Had to turn off TRANSACTIONS in SQLite because it doesn't work
- with multiple simultaneous jobs (I'm working on this).
-- Added a better Job printout for Restore Jobs.
-- Added a save/restore Rate to backup and restore jobs. This
- does not yet subtract out operator wait time so it will be
- underestimated it the Job waits on the tape (mount/label).
-- Fixed a major bug caused by free()ing a buffer twice in
- the Restore code. This made the SD more or less useless after
- any restore Job. Arrggg!
-- DIR - SD protocol changed, both must be updated at the same time.
-- DIR - FD protocol changed in upward compatible way. Upgrade of
- FD not required, but recommended.
-
- Changes submitted this submission:
-- Added bell to "make" when errors are detected.
-- Changed default compile option from -g to -g -O2
-- Additional documentation as usual -- much based on questions or
- feedback from users. Thanks.
-- Fixed example config files to use new syntax and to have a
- Restore Job.
-- Define ETIME to ETIMEOUT for Irix
-- Added JCR filed to DB structure permitting direct printing error
- messages from within the Database subroutines.
- Some error messages may be printed twice as a consequence.
- When I see them or someone reports them, I will remove the double.
-- Added JCR to the bsock structure. This allows direct printing
- of network errors from within the network code.
-- Made most "trivial" debug messages have level 100 or greater. This
- allows for easier debugging of new code using the range below 100.
-- Began replacing all Emsg() with Jmsg() using a NULL as the JCR in
- Jmsg() is the same as Emsg().
-- Fixed several crashes in the Director because of malformed config files.
-- Added SpoolAttributes to Job resource.
-- Pass CatalogFiles to SD. If set to no, the attributes are dropped
- within the SD rather than being sent to the DIR.
-- Cleaned up a number of information/error messages in user interface.
- This includes eliminating the "pretty please" response in favor of
- "yes/no" to delete volumes and pools.
-- Cleaned up quite a number of uninitialized variables reported when going
- to -O2, most were harmless, but a couple could cause problems.
-- The cd command in restore was not working correctly (it didn't allow some
- legal cds).
-- Fixed a segmentation violation in the directory tree handling code in
- the restore command.
-- Handle a few error conditions in the restore command better.
-- Permit "Where" to be set to nul in modification of a run command.
-- Clarified the error message for Verify if an InitCatalog has not previously
- been done -- thanks Chuck.
-- Add MaximumConcurrentJobs to FD.
-- Added code to mem_pool to die if a buffer is released twice.
-- Lots of work done on SD for multiple simultaneous jobs. Split device.c
- into device.c, mount.c and acquire.c
-- Started writing new lock code for SD, but may back it out -- needs more
- thought. Current code works, but is too complicated. Maybe can simplify it.
-- Cleaned up the SD tools code quite a bit. Added bootstrap to all tools.
-- Ensure that tape session labels are not split across two blocks. This makes
- reading them back much easier.
-- Fixed another restore bug concerning tape labels on multi-volume saves.
-
-=============================================================================
-2002-08-14 Version 1.24
- From kes12Aug02
-- Made a new tools directory.
-- Moved smtp into the tools directory.
-- Created a dbcheck program in the tools directory that
- checks for certain database errors and if requested fixes them.
-- Put the database link flags on DB_LIBS so that it now only is
- on binaries that actually need it.
-- Document dbcheck and testfind programs.
-- Move testfind to tools directory.
-- Check for FileSet after getting Client name in Restore command.
- Modify all necessary SQL commands to accept FileSetId.
-- Add a db_get_fileset_record in cats directory.
-- Correct list last 20 files concatenation to be MySQL
- dependent. They aren't SQL standard. Use SQL standard || for
- other SQL programs.
-- Modify dir command in file selection to produce a long form
- listing of the file/directory name.
-- Add platforms/irix/*.in files to CVS
-- Make Console command scanner accept quoted value fields.
-- If after selecting Client to restore, there are multiple
- FileSets, ask user to select one.
-- After obtaining JobIds for restore, ensure that there is only
- one MediaType, and select a Storage resource to be used.
-
- From kes11Aug02
-- Made restore actually work.
-- Made console and gconsole be configured (requested by Chuck)
-- Updated kernstodo
-- changed fs in Job record to fileset for clarity
-- The console run command was not properly picking up the command
- line arguments. Fixed!
-- Changed add/remove/rm to mark/unmark
-- Volume keyword VolumeName was wrong, changed to Volume (in restore bsr).
-- Pass jcr to parse_bsr, and if non-NULL, it will output error messages
- to Job stream rather than Emsg.
-- Modified lexical scanner to include caller context so that jcr can
- be stored in lex context allowing error messages to be properly
- routed.
-- Renamed the Job message chain to be jcr_msgs. This eliminated the
- previous confusion with the default value, now named jcr->messages.
-- Implemented multi-volume bsr records.
-- Implemented pm_strcat() and pm_strcpy() to cat/add to memory pool
- buffers in same way as strcat/strcpy, but expanding buffer.
-- Modified db_get_volume_names to handle arbitrarily long Volume list.
-
- From kes07Aug02
-- If the Console program terminated during the printing of messages,
- the message file was left locked. This was corrected by using the
- new read-write lock code.
-- Implemented Pw() and Vw() for obtaining and releasing a write lock
- using the rwl_xxx routines.
-- Deleted some old pthread_mutex code from mysql.c
-- In making the Irix port, I previously corrected the base64 routine so
- they were not sensitive to the machine definition of char. This made
- them incompatible with previous versions invalidating MD5 signatures
- which are in base64 format. I have now corrected this, making the
- routines compatible with the previous version but also insensitive
- to the default definition of char.
-- Removed some unnecessary NPRT() usage in signal.c (pointed out by
- the Irix compiler).
-- Add back BNET_NONO for compatibility with older File daemons.
-- Implement runing a restore Job in the restore command.
-- Make installation of query.sql unconditional. To prevent you own file
- from being overwritten, give it a different name.
-- Made parse_command_args() in ua take command from ua->cmd, this
- simplifies it and allows usage in other places -- e.g. building
- arguments for created run command in restore.
-- Cleaned the naming of s_full_ctx to be s_jobids.
-- Write the bsr created in restore to "working-directory"/restore.bsr
-- Fix bugs in command line scanner in run command -- also some misplaced
- breaks!
-- Eliminate static cmd in ua_server.c
-- Eliminate segmentation fault when using the Run command in the
- Console -- forgot to init_msgs().
-
- From kes06Aug02
-- Did a good amount of documentation.
-- Added sql_cmds.c to CVS, forgot, pointed out by Chuck.
-- Added new platforms/irix directory to CVS
-- Turn off transaction debug code in sql.c
-- Reworked the scheduler so that it handles the same Job starting
- twice in the same hour. Previously it took one or the other.
-- Tightened up the "slop" in the timings that I programmed to ensure
- that the same job isn't run twice or that no job was missed.
-- Increase the sleep time.
-- Used job_type_to_str() in status so that Admin jobs are correctly reported.
-- Add internationalization message chars to a number of routines
- in util.c
-- Make the watchdog timer clear the mutex when it exits.
-- Some tweaks to the Restore command. It needs fixing when a Job spans
- two or more volumes.
-
- From kes05Aug02
-- Initial cut at adding Irix File daemon support.
-- Lots of work on the restore command.
-- Take a stab at eliminating the "broken pipe message"
- when the console program prematurely terminates.
-- Reimplemented transactions for SQLite by keeping
- them all in the same thread.
-- quit in the Console program now waits for Bacula to
- quit. To immediately quit, you must enter .quit
-- Eliminated BNET_EOF -- this COULD have some negative consequences
- on interdaemon communications.
-- Define Job termination status for Admin jobs.
-- Write new bstrncpy() function that guarantees that strcpy is
- properly terminated.
-- Fixed command input in ua_input.c to accept quoted items as a
- single field.
-
- From kes01Aug02
-- The changes that added indexes to the SQLite database were
- lost -- thanks to Chuck for pointing this out. Redone.
-- Fixed a problem quoting strings in SQLite. This showed up
- as database errors with files containing ' or " in the filename.
-- Implemente restore command -- still in progress.
-- Added indexes to all fields in SQLite that exist in MySQL.
-- Moved unused immortal files from src/lib to src/immortal.
- This will permit splitting depkgs.
-- Started work on adding embedded MySQL. Cannot get the tables
- to work for the moment. Please don't try to use this option.
-- Convert to using single quotes for enclosing all strings.
-- Implement correct quoting algorithm for SQLite strings.
- Is dequoting needed?
-- Started centralizing SQL statments in the Director in sql_cmds.c
-- Changed a number of M_ABORTs to M_ERROR_TERM so that program terminates
- but does not produce a dump.
-- Allow wild-card matches in bsr for Client name, and Job.
-- Change OflineOnUnmount=no as default.
-- Fixed improper printing of filenames containing a space in bls.c
- Thanks to Carlos for reporting this.
-
-===========================================================================
-2002-07-26 Release 1.23a
-- Fix segmentation fault is FD status.
-- Turn off TRANSACTIONs for SQLite.
-
-===========================================================================
-2002-07-23 Release 1.23
- From kes22Jul02
-- Updated Bacula to handle some minor differences in MySQL 4.0.2
- (still works with older MySQLs).
-- Updated MySQL documentation to correct some minor errors.
-- Added kernstodo to CVS
-- Fixed create_mysql_database, which I recently accidently broke.
-- Disallow zero length volume names in Console program.
-- Create alter_mysql_tables and alter_sqlite_tables for conversion
- from 1.22 table format to 1.23 table format.
-
- From kes20Jul02
-- Investigation of SQLite performace problems reported by Chuck.
-- Updated ChangeLog
-- Updated README
-- made root@localhost the default email address because many smtp
- servers reject root but accept root@localhost
-- Added an autochangers chapter to the manual.
-- Documented most of the new features in 1.23
-- Modified the SQLite interface code to start a transaction at the
- beginning of a job and commit it at the end of the job. It
- also commits it after 10000 changes. Hopefully this will
- improve performance.
-- Set the default cache pages from 2000 to 10000 for SQLite (i.e.
- about 15Megs of memory) hoping to improve performance.
-- Terminate last filename referenced in FD prior to copy to
- avoid race problem with multiple threads and no locking.
-- Enhanced the status output to include the JobType
-- Print an error message if the email program terminates in error.
-- If your machine has an MTUNLOCK, do it before doing an OFFLINE to
- ensure that the door is unlocked.
-- Added code to stored/append.c to spool attributes. This is in
- a testing stage and must be explicitly enabled.
-- Added a no_attributes variable to stored/append.c that prevents
- the attributes from being sent to the Director. As yet, no way
- to turn it on.
-- Modified SQLite code so that after 10000 updates any transaction
- is committed, then restarted. This keeps it from using too much
- memory.
-- Set the default cache size to 10000 pages (previously 2000).
-- Fixed a segmentation fault on Sun due to no default value for
- the JobStatus.
-- Added the same indexes to SQLite that I exist in MySQL. This
- VASTLY reduces CPU usage for lots of inserts.
-- Added spooling to bnet_send().
-
- From kes18Jul02
-- The following two changes were prompted by questions/suggestions
- from A Morgan.
-- If you have "AlwaysOpen = no" in your SD Device
- resource, Bacula will free() the drive when it
- is finished with the Job.
-- If you have "Offline On Unmount = yes", in your
- SD Device resource, Bacula will offline (or eject)
- the tape prior to freeing it.
-- Added Maximum Open Wait to allow open() to wait if drive is busy.
-- Added RunBeforeJob and RunAfterJob records to Job records.
- This permits running an external program with the following editing
- codes:
- %% = %
- %c = Client's name
- %d = Director's name
- %i = JobId
- %e = Job Exit
- %j = Job
- %l = Job Level
- %n = Job name
- %t = Job type
-
- From kes17Jul02
-- Added autochanger support to devices.c
-- Allow user to change Slot in the Volume record.
-- Implemented code in lib to run an external program
- (tape changer)
-- Implemented a changer script for mtx.
-- Currently the changer commands used are:
- loaded -- returns number of slot loaded or 0
- load -- loads a specified slot
- unload -- unloads the device (returns casette to slot)
-- Other changer commands defined but not yet used:
- list -- returns list of slots containing a cassette
- slots -- returns total number of slots
-- Implemented ChangerCommand, specified in the SD Device
- resource, permits editing of:
- %% = %
- %a = archive device name
- %c = changer device name
- %f = Client's name
- %j = Job name
- %o = command
- %s = Slot base 0
- %S = Slot base 1
- %v = Volume name
-- Implemented MaximumChangerWait default 120 seconds. It is
- specified in the SD Device resource.
-
- From kes15Jul02
-- Moved techlogs from main directory to be subdirectory of doc
-- Added code for strerror_r, and detection of gethostbyname_r().
-- The protocol between the Director and the SD has changed.
-- Major rework of SD tape mounting to prepare for Changer commands.
-- Separated Update Media record and Create JobMedia record. These
- are done from the SD by calling the Director. Need separate Create
- JobMedia so that when a Job spans a volume, all other Jobs writing
- the same volume will also have JobMedia records created.
-- Added message to user indicating selection aborted if he enters .
- to a Console selection request.
-- Create a jobstatus_to_ascii() routine for use in status commands.
- This makes a single routine from three separate pieces of code.
- Updated the code to properly handle more (all) termination statuses.
-- Tried to fix the gnome-console to handle history a bit better. There
- are still some problems with focus not being properly set to the edit
- box after history replacement.
-- Removed the shutdown() from bnet_close() hoping to fix Console termination
- errors that are occassionally seen -- no luck.
-- Moved add_str() to lib/util and renamed it add_str_to_pool_mem() so that
- it can be used to edit Job termination codes and Changer command codes.
-- Reworked how the SD mounts tapes (in device.c) so that control passes through
- only a single routine. The logic is much simpler than previously, and now
- adding AutoChanger code is straight forward.
-- Made SD tape mounting much more fault tolerant -- more cases retry instead
- of terminating the Job.
-- Wrote code to edit_device_codes() for Changer commands. Not yet fully
- implemented.
-- Added a ChangerDevice directive to the Device resource. Still need to add
- ChangerCommand.
-
- From kes07Jul02
-- This documents what I did while on vacation.
-- A fair amount of documentation.
-- Implemented Verify Volume to Catalog (needs renaming)
-- Modified the database to include new MarkId field as
- well as Counters. Database level is incremented from 1 to 2.
-- Added first cut of managing autochangers by implementing Slot in DB.
-- Fixed a good number of M_ERROR messages to be M_FATAL where appropriate.
- Also converted a number of Emsg() to Jmsg() permitting better Job error