Technical notes on version 1.29 22Jan03 23 January 2003 Kern Sibbald General: Changes submitted this submission: 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 phas 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.