]> git.sur5r.net Git - bacula/docs/blob - docs/home-page/news.txt
73a1087ecc2b819ed8f395682b06272e019404f4
[bacula/docs] / docs / home-page / news.txt
1 Kern;;;2007/9/9;;;14:30
2 I regret to announce that there is a rather serious bug in Bacula.
3
4 Bacula bug #935 reports that during a restore, a large number of files are 
5 missing and thus not restored.  This is really quite surprising because we 
6 have a fairly extensive regression test suite that explicitly tests for this 
7 kind of problem many times.
8
9 Despite our testing, there is indeed a bug in Bacula that has the following 
10 characteristics:
11
12 1. It happens only when multiple simultaneous Jobs are run (regardless of 
13 whether or not data spooling is enabled).
14
15 2. It has only been observed on disk based backup, but not on tape. 
16
17 3. Under the right circumstances (timing), it could and probably does happen 
18 on tape backups.
19
20 4. It seems to be timing dependent, and requires multiple clients to 
21 reproduce.
22
23 5. Analysis indicates that it happens most often when the clients are slow 
24 (e.g. doing Incremental backups).
25
26 6. It has been verified to exist in versions 2.0.x and 2.2.x.
27
28 7. It should also be in version 1.38, but could not be reproduced in testing, 
29 perhaps due to timing considerations or the fact that the test FD daemons 
30 were version 2.2.2.
31
32 8. The data is correctly stored on the Volume, but incorrect index (JobMedia) 
33 records are stored in the database.  (the JobMedia record generated during 
34 the Volume change contains the index of the new Volume rather than the 
35 previous Volume).
36
37 9. You can prevent the problem from occurring by either turning off multiple 
38 simultaneous Jobs or by ensuring that while running multiple simultaneous 
39 Jobs that those Jobs do not span Volumes.  E.g. you could manually mark 
40 Volumes as full when they are sufficiently large.
41
42 10. If you are not running multiple simultaneous Jobs, you will not be 
43 affected by this bug.
44
45 11. If you are running multiple simultaneous Jobs to tapes, I believe there is 
46 a reasonable probability that this problem could show up when Jobs are split 
47 across tapes.
48
49 12. If you are running multiple simultaneous Jobs to disks, I believe there is 
50 a high probability that this problem will show up when Jobs are split across 
51 disks Volumes.
52
53 I have uploaded patches to bug #935 (bugs.bacula.org) that will correct
54 version 2.2.0, 2.2.1, and 2.2.2.  The patch has been tested only on version
55 2.2.2 and passes all regression tests as well as the specific test that
56 reproduced the problem.  This patch is still in the testing phase because it
57 has not yet been confirmed by any user other than myself.  The only daemon
58 that is affected by the bug and the patch is the Storage daemon, so there is
59 no need to upgrade any clients.
60
61 After a little more testing, I plan to release version 2.2.3 probably on 
62 Monday the 10th or Tuesday.
63
64 At this time, I do not have a patch for 2.0.x versions, and unless there is 
65 some really compelling reason to create one, I would prefer not -- it would 
66 not be a huge effort to back port the patch, but it would require rather 
67 extensive testing.  Though it is hard to make a specific recommendation, I 
68 believe that it probably will be the wisest and simplest to either patch 
69 version 2.2.x if that is what you are currently running, or upgrade to 
70 version 2.2.3 when it is released.
71
72 It *could* be possible to manually correct the bad JobMedia records in the 
73 catalog, but it is not something that I would personally recommend.  If you 
74 *really* need data off an old tape, I recommend first trying a restore.  
75 Sometime tomorrow, I will provide more detailed instructions on several ways 
76 how to correct the problem if necessary -- all of them are somewhat painful.
77
78 ;;;
79
80 Kern;;;2007/8/11;;;14:30
81
82 Bacula Version 2.2.0 has been released to Source Forge.         
83
84           Release Notes for Bacula 2.2.0 
85
86   Bacula code: Total files = 520 Total lines = 195,550 (*.h *.c *.in)
87   82 new files, 41,221 new lines of code, 208,380 lines of change from 2.0.3
88
89 This Director and Storage daemon must be upgraded at the same time,
90 but they should be compatible with all 2.0.x File daemons, unless you
91 use some of the new features that affect the FD.  In other words, you should
92 not have to upgrade all your File daemons when you upgrade. There is
93 no database upgrade needed from version 2.0.x to 2.2.0.
94
95 Areas requiring caution or testing:
96 - You must have the thread safe version of MySQL client libraries loaded
97   to build with MySQL enabled.
98 - Volumes are pruned only when absolutely necessary -- this may cause
99   your database to grow compared to prior Bacula versions.
100 - Solaris door and even port files are no longer restored (equivalent
101     to what we do with sockets).
102 - SQLite is no longer supported for Solaris -- it fails too often with
103   bus errors.  SQLite3 should work on Solaris.
104 - The default setting for SQLite3 is now 'PRAGMA synchronous=OFF'.
105   This makes it run 30 times faster, but increases the possiblity
106   of a corrupted database if your server shuts down unexpectedly.
107   The default behavior can be changed in src/version.h
108 - Restore on Win32, and in particular on Vista is untested. Please
109   test before relying on it.  It should backup and restore reparse
110   points.
111 - Win32 servers are untested, and very likely not to work.
112
113 The major new features are:
114 - Much faster insertion of attributes (somewhere around 10 times),
115   many thanks to Eric Bollengier and Marc Cousin. 
116 - First release of bat (Bacula Administration Tool).  Note to build
117   bat you must explicitly enable it on the ./configure line, you
118   must have the Qt4 version 4.2 or later libraries loaded, the qwt
119   (Qt Graphics) package loaded, and qmake and the other Qt4 tools 
120   must be available. Most of the implementation was done by Dirk Bartley.
121 - Red/Black restore in memory tree (500 times faster loading).
122 - The Regex Where code to allow easier relocation of restored files 
123   thanks to Eric.
124 - Socket level heartbeat for all connections (untested).
125 - posix_fadvise() use in the FD to improve performance reduces
126   swapping due to opening/reading lots of files. Win32 equivalent
127   implemented.
128 - Much improved Volume reservation code that should eliminate most
129   conflicts experienced in multiple drive autochangers.
130 - Simpler locking in the SD in the reservation system.
131 - Detection of file size/date change during backup if enabled.
132 - New Recycle Pool feature -- thanks to Eric.
133 - Efficient implementation of very large include/exclude lists.
134 - Volumes are no longer pruned during 'status dir'
135 - Pruning is now more efficient, and if a Volume is purged,
136   during pruning, it is immediately discovered.
137 - License is now GPL v2 without modifications, fix a few copyright
138   mistakes made when adding FSFE copyright notice.
139
140 New ./configure options:
141 - --enable-bwx-console    
142 - --enable-bat
143 - --with-qwt=
144 - --with-db-name=
145 - --with-db-user=
146 - --enable-batch-insert
147
148 New bconsole commands:
149 - exec
150 - memory
151 - update recyclepool
152 - .sql
153 - .api
154 - .pwd (in restore tree)
155 - restoreclient (keyword)
156 - backupclient  (keyword)
157 - regexwhere    (keyword)
158 - update jobid  (new command)
159 - recyclepool   (keyword) 
160
161 New directives:
162 - Heartbeat Interval (bconsole.conf)
163 - Heartbeat Interval (bacula-dir.conf in Director, Client, Storage)
164 - TLS Allowed CN     (bacula-dir.conf in Client)
165 - Regex Where        (bacula-dir.conf in Job)
166 - Strip Prefix       (bacula-dir.conf in Job)
167 - Add Prefix         (bacula-dir.conf in Job)
168 - Add Suffex         (bacula-dir.conf in Job)
169 - Recycle Pool       (bacula-dir.conf in Pool)
170 - FailJobOnError     (bacula-dir.conf in RunScript)
171 - CheckFileChanges   (bacula-dir.conf in FileSet)
172 - StripPath          (bacula-dir.conf in FileSet)
173
174 Other features or bug fixes:
175 - Fixed bugs: 916, 910, 917, 914, 906, 907, 
176   842, 830, 893, 861, 888, 886, 807, 877, 872
177   885, 887, 864, 874, 882, 881, 863, 859, 
178   856, 854, 845, 847, 846, 809, 772, 
179   822, 825, 824, 808, 802, 797, 798, 795, 789, 791, 
180   788, 780, 763, 782, 612, 767, 775, 621, 772, 764, 
181   766, 621, 761, 755, 750, 741, 747, 742, 744, and 743.
182 - Configure bat with --enable-bat. Define qwt libraries with
183   --with-qwt=<dir>. See Installation chapter of manual for details.
184 - Create a depkgs-qt package that has both Qt4 and qwt, which are
185   needed to build bat. Most modern Linux systems will have both
186   these packages in the distro.
187 - Storage overrides delete all previous storage definitions instead
188   of prepending.
189 - One should be able to mount and unmount removable devices if the
190   Device resource has Removeable Media set and the mount and unmount
191   directives are defined.
192 - ./configure will do a better job of searching for qwt libraries.
193 - The Win32 version can no longer be shutdown from the tray monitor.
194   Use the command line or the Services panne.
195 - Keep prune_volumes() from pruning the whole Scratch pool.
196 - More debug output in status storage.
197 - Correct moving a Scratch volume from pool to pool (some
198   critical columns were lost).
199 - Different locking in reservations and despooling systems,
200   which means more micro-locking and less macro-locking, which
201   should give a lot more concurrency at the expense of slightly
202   (<0.1%) more overhead due to more locking/unlocking, but     
203   concurrent jobs should run much faster.
204 - Additional drive reservation algorithm that should solve a lot of
205   the problems experienced with multiple drive autochangers.
206 - Storage daemon status command enhanced to more clearly show Volume,
207   pool and media type when a job is waiting.
208 - Made bsmtp work with more strict SMTP servers.
209 - Detect doubly freed buffers in smartall.c
210 - wx-console renamed to bwx-console (Fedora request)
211 - gnome-console renamed to bgnome-console (Fedora request)
212 - Migration preserves original job's FileSetId
213 - Spooling implemented for migration jobs.
214 - Config files can be read through a pipe, by specifying a leading |
215   in front of the configuration path/filename.
216 - New memory command (bconsole) that will print the current Director's
217   memory usage, and an in use buffer dump.
218 - Console name changed from *Console* to -Console- to accomodate Win32
219   filename restrictions.  
220 - Corrected the Win32 ftruncate bug.
221 - Additional version information added to Job reports.
222 - New -8 option for bsmtp to specify UTF-8 encoding type.
223 - bsmtp will no longer add < > to target (from, to, cc) if there
224   is already a < in the target.
225 - Prefer Mounted Volumes extended to mean a volume that is being
226   mounted by another job.
227 - Runscript timing set to same as version 1.38.11
228 - New TLS Allowed CN directive(s) permitted.
229 - New bconsole 'exec' command to run external script/command.
230 - Turn on FreeBSD/OpenBSD code to set EOT model on tape.
231 - Drop from root done before database is opened.
232 - Database user and name can be configured with:
233   --with-db-name=name --with-db-user=user
234 - Turn on wait_for_drive in mtx-changer script.
235 - Rework how bar codes are handled in mtx-changer script.
236   This appears to have been an unreported bug.
237 - Updated nagios plugin supplied by Christian Masopust
238 - Better restricted console ACL checking.
239 - New Client Connect Wait directive in Storage daemon so that
240   users can configure how long SD waits for FD connection.
241 - Bacula will no longer permit pruning of the currently running
242   job (note, if other jobs are running, they may be pruned).
243 - Sockets are no longer restored.
244 - dbcheck works in 300K chunks so will typically run faster.
245 - Include/Exclude lists can now be efficiently handled for quite
246   large sizes -- tens of thousands of entries.
247 - Several memory leaks in migration and database usage were fixed.
248 - New console keyword restoreclient, which specifies the client to
249   which the restore will be sent. The client keyword specifies 
250   the backup client. The restoreclient keyword is optional if it is
251   not specified, the backup client will also be the restore client.
252 - The disk file size is now checked to ensure that it agrees with the
253   catalog value before Bacula will append to the disk (same as tape
254   and DVD).
255
256 ;;;
257
258 Kern;;;2007/3/6;;;14:30
259
260 Bacula Version 2.0.3 has been released to Source Forge.
261 This is a bug fix release to version 2.0.2.  If you are upgrading from
262 a version older than 2.0.0, please be sure to read the important notes
263 below.
264
265 Also, please check the patches directory in the current SVN or the
266 patches release section on Source Forge for important bug fixes to   
267 this version.
268
269 5Mar07
270 kes  File migrate bug with Pool Occupancy using mediaid instead
271      of jobids.  Fixes bug #795.
272 kes  Fix orphaned buffers in filed backup and verify due to
273      crypto buffers not freed during errors.  Fixes bug #789.
274 04Mar07
275 kes  Add smartctl call to bacula-sd.conf as an example of getting
276      tape alert info.
277 02Mar07
278 kes  Add Client Connect Wait to Storage daemon to permit users to
279      modify the time the SD waits for a FD connection.
280 28Feb07 
281 kes  Apply Command ACL filter to JobId list in restore command.
282 kes  Correct typeo in var.c patch.
283 27Feb07
284 kes  Don't let Bacula prune File or Job records for the current Job.
285 kes  Fix variable substitution pad + inc bug reported (with patch)
286      in bug #791.
287 26Feb07
288 kes  Correct SQLite log table index as reported by Luca Berra.
289 24Feb07
290 ebl  Fix FIFO stuff, bacula tries to rewind the FIFO... Thanks to Andreas
291 22Feb07
292 kes  Fix a few places in lib/message.c where the open fd may
293      not be zeroed.
294 21Feb07
295 kes  Add LANG=C to autoconf/randpass so it works with languages other
296      than English.  Fixes bug #788.
297 20Feb07
298 ebl  Revert ClientRunBeforeJob as it was in 1.38.x
299      This fixes bug #780
300      You will not be able to generate Include/Exclude list any more.
301      If you want to use this, you can apply 
302      trunk/bacula/patches/testing/clientrunbeforejob_can_generate_include_exclude_list.patch
303 19Feb07
304 kes  Restore of sockets created false error messages because Bacula
305      no longer restores sockets, but the code was still trying to
306      set the attributes on a non-existent file. Reported by a user.
307 16Feb07
308 kes  Fix encryption deblocking bug, which caused some restored files
309      to be truncated. This fixes bug #763. This is a CRITICAL bug fix.
310 kes  Add FD event sequence order prepared by Eric -- for RunScripts.
311 kes  Fix 12am/pm bug as reported in bug #782.
312 15Feb07
313 kes  Add quick disconnect FD code from 2.1.4 to 2.0.3.  This code
314      causes the SD to release the FD as soon as the FD has sent
315      all the data to the SD. After that the SD will do any final
316      despooling (data and attributes) that are necessary. This
317      allows laptops to disconnect much quicker from the network 
318      after a backup.
319 13Feb07
320 kes  Apply Eric's ClientRunScriptAfter patch to 2.0 and 2.1.
321 11Feb07
322 kes  Optimize the use of the database a bit in the Status dir command.
323      Only open it when needed, ensure that if any previous database
324      was opened, it is closed.
325 10Feb07
326 kes  Modify dbcheck to handle orphaned JobMedia, Path, Filename,
327      and File records in 300K chunks to be more efficient. This
328      idea came from Juan Luis Frances (if I remember right).
329 09Feb07
330 kes  Update projects list.
331 08Feb07
332 kes  Fix dird/ua_cmds.c so that a cancel command checks if the
333      console is authorized to cancel the job.  This fixes bug 
334      #767.
335 kes  Modify SD so that the VolCatJobs medium record is updated
336      at the beginning of a Job rather than the end.  This
337      fixes bug #775 where exceeding MaxVolJobs caused jobs
338      to fail.
339 kes  Added a mutex around getting and setting Volume information
340      so that multiple simultaneous jobs will single thread.
341 07Feb07
342      Switch to using Subversion
343 kes  Remove src/pygtk-console/ from configure
344 06Feb07
345 kes  Delete src/lib/btree.c from win32 build, then add rblist.c
346      plus the entrypoints.
347 kes  Apply patch supplied that corrects debug print
348      in canceling jobs for max run time.  Supplied as
349      part of bug #621, which was previously fixed.
350 05Feb07
351 kes  Test on job_canceled() and sd_msg_thread_done inside
352      loop starting the message thread to avoid a race condition.
353      Fixes bug #771.
354 kes  Remove rl_catch_signal from console.c as it conflicted
355      with the header definition. Fixes bug #765.
356 ebl  Fixes bug #766 about RunsOnClient = Yes (case sensitive)
357 04Feb07
358 kes  Clarify some stored/acquire messages to indicate if the
359      problem is with read or append.
360 02Feb07
361 kes  Fix memory leak with storage ids in cats/sql_get.c
362 kes  Terminate watchdog earlier to avoid reference to released
363      memory -- reported by Jason Austin.
364 kes  Move closing the database from jobq.c to the director daemon
365      termination routine. This fixes memory leaks for shadow jobs
366      (i.e. migration jobs).
367 kes  Free up the unique jobid chain items in migrate.c.  This fixes
368      a memory leak problem.
369 kes  Convert some ugly looking for statements to use foreach_alist
370      in findlib/find.c.  This will facilitate converting the structures
371      to use dlist (for large include/exclude lists).
372 kes  Fix a bug in the btree.c and btree.h routines, then rename them
373      rblist and add them to be built in src/lib.  Include some new
374      methods written by Rudolf Cejka that make the code more readable
375      (hides some of the ugly casting).
376 26Jan07 (back port)
377 kes  Implement item #12 on project list -- quick release of FD by
378      the SD. This is noted in more detail above.
379
380 ;;;
381
382 Kern;;;2007/1/28;;;14:30
383
384 Bacula Version 2.0.2 released:
385 28Jan08
386 kes  Fix maxruntime bug #621.
387 27Jan07
388 kes  Get current main CVS .specs for RedHat, SuSE, Mandrake.
389 26Jan07
390 ebl  Implement the include JobID in spool file name project.
391 kes  Reorder projects file in order determined by Jan 2007 vote.
392 kes  Fix open of SQLite3 db where user does not have write permission
393      so that DIR does not crash. Fixes bug #761.
394 25Jan07
395 kes  Change 'Device not configured to autolabel' from INFO
396      to WARNING.
397 kes  Fix jobq.c to restart failed jobs when Reschedule Times = 0
398      which should restart an indefinite # of times.
399 kes  Fix configure --help to print --with-mysql[=DIR]. Same for
400      other DIR specifications.
401 23Jan07
402 rn   Fix msvc build problems. Fix bacula.dll exports for msvc build.
403      Fix path quoting in SQLite scripts.
404      Fix problems with SHGetFolderPath.
405 19Jan07
406 kes  Create patches/2.0.1-restart.patch. Fixes bug #755.
407 18Jan07
408 kes  Fix Job restart on error bug that promotes an Inc to a Full
409      backup.  This should fix bug #755.
410 kes  Add qt-console and first cut of code.
411
412 ;;;
413
414 Kern;;;2007/1/13;;;14:30
415
416 Bacula Version 2.0.1 has been released to Source Forge.
417 This is bug fix update to version 2.0.0 and contains
418 the following fixes:
419
420 -    Fix Bacula->Documentation link on Win32 to point to index.html
421      instead of bacula.html. Fixed bug #750.
422 -    Return JobId in db_get_job_record() when JobId==0. This should
423      fix bug #741.
424 -    Do not release source pointers when restarting a failed job.
425 -    Add dynamic dll entry point for SHGetFolderPath to Win32 code.
426      This *should* fix bug #747.
427 -    Modify winbacula.nsi to substitute with g bin_dir_cmd. Should fix
428      bug #742.
429 -    Modify USTORE constructor to set an empty store_source string, 
430      and don't copy the store_source string in a cancel.  Hopefully
431      this will fix Arno's seg fault, bug #744.
432 -    Add back code to disable conio in configure. Fixes bug #743.
433 -    Correct the Options scanner in the FD to correctly handle  
434      SHA1 option, which was eating the next option.  Reported by    
435      Sebastien Guilbaud.
436 -    Add code to indicate when the SD is spooling, spool wait, and 
437      despooling as requested by Alan Brown.
438
439 ;;;
440
441 Kern;;;2007/1/4;;;14:30
442
443 Bacula Version 2.0.0 has been released to Source Forge.
444
445 There is an English Press Kit, written by Dan Langille at:
446    
447    http://www.bacula.org/about/press/presskit200.html.en
448
449 and a German version, translated by Arno Lehmann at:
450
451    http://www.bacula.org/about/press/presskit200.html.de
452
453 ;;;
454    
455 Kern;;;2007/1/4;;;14:31
456
457           Release Notes for Bacula 2.0.0
458
459   Bacula code: Total files = 438 Total lines = 154,329 (*.h *.c *.in)
460
461 ==== IMPORTANT Catalog update required =====
462 - The database format has been updated from what was used in    
463   Bacula 1.38.x.  You must manually update your database before 
464   running Bacula 1.39.x or higher.  If you are using Bacula supplied
465   RPMs this is not necessary as the RPM does it automatically.
466   Please backup your previous version of the database before
467   running the update.  The update script will be automatically
468   installed in your scripts directory, or can also be found in
469   <bacula-source>/src/cats.  It is called:
470
471      ./update_bacula_tables
472
473   It is necessary to run it only once the first time you move to
474   a 2.0.0.  Upgrading the Bacula version thereafter does not
475   require updating the database again.  Depending on the size of
476   your database the script make take a bit of time, to run, but
477   in general, it should be very fast.
478
479 ==== IMPORTANT new Win32 install procedure =====
480   For Win32 migrations from versions prior to 1.39.0 nothing special
481   needs to be done to upgrade.  Everything should be taken care of
482   automatically.  The only thing not done is to delete the old C:\bacula
483   directory mostly out of paranoia.
484
485 ==== IMPORTANT miscellaneous ====
486 - The Gnome console program (gconsole) no longer functions as it
487   should.More importantly, in restore mode, the restore tree is
488   no longer shown in the left pane.  I suspect this is due to
489   incompatible changes in the GTK+ API, and hence have given up
490   on gnome and gtk+, as this has already happened several times
491   previously.  At some point there will be a new GUI console.
492 - The bacula-dir.conf directive Accept Any Volume has been
493   removed because it was never implemented. You must delete all
494   occurrence of this directive for the Director to run. The Storage
495   daemon will automatically accept any valid Volume that you mount.
496 - The --mandir ./configure option now points to the top level man
497   directory.  The man files will be installed under mandir/man8 and
498   mandir/man1 as appropriate.
499 - You *should* be able to use 1.38.x FDs with version 2.0.0 Director
500   and SD providing you do not use any of the new features (runscript,   
501   data encryption). It seems to work here, but we do not guarantee it.
502 - Your Director and SD must be simultaneously upgraded.
503 - The restore command no longer uses the MediaType as the primary method
504   of finding a suitable Storage device. Normally it will select the last
505   device used to write a Volume. If no storage device is defined, it
506   will use the old algorithm which selects the first Storage resource  
507   with the correct MediaType.
508 - The MD5/SHA1 hash codes kept in the database are now kept in a binary
509   format compatible with the rest of the world. If you are running verify 
510   jobs, you *must* do an InitCatalog or all files will show an MD5   
511   difference.  Also, authentication uses the new algorithm by
512   default, but *should* accept connections from older components (FD) using
513   the old non-compatible algorithm. This has been tested, but more
514   more testing is still needed.  
515 - A stock SuSE 10.1 kernel may crash when Bacula runs and accesses
516   the tape drive. Workaround, load the SuSE 10.1 version 2.6.16.21-0.25
517   kernel or later. The SuSE 10.2 Alpha 5 or later kernel also works.
518   This problem may also be present in certain Fedora FC5 kernels.
519 - If you have been using the data encryption feature of 1.39.x, please
520   be aware that certain combinations of encryption and other options
521   with version 1.39.0 through 1.39.26 created Volume data that cannot
522   be restored. We strongly recommend that anyone using encryption 
523   carefully review his/her backups and at a minium do a Full backup
524   with 1.39.28 of all encrypted data.  Robert Nelson has identified 
525   and fixed it as follows:
526      As of 1.39.27:
527         No filters = Works fine
528         Sparse = Works fine
529         Compression = Works fine
530         Encryption = Works fine
531         Sparse + Compression = Works fine
532
533         Sparse + Encryption = Restore broken
534         Sparse + Compression + Encryption = Restore broken
535         Compression + Encryption = Restore broken
536
537      As of 1.39.28:
538         Most combinations work, but some encrypted files are
539         not properly restored.
540
541      As of 1.39.30:
542         All combinations work fine except Sparse+Encryption.
543
544   Bottom line, if you are using data encryption, please test restoring
545   data to be sure it all works correctly.
546 - The current Volume format written by 1.39.22 is different from
547   the format written by previous versions. The two formats
548   are not compatible. Thus any DVDs written prior to 1.39.22 will
549   be unreadable by version 1.39.22.
550 - If you previously run a Bacula version prior to 1.39.30, the JobMedia
551   data may not be correct for disk Volumes. This can cause incorrect
552   seeking in versions after 1.39.30. If you experience what appears to
553   be data I/O or integrity errors during restores, please add the
554   following directive to your disk DEVICE resource in the Storage
555   daemon conf file:
556
557     Block Positioning = no
558
559   This will turn off all seek requests during restores and avoid
560   this problem.
561 - VSS for Windows clients is now enabled by default.
562 - Do not unload autochanger when doing "update slots"
563 - Implement mount command for autochanger, see manual.
564
565 New Features in 2.0.0:
566 - Turn on disk seek code for restores.
567 - There is a partial but reasonable translation of the Bacula
568   messages for French.  To install it, first configure and build
569   Bacula, then as root run:
570
571     cd <bacula-source>/po
572     make install
573
574   If you have your locale set properly you will get the translated
575   messages.
576 - Bacula now support Migration jobs that are documented in a new
577   Migration chapter in the manual
578   http://www.bacula.org/dev-manual/Migration.html
579 - Data encryption is now implemented and is documented in
580   a new chapter of the manual at:
581   http://www.bacula.org/dev-manual/Bacula_Data_Encryption.html
582 - Additional support for removable devices.  See the 
583   Requires Mount, Mount Point, Mount Command, and Unmount
584   Commands in the Storage daemon configuration chapter:
585   http://www.bacula.org/dev-manual/Storage_Daemon_Configuratio.html
586   Also see the Edit Codes for Mount and Unmount Directives in the
587   same chapter.
588 - Switch the Win32 build from using Microsoft C++ to using mingw32
589   cross-compiling.  The initial work was done by Howard Thomson,
590   then tweaked by me.  Robert Nelson then totally reworked the
591   cross-compiling code so that it not only cross-compiles, but
592   also compiles on Visual Studio, and at the same time, he added
593   all the current Unix features to the FD, such as selection on
594   drives, encryption support, building *all* the tools, ...
595 - The Director and Storage daemon have now been ported to Win32.
596   This code is working but should still be tested carefully
597   before putting into production.
598 - Bacula restore and bextract can now extract non-portable Win32 data to
599   any client (including Unix/Linux clients). Of course, in doing so,
600   the Microsoft specific permissions and ACLs will be lost.  Thanks
601   to Thorsten Engel for this code.
602 - The 260 character limitation for Win32 paths name lengths is now 
603   eliminated thanks to Thorsten Engel. However, if you are using
604   Volume Shadow Copy, please be careful to specify all the paths
605   in the bacula-fd.conf file using a full path notation including
606   the drive letter.
607 - Eric Bollengier wrote new RunScript directives that includes
608   the old RunBefore/AfterJob and ClientRunBefore/AfterJob features
609   plus a *lot* more, allowing you to control just about every aspect
610   of running scripts.  See the manual for detailed documentation.
611   http://www.bacula.org/dev-manual/Configuring_Director.html#5227
612 - SunOS ACLs should now work thanks to a patch from David Duchscher.
613 - Apply days keyword patch from Alexander.Bergolth at wu-wien.ac.at
614   If this patch is applied, the number of days can be specified with
615   "list nextvol days=xx"
616   or
617   "status dir days=xx"
618   This can be used to preview the next scheduled job (and the
619   next tape to be used) on Fridays if there are no scheduled jobs during
620   the weekend.
621 - From Eric Bollengier. One can now using the bconsole wait command do:
622    wait  (wait for all jobs to stop)
623    wait jobid=nn
624    wait jobuid=unique id
625    wait job=job-name
626 - Volumes can now be set to Enable, Disable, or Archive. If they
627   are not enabled, Volumes will not be mounted.             
628   Implement update volume enable=(on|off|true|false|archived|0|1|2)
629 - Add Catalog message destination in Messages resource that puts the
630   job report in the Log database table.
631 - Writing/reading DVD Volumes is much more stable -- to the point
632   of being useful. Thanks to Richard Mortimer.
633 - Add enable/disable job=<job-name>.  This command prevents
634   the specified job from being scheduled. Even when disabled,
635   the job can be manually started from the console.
636 - The database Id records should be 32/64 bit independent now. 64 bits
637   can be enabled by changing one define and changing the appropriate
638   table variable. Normally, you need 64 bits only for FileId.
639 - Relative path specifications (i.e. ../xxx) are now permitted in
640   the restore cd command.
641 - When running multiple simultaneous jobs, most jobs that use spooling
642   will now finish faster due to a mutex optimization made by Eric
643   Bollengier.
644 - Conf files containing UTF-8 marker at the head of the file as well as
645   conf files containing Window cr/lf and Mac cr line termination characters 
646   are now accepted thanks to Robert Nelson.
647 - Windows tray status windows are scrollable and resizable.
648 - Win32 external script execution is much more flexible -- handles
649   spaces in names better, ...
650 - Lots of DVD fixes -- writing DVDs is now reported to work.
651 - Fix opening of database in a restricted console to respect     
652   any Catalog ACL.
653 - Much better automatic handling of multiple database catalogs in
654   the restore command.
655 - Permit multiple console/director resources in bconsole.conf.
656   patch from Carsten Paeth calle@calle.in-berlin.de
657 - Character substitution in Job/JobDefs WriteBootStrap.
658   from Eric Bollengier.
659 - Apply patch supplied in bug #656 to pass priority field
660   in the run dialog to the Director in gnome console.
661 - Add support of encrypted data stream to bscan from Eric.
662   display data_len instead of data content (may be binary).
663 - Add Enabled=xxx on update slots command.
664 - Add host:port to connect failure messages to FD and SD from Dir/
665 - Add WhereACL to console ACL list.  If nothing is specified, only
666   the default is permitted for restore. Otherwise, *all* allows any
667   path, or you can specify permitted paths. This should allow control
668   over where users can restore files. This is untested.
669 - Install man pages with 'make install'.
670 - Add Media.Enabled flag to client backups for dotcmds.c
671 - Enforce Media.Enabled=1 for a current restore to work
672 - Require restore case 3 to have sqlquery permission to work.
673 - Add -n option to bconsole to turn off conio -- used in bweb.
674 - The bytes field in the terminated jobs part of the status
675   command now reports in KB, MB, ... units.
676 - When not descending into a directory, print the File= name that
677   triggered it -- makes why not descending a bit clearer
678 - Do not unload autochanger when doing "update slots"
679 - Implement mount command for autochanger
680 - Fix bug #462 incorrect error message printed when client script called
681   from File= was not found.
682 - Fix bug #558 (waiting for feedback) where Bacula needs too much time to
683   do a rewind on Solaris when no tape is in the drive (Solaris does not
684   have the detailed errno found on Linux).  Added Solaris specific code.
685   Note, this may apply to other OSes as well.
686 - The examples directory has a new bacula_mail_summary.sh file that
687   creates a single email summary of any number of jobs. Submitted by
688   Andrew J. Millar.
689 - Add nagios plugin to the examples directory. Submitted by
690   Christian Masopust.
691 - Modify most restore error messages to be queued so that they
692   appear at the end of the job rather than mixed with the restore
693   listing where they could be "lost".
694 - Apply patch supplied by user (slightly modified) to fix
695   correct detection of holes in block devices and FIFOs.
696   Bug # 506.
697 - Added a report.pl program to the examples directory from Jonas Bjorklund.
698 - Add two new queries to query.sql provided by Arno. One
699   list volumes known to the Storage device, and the other
700   lists volumes possibly needing replacement (error, ...).
701 - Implement new code for changing userid and group at startup. This
702   should get Bacula into the correct groups.
703 - Implement support for removable filesystems -- device type directive
704   and mount, unmount directives.
705 - Transfer rates are now presented in a more readable format thanks
706   to a user submission.
707 - SD is now aware of what volumes are mounted. More information is printed
708   in the Status report. You must take much more care now to unmount
709   devices prior to removing tapes that Bacula has open or prior to
710   changing a magazine. Don't forget to do a mount afterwards or the
711   device will be blocked.
712 - The Pool Maximum Volumes directive is now respected in all places.
713 - A Storage device can now be specified in a Pool resource. It will override
714   all other Storage specifications.
715 - Most but not all directives accept true/false in place of yes/no.
716 - A patch from Karl Hakimian that reads JobIds, FileIndexes
717   from a database table for restore.
718 - There are a number of new tables. Some such as the Location table are
719   designed for user use in doing Volume Management software.
720 - Maximum Changer Wait, Maximum Open Wait, Maximum Rewind Wait to
721   accept time qualifiers.
722 - Implement jobuid to replace old usage of job in keywords as
723   suggested by Eric Bollengier.
724 - Implement write variables for Python to set Priority (anytime), and
725   Job Level, only during JobInit event.
726 - Use the keyword ujobid to mean the unique job id; job or jobname
727   to mean the Job name given on the Name directive, and jobid to
728   be the numeric (non-unique) job id.
729 - Allow the SD to use multiple drives during a backup/restore (only
730   one at a time).
731 - Integrate addition of line count limitation to bsmtp -l from
732   Sebastian Stark <stark at tuebingen.mpg.de>
733 - Split the bacula start/start script into four files:
734    bacula         -- starts and stops calling other scripts
735    bacula-ctl-dir -- starts/stops the director
736    bacula-ctl-fd  -- starts/stops the File daemon
737    bacula-ctl-sd  -- starts/stops the Storage daemon
738 - Remove automatic case folding on Windows FDs. You must
739   explicitly use the 'Ignore Case = yes' option.
740 - Implement wild program in tools directory for testing
741   wild-cards. Almost identical to the regex program.
742 - Use the new bregex.c to implement Regex expressions on Win32.
743 - Apply patch from Christopher Hull
744   - Allow multiple connections to database with different
745     parameters.
746   - Invalidate the scheduler when doing a reload. Fixes seg
747     fault, but still 60 second window.
748   - Additional info in Reschedule message.
749   - Use set_jcr_job_status() everywhere to prevent loss of
750     cancel, error.
751   - Display peer IP in FD if error from connecting DIR.
752   - Don't increment file count for DIRBEGIN.
753   - Replace illegal characters in Win32 filename by _.
754   - Add SE_CREATE_PERMANENT_NAME privilege in Win32.
755   - Hash hard link filenames rather than linked list (performance).
756   - Fix for security failure in chdir on Win32.
757   - Add CreateDirectoryA/W win32 API entry points.
758 - programs to duplicate Bacula's base64 algorithm using standard
759   routines. This fixes bugs #296, and 565. Patch submitted by
760   author of bug #565.
761 - Fixes to reloading the Dir conf file from Eric Bollengier and Christopher
762   Hull.
763 - Modify LICENSE to correct some problems pointed out by Debian.
764 - Apply a patch submitted by cesarb in bug #606 to implement O_NOATIME support.
765     O_NOATIME is a open() flag which makes it possible to read a file without
766     updating the inode atime (and also without the inode ctime update which
767     happens if you try to set the atime back to its previous value). It also
768     prevents a race condition when two programs are reading the same file, but
769     only one does not want to change the atime. It's most useful for backup
770     programs and file integrity checkers (and bacula can fit on both
771     categories).                                                    
772   You enable it in the Bacula FileSet Options resource by setting:
773      noatime = yes
774   The effect of this option is similar to the keepatime option except
775   it is more efficient and avoids modifying ctime.
776 - Implement a pile of new man pages contributed by Jose Tallon.
777 - Modify the database format for handling Migration jobs:
778    Add PriorJobId, RealEndTime to Job table
779    Delete MAC table
780    Remove Stripe from JobMedia record (not used, wasting space)
781    Add ScratchPoolId, RecyclePoolId, Enabled to Media record
782    Add Cost to Location table.
783    Enabled to Media table and Location table.
784 - Security: harden authentication failure in FD by single threading errors
785   and forcing a 6 second wait.
786 - If using GCC (actually g++) add the following compiler flags
787   -fno-strict-aliasing -fno-exceptions -fno-rtti
788 - Turn on new bsnprintf() code.  The reason for this code is to
789   eliminate the security problems associated with using the
790   system libraries print routines.
791 - Implement job report that indicates where Storage and Pool
792   came from -- with overrides and Pool storage and NextPool,
793   it is all very complicated.
794 - Add more detail (Storage, Device) to list of volumes printed
795   for restore.
796 - Add new VOLMGMT message class. No messages are yet sent with this 
797   class.
798 - Improved Bacula rescue procedures -- see the Disaster Recovery
799   chapter of the manual
800 - Add spooling/despooling info in status output of SD.
801 - Add Comment field to llist of a volume.
802 - Allow true/false in many but not all yes/no directives.
803 - The Bacula source code is now copyrighted by the Free Software 
804   Foundation Europe. The Developer's Guide documents the new procedures,
805   and the LICENSE file has been updated.
806 - Apply Jaime Ventura's patch that implements the Messages resource
807   Mail On Success directive.
808 - The Client returns its Version string, which is printed in the Job
809   report.
810 - The Client returns whether or not VSS and Encryption are used, which
811   are printed in the Job report.
812
813 Additional Features Added for Win32:
814 - Added DriveType directive to the Director's Include Option FileSet
815   resource.  Allowed values are: fixed, removable, cdrom, and remote.  There
816   is only an implementation for Windows because it is the only platform that
817   has the concept of drives.
818  
819 - Adds EnhancedWild directive to the Director's Include Option FileSet
820   resource.  Allowed values are: yes and no.
821  
822   When EnhancedWild is enabled then the processing of the
823   Wild, WildDir and WildFile is changed in the following ways.
824  
825   Patterns conform to Posix
826       \ is not a special character in character classification []
827       To match a - it must be the first or last character
828       To match a ] it must be the first character
829  
830       fnmatch option FNM_FILE_NAME is specified * doesn't match a / 
831       so it won't match multiple directory levels in a path
832  
833 - Relative WildFile patterns (ones without a leading /) match
834   against the filename portion.  This in combination with the
835   FNM_FILE_NAME fnmatch() flag makes directives such as WildFile =
836   abc*.def work as expected.
837  
838 - Adds support for the shell's feature of brace expansion.
839
840   Here is an example where braces allow 24 lines to be expressed in 5.
841
842   # Exclude directories full of lots and lots of useless little files
843   WildDir = "[A-Z]:/{Documents and Settings,{WINNT,Windows}/Profiles}/*/Cookies"
844   WildDir = "[A-Z]:/{Documents and Settings,{WINNT,Windows}/Profiles}/*/Recent"
845   WildDir = "[A-Z]:/{Documents and Settings,{WINNT,Windows}/Profiles}/*/{Local Settings,LOCALS~1}/History"
846   WildDir = "[A-Z]:/{Documents and Settings,{WINNT,Windows}/Profiles}/*/{Local Settings,LOCALS~1}/Temp"
847   WildDir = "[A-Z]:/{Documents and Settings,{WINNT,Windows}/Profiles}/*/{Local Settings,LOCALS~1}/Temporary Internet Files"
848
849 ;;;