1 Technical notes on version 2.1
5 kes Apply implementation of tray-monitor font derived from gnome-console
6 submitted by Andreas Piesk <a.piesk@gmx.net>
8 kes Eliminate important memory loss in SQLite
9 kes Fixed the batch insert MySQL thread specific data that was not
10 being freed. See cats/mysql.c:db_thread_cleanup().
11 kes Fix restore before command.
12 kes Convert old hdr.name to name() in a few places.
13 kes Implement update jobid command.
14 kes Return all time_t dates in db_get_job_record()
15 kes Stop watchdog in SD earlier.
16 kes Put Pool just after Storage in please mount message.
17 kes Fix pointer usage bugs in Verify InitCatalog pointed out by
20 kes Update the po files.
21 kes Fix Verify InitCatalog by making it cache attributes.
23 kes Change name bacula-bat to bat for man 1 page to correspond to
25 kes Check for client and store NULL pointers in status command. This
27 kes Fix non-ssl build so that it works (add JCR *jcr to crypto structures).
28 kes Fix sign extended editing of %p.
29 kes Clean out a little old #ifdefing in cats/mysql.c
31 kes If time diff between DIR and FD is more than 600 seconds convert
32 INFO message to WARNING.
33 kes Implement heap size display in status for all daemons.
34 kes Attempt to fix MySQL db open memory loss (not successfull).
35 kes Don't set SIGKILL and SIGSTOP neither can be trapped.
36 kes Eliminate memory loss in MySQL (possibly other SQLs) during
37 Query. This looks like a MySQL but but by doing extra releases,
38 the memory goes away. This should fix bug #847.
40 kes When backup fails, cancel SD before waiting for sd termination.
41 kes If SD is waiting for FD to connect during cancel, wake up the
43 kes Fix fsf code so that errno is correctly reported.
44 kes Apply migration patch (with changes) from Sergey Svishchev <svs@ropnet.ru>
46 kes Make lack of Pool directive in Job an ERROR_TERM rather than FATAL
47 so that Bacula doesn't later stumble into a seg fault.
48 kes Use the term Restore Client in the restore Job report.
49 kes Merge patch from Sergey Svishchev <svs@ropnet.ru> that preserves
50 the original job's FileSetId.
51 kes Merge patch from Sergey Svishchev <svs@ropnet.ru> that implements
52 spooling in migration jobs. Not yet tested.
53 kes Merge patch from Jorj Bauer <jorj@seas.upenn.edu> that implements
54 reading conf file from a pipe. However, do it with open_bpipe()
55 rather than popen. Not yet tested.
57 kes Fix an ugly bug where the VolCatBytes were getting updated
59 kes Implement bconsole memory command that prints current memory
60 usage, plus smartalloc dump.
61 kes Clarify some error messages in backup, admin, and migrate.
62 kes Shrink label dialog to smaller size.
63 kes Invert Cancel OK buttons on restore to be OK Cancel.
64 kes More strerror() to bstrerror() conversions.
66 kes Start implementing bstrerror() in place of strerror().
67 kes Stripping path -- seems to work.
69 kes Prevent door and port files from being restored (mostly
71 kes Free an unreleased buffer in compat code.
72 kes Change console Job name from *Console* to -Console- to eliminate
73 Win32 filename problems. Put Win32 path separator when creating
74 Console file. This fixes bug #846.
75 kes Change berrno::strerror() to berrno::bstrerror(). Not yet full
77 kes Pass jcr to crypt_sign_decode because it creates a new SIGNATURE
79 kes Define b_errno_win32 on Linux to be zero so that it can be or'ed in
80 to force Win32 error message.
82 kes First cut strip path. The data should be passed to the FD,
83 but nothing is done with it yet.
84 kes Enhance the digest and signature routines in the crypto
85 library to accept a JCR and to use it to print error messages
86 so that they will go in the Job report rather than the daemon's
88 kes Simplify some of the verify signature code.
89 kes Simplify a few of the alternative returns in the signature
92 ebl Use only POSIX regex instead of GNU regex in breg.c for
93 File relocation. It fix broken freebsd compilation.
94 kes Convert all other Dir files to use new ua class message
96 kes Tentative fix for missing digest signature in bug 807.
97 kes Correct handle problem in new win32_ftruncate routine.
98 kes Convert ua_purge.c and ua_update.c to use new ua class
99 message routines for bat.
101 kes Correct incorrect installation of LICENSE in Win32 installer.
102 kes Display LICENSE at the beginning of the Win32 install.
103 kes Attempt to correct the need for the png files to be installed
105 kes Reapply my bat.conf install script in qt-console. I think I
106 editted bat.pro instead of bat.pro.in and it was lost.
107 kes Apply CentOS patches someone sent me. Checks for /var/run/subsys,
108 the /var/lock/subsys for subsysdir. Also corrects typos in the
111 kes First cut update job.
112 kes Correct configure to include qmake of src/qt-console directory.
114 kes Make restore job yes/mod/no print in one command so GUI works.
115 kes First cut implementing backup and restore client.
116 kes Correct editing in Verify output that caused a seg fault.
118 kes Insure that bat.conf is not overwritten during installation.
119 kes Fix important bug in db_sql_query() in mysql.c. It was introduced
120 while I was implementing migration in March 2006 !
122 ebl Cleanup file relocation, using char *RegexWhere instead of
123 char *where + bool where_use_regexp
124 kes Update some manpages and add bat manpage.
125 kes Make a first cut at converting bacula.spec.in for bwx-console
127 kes Apply patch from John Goerzen to add hostname as fourth argument
128 to make_catalog_backup script.
129 kes Fix typos I introduced into bsmtp.c
130 kes Make pm_strxxx() routines handle input of NULL pointer. This
131 is to protect from NULL pointers returned from SQL databases.
132 kes Correct typo in bacula-sd manpage as pointed out by John Goerzen.
133 kes Add more debug to FIFO code -- fix fifo regression test.
135 kes Implement posix_fadvise in FD, and for reading spool files in SD.
136 kes Add thread timer to bnet_connect() to break from OS if wait time
139 kes Update Win32 build to include new files, new symbols, and
141 kes Implement socket level heartbeat (tcp_keepidle)
142 ebl Commit File relocation patch
143 kes Make bat have 'make install' target.
144 kes Warn during install if old gnome-console binary found.
145 kes Warn during install if old wx-console binary found.
146 kes Add -8 option to bsmtp command line to add content type utf-8.
147 Fixes bug #809. (Character coding problem in bsmtp).
148 kes If < is found in target (from, to, cc) then do not enclose the
149 target in < > in bsmtp. Fixes bug #772 (malformed address).
150 kes When printing certain items in dbcheck, stop after 300000.
151 Fixes bug #822. (dbcheck loops).
152 kes Incorrect status in Dir after waiting for mount with poll set.
155 kes Extend idea of Prefer Mounted Volumes to mean a volume about
157 kes Print waiting to reserve a device every 5 mins.
159 kes Don't call close_part in label.c if tape and relabel.
160 kes Don't free volume if busy in close() -- should help with
162 ebl Fix #824 RunScript bug (After script could be execute twice)
163 Now, Before Script can use RunsOnSuccess and RunsOnFailure options
164 By default (like before) RunsOnSuccess=true and RunsOnFailure=false
165 Add a regression script to test RunScript
167 kes Correct usage of MTIOCLRERR ioctl for clearing persistant errors
170 kes The bgnome-console (gnome-console) and bwx-console (wx-console) are
171 deprecated. No additional bugs will be fixed, and they will be dropped
172 in a future release (probably 2.4.0).
173 kes Change name of wx-console to bwx-console to make it more Bacula
175 kes Change the name of gnome-console to bgnome-console to make it
178 kes Some time in March, a Feature Request with patch from Jorj Bauer
179 <jorj@seas.upenn.edu> was committed by Landon (with my approval).
181 The ability for the director to validate a Client (FD) CN against
182 an arbitrary set of patterns rather than the hostname, with
183 A new 'TLS Allowed CN' set of directives which are implemented
184 in the Client resource. Then pattern matching is used in place
185 of hostname matching against the Certificate's CN. As an example, we
186 have certificates which (a) use a local CA, and (b) have a CN of the
188 kes Add new/changed entry points to Win32 build
189 kes Create unaccepted-projects for projects that are not accepted.
190 kes Simplify locking in the reservations system.
191 kes Add more debug code in reservations.
192 kes Make sure error condition on reserving a volume is handled correctly.
193 kes Correct handling of volume_in_use.
194 kes Correct handling of initializing a device.
195 kes Move handling of broadcasting releasing a device into release_device().
196 kes Correct attaching dcr to dev so that it is only done if device
197 is properly initiated.
199 kes Locking debug level tweaks in SD.
200 kes Tweak new Volume code.
202 kes Add exec external-command [wait-seconds] to bconsole. This
203 executes the external-command. Note! normally external-command
204 should be enclosed in double quotes.
205 kes Turn the .die command on only if DEVELOPER is defined -- i.e.
206 it should normally be off in a production system.
208 kes Implement die command for SD so that we can force it to dump.
209 kes Implement SD lock debug code.
210 kes Implement new algorithm for keeping Volume list in SD. It
211 is now owned by the device.
213 kes Implement new code for freeing in use volumes that should
214 resolve if not all, some of the problems of multiple drive
215 tape conflicts described in bug 801.
217 kes Fix gui/bacula-web/images files in svn.
218 kes Turn on FreeBSD/OpenBSD code to set EOT model on tape.
220 ebl Fix a bug in batch mode (in string escape)
221 kes Correct migration prune SQL typo that crept in in a
224 kes Move bnet_despool() into class in bsock.c
225 kes Modify job report to include director name and Build OS.
226 kes Move drop root privilege and check_catalog() before fork.
227 kes Add update database scripts (version 9 to 10) to updatedb directory.
229 ebl Check size and age of each file after its backup to see if
230 it has changed during backup, if 'checkfilechanges' is set.
231 The FD will do an extra check (stat(2)) after
232 each file backup. mtime, ctime and size are compared with
233 'before backup' information. If time or size mismatch, an
234 error message will be generated. You must upgrade FD to use it.
236 kes Make database name and user configurable
237 --with-db-name=xxx --with-db-user=xxx
238 kes Add back database type to message.c for debugging.
240 kes Implement dir_sql() which issues an SQL query.
241 kes Modify bat medialist to use dir_sql() and do some minor C++
242 formatting as well as eliminating a number of pointers, simplifing
245 kes Fix some of the mtx-changer grep commands for tape label readers.
246 kes Convert a number of bsendmsg into the appropriate send/warning/error
248 kes Suppress the using database message in the .sql command.
249 kes Correct an incorrect bnet_tls_client prototype -- patch from Martin.
251 kes Add context menu for floating a window.
252 kes Some minor cleanup and name changes in qt-console
253 kes Add doing mt setblk 0 in Win32 mtx-changer.
254 kes Apply Martin's bug fix to move definition of ENODATA for
256 ebl Add a BUSY handler to sqlite to be able to use multi_db = 1 with
259 kes More pruning cleanup.
260 kes Turn on wait_for_drive by default in mtx-changer.
261 kes Turn on Batch insert code by default as it now passes regression.
262 kes Add ./configure --enable-bat to enable building of Bat.
263 No install yet though.
265 kes Implement a new .sql command for bat.
266 kes Implement code to turn off pruning in obtaining the next volume.
267 Pruning is turned off for the status dir command, but turned on
268 for SD requests and for the list nextvolume command.
270 kes Correct Qmsg() that was not updated correctly when committing a
271 previous change (probably the recent TLS patch).
273 kes Write new subroutine is_volume_purged() that explicitly checks
274 if the Volume is purged, and if so marks it as such. This should
275 resolve problems reported about needing to mount twice to recycle
277 kes Rewrite pruning algorithm to do more work in the SQL engine, and
278 to pass a list of JobIds to be deleted to SQL. Also, minimize the
279 amount of duplicated code.
280 kes Do volume pruning only for the Media Type desired (reduces pruning time
281 if multiple Media Types are in the same pool).
282 kes Implement more detailed info in the Job report for the Bacula version
284 kes Switch from POOLMEM to POOL_MEM (a real class) in ua_prune.c and
286 ebl Add bbatch tool to bench database and insert mode.
287 Fix sql quote stuff in batch mode
288 Fix sql stuff for mysql
290 kes Correct problems with am/pm scheduling. Fixes bug #808.
291 kes Implement new prunning code that prunes up to 1000 jobs at
292 the same time. The same technique can be applied to a number
293 of other prune/purge subroutines.
294 kes Add an insanity check when starting a new tape job to ensure
295 that the tape position has not been changed. If so fail the
297 kes Fix Win32 build for dlls to add the folllowing:
298 src/lib/bsock.c -- new file with new entry points
299 src/lib/dlist.c -- new entry points
300 src/cats/sql_create.c -- new entry point
301 src/cats/sql_cmds.c -- new DATA item exported
303 ebl batch mode cleanup bscan-test is ok now.
304 kes Implement SD code to check length of disk volume before appending.
306 kes Correct return status on db_batch... routines.
307 kes Add call to db_write_batch_file_records() to migration code.
308 ebl Fix AfterJob timing
309 kes Move the checking of the database in initializion of the Director
310 to after we drop privileges. This avoids the need for both root
311 and bacula access to the DB.
312 kes Correct a misplaced variable definition in src/filed/backup.c
313 kes Correct how the new batch insert db_create_attributes_record()
314 uses the arguments. Caused a seg fault in bscan.
315 kes Implement lock() and unlock() methods in DEVICE class.
316 Implement block() and set_block(xx) methods in DEVICE class.
317 kes Modify bnet_connect() so that it uses time() to check for the
318 wait time expiring (on some OSes, some system calls may not
320 kes Modify Verify to obtain the previous JobId when it is actually
321 running rather than at schedule time (as it was in 1.38.x).
322 kes Fix src/job.c to handle MaxWaitTime correctly. This should
324 kes When checking pid in pid file, continue running if the pid is
325 the same as ours. This occurs on IRIX after a system crash.
328 kes Extend new GUI API.
329 kes Make the ua structure a class, and implement send_msg(),
330 error_msg(), warning_msg(), and info_msg().
332 kes Apply fix from for building wx-console on the Mac from
334 kes Implement new select mechanism for GUI programs.
335 kes Reorganize initialization of stackedWidgets in bat.
337 kes Add updated nagios plugin supplied by Christian Masopust.
339 kes More bat implementation.
340 kes File migrate bug with Pool Occupancy using mediaid instead
341 of jobids. Fixes bug #795.
342 kes Fix orphaned buffers in filed backup and verify due to
343 crypto buffers not freed during errors. Fixes bug #789.
344 kes Extend new GUI api code to tree commands.
345 kes Ensure that tree and dot commands check console ACLs.
346 kes Permit marking directory with trailing slash.
347 kes Allow 20 console connections (instead of only 10).
349 kes Add smartctl call to bacula-sd.conf as an example of getting
352 kes Modify jobq.c to let simultaneous restore jobs run. This may
353 cause them to fail if they cannot get a drive.
354 kes Add Client Connect Wait to Storage daemon to permit users to
355 modify the time the SD waits for a FD connection.
357 kes Correct virtual changer check which was backwards. This caused
358 volumes to be unloaded into slots already occupied.
360 kes Apply Command ACL filter to JobId list in restore command.
361 kes Correct typeo in var.c patch.
363 kes Don't let Bacula prune File or Job records for the current Job.
364 kes Fix variable substitution pad + inc bug reported (with patch)
367 kes Correct SQLite log table index as reported by Luca Berra.
369 ebl fix fifo stuff, bacula tries to rewind the fifo... Thanks to Andreas
371 kes Begin implementing new comm signals for API.
372 kes Fix a few places in lib/message.c where the open fd may
374 kes Continue implementing lib/bsock.c (real class). Make jcr,
375 who, host, and port private. There are new methods to access
376 them for non-class use. This required touching a number of files.
378 kes Add LANG=C to autoconf/randpass so it works with languages other
379 than English. Fixes bug #788.
381 ebl Revert ClientRunBeforeJob to old position as in 1.38.X.
383 You will not be able to generate Include/Exclude list any more.
384 It will be fixed soon.
385 If you want to use this, you can apply
386 trunk/bacula/patches/testing/clientrunbeforejob_can_generate_include_exclude_list.patch
388 kes Restore of sockets created false error messages because Bacula
389 no longer restores sockets, but the code was still trying to
390 set the attributes on a non-existent file. Reported by a user.
391 ebl finish RecyclePool feature
392 Media will takes Pool.RecyclePool
393 when moving from Scratch to a Pool or when user will do
394 update volume=xxx frompool
395 To use it, add RecyclePool = aPool to your Pool resource
398 RecyclePool = Scratch
402 kes Expand new BSOCK class adding signal() and new BNET signals.
403 kes Begin enhancing the dot commands adding a new API function
404 that returns more information and will make it easier
405 to interface to the Director from a program.
407 kes Make DEVICE fd private. Its new name is m_fd, and can be
408 obtained with dev->fd() outside the class. This is the
409 first of many DEVICE members to be made private.
410 kes Implement Michael Renner's idea on having a virtual disk
411 changer. I made some minor modifications (e.g. I did not
412 implement the Virtual Changer directive, but simply set
413 the Changer Command to an empty string.
415 kes Implement a BSOCK send() method that writes the whole record
416 in a single write() request rather than in two.
417 ebl add update volume=xxx recyclepool=yyyy
418 volume takes recyclepool from pool when using update volume=xxx from pool
420 kes Fix encryption deblocking bug, which caused some restored files
421 to be truncated. This fixes bug #763.
422 kes Add FD event sequence order prepared by Eric -- for RunScripts.
423 kes Fix 12am/pm bug as reported in bug #782.
425 kes Apply Eric's ClientRunScriptAfter patch to 2.0 and 2.1.
426 ebl Use btime_t instead of uint64_t in media patch.
428 kes Optimize the use of the database a bit in the Status dir command.
429 Only open it when needed, ensure that if any previous database
430 was opened, it is closed.
432 kes Correct VolCatBytes bug from media patch.
433 kes Apply patch from bug #612 by Rudolf Cejka to speedup pruning
434 in the case of orphaned records.
435 kes Modify dbcheck to handle orphaned JobMedia, Path, Filename,
436 and File records in 300K chunks to be more efficient. This
437 idea came from Juan Luis Frances (if I remember right).
438 kes Apply Eric's scratch patch that moves a purged Volume to
439 the RecyclePool. Question: how is RecyclePool set? what
440 happens to the ScratchPool?
441 kes Apply Eric's media patch that collects read/write media
442 times as well as byte counts. This patch requires a
443 simultaneous upgrade of the DIR and SD. Note, there
444 should be some way to turn off timing. I'm not sure
445 times are in Bacula units.
446 kes Apply Eric's batch-insert patch.
448 kes Update projects list.
450 kes Implement Include/Exclude file lists in FD as dlists using
451 the new dlistString class. This permits efficiently having
452 large include/exclude lists and completes project Item 25.
453 kes Fix dird/ua_cmds.c so that a cancel command checks if the
454 console is authorized to cancel the job. This fixes bug
456 kes Modify SD so that the VolCatJobs medium record is updated
457 at the beginning of a Job rather than the end. This
458 fixes bug #775 where exceeding MaxVolJobs caused jobs
460 kes Added a mutex around getting and setting Volume information
461 so that multiple simultaneous jobs will single thread.
463 Switch to using Subversion
464 kes Remove src/pygtk-console/ from configure
466 kes Delete src/lib/btree.c from win32 build, then add rblist.c
467 plus the entrypoints.
468 kes Apply patch supplied that corrects debug print
469 in canceling jobs for max run time. Supplied as
470 part of bug #621, which was previously fixed.
472 kes Test on job_canceled() and sd_msg_thread_done inside
473 loop starting the message thread to avoid a race condition.
475 kes Remove rl_catch_signal from console.c as it conflicted
476 with the header definition. Fixes bug #765.
477 ebl Fixes bug #766 about RunsOnClient = Yes (case sensitive)
479 kes Clarify some stored/acquire messages to indicate if the
480 problem is with read or append.
482 kes Fix memory leak with storage ids in cats/sql_get.c
483 kes Terminate watchdog earlier to avoid reference to released
484 memory -- reported by Jason Austin.
485 kes Move closing the database from jobq.c to the director daemon
486 termination routine. This fixes memory leaks for shadow jobs
487 (i.e. migration jobs).
488 kes Free up the unique jobid chain items in migrate.c. This fixes
489 a memory leak problem.
490 kes Convert some ugly looking for statements to use foreach_alist
491 in findlib/find.c. This will facilitate converting the structures
492 to use dlist (for large include/exclude lists).
493 kes Fix a bug in the btree.c and btree.h routines, then rename them
494 rblist and add them to be built in src/lib. Include some new
495 methods written by Rudolf Cejka that make the code more readable
496 (hides some of the ugly casting).
497 kes Add set_next() and set_prev() methods which make the code much more
498 readable. Also add a new dlistString class that facilitates storing
499 strings in dlists. To be used in the large include/exclude lists.
500 kes Make some trivial modifications to lib/tree.h that use rblist
501 rather than dlist for storing the tree links. This was suggested
502 by Rudolf Cejka. The result of this is that the restore tree now
503 uses red-black binary trees rather than simple linked lists. This
504 should give rather dramatic speed improvements for directories
505 contining large numbers of directories/files (more than 10000).
507 kes Fix maxruntime bug #621.
509 ebl Implement the include JobID in spool file name project.
510 kes Reorder projects file in order determined by Jan 2007 vote.
511 kes Implement item #12 on project list -- quick release of FD by
513 kes Fix open of SQLite3 db where user does not have write permission
514 so that DIR does not crash. Fixes bug #761.
516 kes Add back missing @ in Win32 Makefile.
517 kes Change 'Device not configured to autolabel' from INFO
519 kes Fix jobq.c to restart failed jobs when Reschedule Times = 0
520 which should restart an indefinite # of times.
521 kes Fix configure --help to print --with-mysql[=DIR]. Same for
522 other DIR specifications.
524 rn Fix msvc build problems. Fix bacula.dll exports for msvc build.
525 Fix path quoting in SQLite scripts.
526 Fix problems with SHGetFolderPath.
528 kes Create patches/2.0.1-restart.patch. Fixes bug #755.
530 kes Fix Job restart on error bug that promotes an Inc to a Full
531 backup. This should fix bug #755.
532 kes Add qt-console and first cut of code.
536 kes Fix Bacula->Documentation link on Win32 to point to index.html
537 instead of bacula.html. Fixed bug #750.
538 kes Return JobId in db_get_job_record() when JobId==0. This should
540 kes Do not release source pointers when restarting a failed job.
542 kes Add dynamic dll entry point for SHGetFolderPath to Win32 code.
543 This *should* fix bug #747.
544 kes Modify winbacula.nsi to substitute with g bin_dir_cmd. Should fix
547 kes Modify USTORE constructor to set an empty store_source string,
548 and don't copy the store_source string in a cancel. Hopefully
549 this will fix Arno's seg fault, bug #744.
550 kes Add back code to disable conio in configure. Fixes bug #743.
551 kes Correct the Options scanner in the FD to correctly handle
552 SHA1 option, which was eating the next option. Reported by
554 kes Add code to indicate when the SD is spooling, spool wait, and
555 despooling as requested by Alan Brown.
557 Version 2.0.0 released: 4 January 2007