- Kern's ToDo List
- 31 August 2004
+ Kern's ToDo List
+ 17 Septermber 2004
Major development:
Project Developer
========================================================
1.35 Items to do for release:
-- Improve error message if old/new FileSet syntax mixed.
-- Restore c: with a prefix into /prefix/c/ to prevent c: and d:
- files with the same name from overwritting each other.
-- Add new DCR calling sequences everywhere in SD. This will permit
- simultaneous use of multiple devices by a single job.
-- Look at patches/bacula_db.b2z postgresql that loops during restore.
- See Gregory Wright.
-- Perhaps add read/write programs and/or plugins to FileSets.
+- Backspace to beginning of line (conio) does not erase first char.
-- Add delete JobId to regression.
-- Add bscan to four-concurrent-jobs regression.
-- Add IPv6 to regression
-- Alternative to static linking "ldd prog" save all binaries listed,
- restore them and point LD_LIBRARY_PATH to them.
- Document a get out of jail procedure if everything breaks if
you lost/broke the Catalog -- do the same for "I know my
file is there how do I get it back?".
-- Test/doc Tape Alerts
-- Doc update AllFromVol
-- Doc dbcheck eliminate orphaned clients.
-- Doc -p option in stored
-- Doc Phil's new delete job jobid scanning code.
-- Document that console commands can be abbreviated.
-- Document add "</dev/null >/dev/null 2>&1" to the bacula-fd command line
-- New IP address specification is used as follows:
- [sdaddresses|diraddresses|fdaddresses] = { [[ip|ipv4|ipv6] = {
- [[addr|port] = [^ ]+[\n;]+] }] }
-
- so it could look for example like this:
- SDaddresses = { ip = {
- addr = 1.2.3.4; port = 1205; }
- ipv4 = {
- addr = 1.2.3.4; port = http; }
- ipv6 = {
- addr = 1.2.3.4;
- port = 1205;
- }
- ip = {
- addr = 1.2.3.4
- port = 1205
- }
- ip = {
- addr = 1.2.3.4
- }
- ip = {
- addr = 201:220:222::2
- }
- ip = {
- addr = bluedot.thun.net
- }
- }
- as a consequence, you can now specify multiple IP addresses and
- ports to be used. In the case of a server, it will listen on
- all those that you specify. In the case of connecting to the server,
- Bacula will attempt connecting to one at a time until it succeeds.
- And, in a few other special cases, Bacula will use only the first
- address specified.
- The default port numbers are still the same and the services and hosts
- are also resolved by name. So now you could use the real names for the
- port numbers.
-
- An ip section will allow resolution to either an ipv4 or an ipv6 address.
- An ipv4 section forces the resolution to be only ipv4, and an ipv6 section
- forces the resolution to be only ipv6.
+- Add "Rerun failed levels = yes/no" to Job resource.
+Maybe for 1.35:
+- Look at patches/bacula_db.b2z postgresql that loops during restore.
+ See Gregory Wright.
+- Add delete JobId to regression.
+- Add bscan to four-concurrent-jobs regression.
+- Add IPv6 to regression
+- Perhaps add read/write programs and/or plugins to FileSets.
+- How to handle backing up portables ...
Documentation to do: (any release a little bit at a time)
+- Alternative to static linking "ldd prog" save all binaries listed,
+ restore them and point LD_LIBRARY_PATH to them.
+- Document add "</dev/null >/dev/null 2>&1" to the bacula-fd command line
- Document query file format.
- Add more documentation for bsr files.
- Document problems with Verify and pruning.
- Minimal autochanger handling in Bacula and in btape.
- Look into how tar does not save sockets and the possiblity of
not saving them in Bacula (Martin Simmons reported this).
- The next two lines will show them.
- localmounts=`awk '/ext/ { print $2 }' /proc/mounts` # or whatever
+- Add All Local Partitions = yes to new style saves.
+- localmounts=`awk '/ext/ { print $2 }' /proc/mounts` # or whatever
find $localmounts -xdev -type s -ls
- Fix restore jobs so that multiple jobs can run if they
are not using the same tape(s).
- look at mxt-changer.html
- Make ? do a help command (no return needed).
- Implement restore directory.
-- Add All Local Partitions = yes to new style saves.
- Document streams and how to implement them.
- Possibly implement "Ensure Full Backup = yes" looks for a failed full backup
and upgrades the current backup if one exists.
- Check that barcode reading and update slots scan works.
- Try not to re-backup a file if a new hard link is added.
- Add feature to backup hard links only, but not the data.
-- Add "All Local = yes" option to save to include all local partitions.
- Fix stream handling to be simpler.
- Add Priority and Bootstrap to Run a Job.
- Eliminate Restore "Run Restore Job" prompt by allowing new "run command
- Add display of total selected files to Restore window.
- Add tree pane to left of window.
- Add progress meter.
-- Polling does not work for restore. It tries a number of times,
- gives up, and crashes the SD.
-- Lock jcr_chain when doing attach/detach in acquire.c
-- Add assert in free_jcr if attach/detach chain active.
- Max wait time or max run time causes seg fault -- see runtime-bug.txt
- Document writing to a CD/DVD with Bacula.
-- Add check for tape alerts.
- Add a "base" package to the window installer for pthreadsVCE.dll
which is needed by all packages.
- Add message to user to check for fixed block size when the forward
- Possibly implement: Action = Unmount Device="TapeDrive1" in Admin jobs.
- Setup lrrd graphs: (http://www.linpro.no/projects/lrrd/) Mike Acar.
- Revisit the question of multiple Volumes (disk) on a single device.
-- Finish SIGHUP work.
-- Check that all change in wait status in the SD are
- signaled to the Director.
- Add a block copy option to bcopy.
- Investigate adding Mac Resource Forks.
- Finish work on Gnome restore GUI.
- Fix "llist jobid=xx" where no fileset or client exists.
-- Check pruning of restore jobs.
- From Chris Hull:
it seems to be complaining about 12:00pm which should be a valid 12
hour time. I changed the time to 11:59am and everything works fine.
then list last 20 backups.
- Add all pools in Dir conf to DB also update them to catch changed
LabelFormats and such.
-- Update volumes FromPool=xxx does all volumes.
- Pass Director resource name as an option to the Console.
- Add a "batch" mode to the Console (no unsolicited queries, ...).
-- Add code to check for tape alerts -- tapeinfo.
-- Make sure list of Volumes needed is in correct order for restore.
- See havana.
-- Remove paths (and files that reference them) that have no trailing slash
- in dbcheck -- or add a trailing slash.
-- Remove Filenames (and files that reference them) that have a trailing
- slash in dbcheck -- or remove the trailing slash.
-- Remove orphaned paths/filenames by copying them to a new table with a
- reference count, then mark all referenced files/paths and remove unreferenced
- ones.
- Add a .list all files in the restore tree (probably also a list all files)
Do both a long and short form.
- Allow browsing the catalog to see all versions of a file (with
stat data on each file).
- Restore attributes of directory if replace=never set but directory
did not exist.
-- Allow "delete job jobid=xxx,yyy,aaa-bbb" i.e. list + ranges.
- Use SHA1 on authentication if possible.
- See comtest-xxx.zip for Windows code to talk to USB.
- Make btape accept Device Names in addition to Archive names.
- Add disk seeking on restore. - Allow
for optional cancelling of SD and FD in case DIR
gets a fatal error. Requested by Jesse Guardiani <jesse@wingnet.net>
-- Bizarre message: Error: Could not open WriteBootstrap file:
-- Build console in client only build.
- Add "limit=n" for "list jobs"
- Check new HAVE_WIN32 open bits.
- Check if the tape has moved before writing.
- Handling removable disks -- see below:
-- Multiple drive autochanger support -- see below.
- Keep track of tape use time, and report when cleaning is necessary.
-- Fix FreeBSD mt_count problem.
- Add FromClient and ToClient keywords on restore command (or
BackupClient RestoreClient).
-- Automatic "update slots" on user configuration directive when a
- slot error occurs.
- Implement a JobSet, which groups any number of jobs. If the
JobSet is started, all the jobs are started together.
Allow Pool, Level, and Schedule overrides.
- Enhance cancel to timeout BSOCK packets after a specific delay.
-- When I restore to Windows the Created, Accessed and Modifiedtimes are
- those of the time of the restore, not those of the originalfile.
- The dates you will find in your restore log seem to be the original
- creation dates
-- Volume "add"ed to Pool gets recycled in first use. VolBytes=0
-- If a tape is recycled while it is mounted, Stanislav Tvrudy must do an
- additional mount to deblock the job.
-- From Johan Decock:
- bscan: sql_update.c:65 UPDATE File SET MD5='Ij+5kwN6TFIxK+8l8+/I+A' WHERE FileId=0
- bscan: bscan.c:1074 Could not add MD5/SHA1 to File record. ERR=sql_update.c:65 Update problem: affected_rows=0
- Do scheduling by UTC using gmtime_r() in run_conf, scheduler, and
ua_status.!!! Thanks to Alan Brown for this tip.
- Look at updating Volume Jobs so that Max Volume Jobs = 1 will work
correctly for multiple simultaneous jobs.
- Correct code so that FileSet MD5 is calculated for < and | filename
generation.
-- Mark Volume in error on error from WEOF.
- Implement the Media record flag that indicates that the Volume does disk
addressing.
- Implement VolAddr, which is used when Volume is addressed like a disk,
- Fix fast block rejection (stored/read_record.c:118). It passes a null
pointer (rec) to try_repositioning().
- Look at extracting Win data from BackupRead.
-- Having dashes in filenames apparently creates problems for restore
- by filename??? hard to believe.
- Implement RestoreJobRetention? Maybe better "JobRetention" in a Job,
which would take precidence over the Catalog "JobRetention".
- Implement Label Format in Add and Label console commands.
resources, like Level? If so, I think I'd make it an optional directive
in Job, Client, and Pool, with precedence such that Job overrides Client
which in turn overrides Pool.
-- Print a message when a job starts if the conf file is not current.
- Spooling ideas taken from Volker Sauer's and other's emails:
> IMHO job spooling should be turned on
from one backup Volume to another.
- New Storage specifications:
+ - Want to write to multiple storage devices simultaneously
+ - Want to write to multiple storage devices sequentially (in one job)
+ - Want to read/write simultaneously
+ - Key is MediaType -- it must match
+
Passed to SD as a sort of BSR record called Storage Specification
Record or SSR.
SSR
MediaType -> Next MediaType
Pool -> Next Pool
Device -> Next Device
- Write Copy Resource that makes a copy of a resource.
Job Resource
Allow multiple Storage specifications
New flags
Storage
Allow Multiple Pool specifications (note, Pool currently
in Job resource).
- Allow Multiple MediaType specifications
- Allow Multiple Device specifications
+ Allow Multiple MediaType specifications in Dir conf
+ Allow Multiple Device specifications in Dir conf
Perhaps keep this in a single SSR
Tie a Volume to a specific device by using a MediaType that
is contained in only one device.
even more important, it's not flaky
it has an open access catalog, opening many possibilities
it's pushing toward heterogeneous systems capability
- simple things:
- I don't remember an include file directive for config files
- (not filesets, actual config directives)
- can you check the configs without starting the daemon?
- some warnings about possible common mistakes
big things:
- doing the testing and blessing of concurrent backup writes
- this is absolutely necessary in the enterprise
- easy user recovery GUI with full access checking
Macintosh file client
macs are an interesting niche, but I fear a server is a rathole
working bare iron recovery for windows
- much better handling on running config changes
- thinking through the logic of what happens to jobs in progress
the option for inc/diff backups not reset on fileset revision
a) use both change and inode update time against base time
b) do the full catalog check (expensive but accurate)
to the user, who would then use "mount" as described above
once he had actually inserted the disk.
- Implement dump/print label to UA
-- Implement disk spooling. Two parts: 1. Spool to disk then
- immediately to tape to speed up tape operations. 2. Spool to
- disk only when the tape is full, then when a tape is hung move
+- Spool to disk only when the tape is full, then when a tape is hung move
it to tape.
- Scratch Pool where the volumes can be re-assigned to any Pool.
- bextract is sending everything to the log file ****FIXME****
if full status requested or if some level of debug on.
- Make database type selectable by .conf files i.e. at runtime
- Set flag for uname -a. Add to Volume label.
-- Implement throttled work queue.
- Restore files modified after date
- SET LD_RUN_PATH=$HOME/mysql/lib/mysql
-- Implement Restore FileSet=
-- Create a protocol.h and protocol.c where all protocol messages
- are concentrated.
- Remove duplicate fields from jcr (e.g. jcr.level and jcr.jr.Level, ...).
- Timout a job or terminate if link goes down, or reopen link and query.
- Concept of precious tapes (cannot be reused).
- Make sure Qmsgs are dequeued by FD and SD.
- Check if ACLs allocated at dird_conf.c:1214 are being properly
released.
-
+- Test/doc Tape Alerts
+- Doc dbcheck eliminate orphaned clients.
+- Doc Phil's new delete job jobid scanning code.
+- Document that console commands can be abbreviated.
+- Doc update AllFromVol
+- Doc -p option in stored
+- New IP address specification is used as follows:
+ [sdaddresses|diraddresses|fdaddresses] = { [[ip|ipv4|ipv6] = {
+ [[addr|port] = [^ ]+[\n;]+] }] }
+
+ so it could look for example like this:
+ SDaddresses = { ip = {
+ addr = 1.2.3.4; port = 1205; }
+ ipv4 = {
+ addr = 1.2.3.4; port = http; }
+ ipv6 = {
+ addr = 1.2.3.4;
+ port = 1205;
+ }
+ ip = {
+ addr = 1.2.3.4
+ port = 1205
+ }
+ ip = {
+ addr = 1.2.3.4
+ }
+ ip = {
+ addr = 201:220:222::2
+ }
+ ip = {
+ addr = bluedot.thun.net
+ }
+ }
+ as a consequence, you can now specify multiple IP addresses and
+ ports to be used. In the case of a server, it will listen on
+ all those that you specify. In the case of connecting to the server,
+ Bacula will attempt connecting to one at a time until it succeeds.
+ And, in a few other special cases, Bacula will use only the first
+ address specified.
+
+ The default port numbers are still the same and the services and hosts
+ are also resolved by name. So now you could use the real names for the
+ port numbers.
+
+ An ip section will allow resolution to either an ipv4 or an ipv6 address.
+ An ipv4 section forces the resolution to be only ipv4, and an ipv6 section
+ forces the resolution to be only ipv6.
+- Fix silly restriction requiring Include { Options { xxx } } to be
+ on separate lines.
+- Restore c: with a prefix into /prefix/c/ to prevent c: and d:
+ files with the same name from overwritting each other.
+- Add "Multiple connections = yes/no" to catalog resource.
+- Add new DCR calling sequences everywhere in SD. This will permit
+ simultaneous use of multiple devices by a single job.
+