+1.37 Major Projects:
+#3 Migration (Move, Copy, Archive Jobs)
+ (probably not this version)
+#7 Single Job Writing to Multiple Storage Devices
+ (probably not this version)
+
+## Integrate web-bacula into a new Bacula project with
+ bimagemgr.
+## Create a new GUI chapter explaining all the GUI programs.
+
+Autochangers:
+- 3. Prevent two drives requesting the same Volume in any given
+ autochanger, by checking if a Volume is mounted on another drive
+ in an Autochanger.
+- 7. Implement new Console commands to allow offlining/reserving drives,
+ and possibly manipulating the autochanger (much asked for).
+- Make "update slots" when pointing to Autochanger, remove
+ all Volumes from other drives. "update slots all-drives"?
+
+Document:
+- Document that Bootstrap files can be written with cataloging
+ turned off.
+- Pruning with Admin job.
+- Add better documentation on how restores can be done
+- OS linux 2.4
+ 1) ADIC, DLT, FastStor 4000, 7*20GB
+ 2) Sun, DDS, (Suns name unknown - Archive Python DDS drive), 1.2GB
+ 3) Wangtek, QIC, 6525ES, 525MB (fixed block size 1k, block size etc.
+ driver dependent - aic7xxx works, ncr53c8xx with problems)
+ 4) HP, DDS-2, C1553A, 6*4GB
+- Doc the following
+ to activate, check or disable the hardware compression feature on my
+ exb-8900 i use the exabyte "MammothTool" you can get it here:
+ http://www.exabyte.com/support/online/downloads/index.cfm
+ There is a solaris version of this tool. With option -C 0 or 1 you can
+ disable or activate compression. Start this tool without any options for
+ a small reference.
+- Linux Sony LIB-D81, AIT-3 library works.
+- Document PostgreSQL performance problems bug 131.
+- Document testing
+- Document that ChangerDevice is used for Alert command.
+- Document new CDROM directory.
+- Document Heartbeat Interval in the dealing with firewalls section.
+
+For 1.37:
+- Implement "PreferMountedVolumes = yes|no" in Job resource.
+=== rate design
+ jcr->last_rate
+ jcr->last_runtime
+ MA = (last_MA * 3 + rate) / 4
+ rate = (bytes - last_bytes) / (runtime - last_runtime)
+- Despool attributes simultaneously with data in a separate
+ thread, rejoined at end of data spooling.
+- Implement Files/Bytes,... stats for restore job.
+- Implement Total Bytes Written, ... for restore job.
+- Add setting Volume State via Python.
+- Upgrade to MySQL 4.1.1 See:
+ http://dev.mysql.com/doc/mysql/en/Server_SQL_mode.html
+- Max Vols limit in Pool off by one?
+- Make bootstrap file handle multiple MediaTypes (SD)
+- Test restoring into a user restricted directory on Win32 -- see
+ bug report.
+- --without-openssl breaks at least on Solaris.
+- Python:
+ - Make a callback when Rerun failed levels is called.
+ - Give Python program access to Scheduled jobs.
+ - Python script to save with Python, not save, save with Bacula.
+ - Python script to do backup.
+ - What events?
+ - Change the Priority, Client, Storage, JobStatus (error)
+ at the start of a job.
+ - Make sure that Python has access to Client address/port so that
+ it can check if Clients are alive.
+
+- Remove all old Device resource code in Dir and code to pass it
+ back in SD -- better, rework it to pass back device statistics.
+- Check locking of resources -- be sure to lock devices where previously
+ resources were locked.
+- Add global lock on all devices when creating a device structure.
+
+Maybe in 1.37:
+- Add start/end date editing in messages (%t %T, %e?) ...
+- Add ClientDefs similar to JobDefs.
+- Print more info when bextract -p accepts a bad block.
+- To mark files as deleted, run essentially a Verify to disk, and
+ when a file is found missing (MarkId != JobId), then create
+ a new File record with FileIndex == -1. This could be done
+ by the FD at the same time as the backup.
+- Fix FD JobType to be set before RunBeforeJob in FD.
+- Look at adding full Volume and Pool information to a Volume
+ label so that bscan can get *all* the info.
+- If the user puts "Purge Oldest Volume = yes" or "Recycle Oldest Volume = yes"
+ and there is only one volume in the pool, refuse to do it -- otherwise
+ he fills the Volume, then immediately starts reusing it.
+- Implement copies and stripes.
+- Add history file to console.
+- Each file on tape creates a JobMedia record. Peter has 4 million
+ files spread over 10000 tape files and four tapes. A restore takes
+ 16 hours to build the restore list.
+- Add and option to check if the file size changed during backup.
+- Make sure SD deletes spool files on error exit.
+- Delete old spool files when SD starts.
+- When labeling tapes, if you enter 000026, Bacula uses
+ the tape index rather than the Volume name 000026.
+- Add offline tape command to Bacula console.
+- Bug:
+ Enter MediaId or Volume name: 32
+ Enter new Volume name: DLT-20Dec04
+ Automatically selected Pool: Default
+ Connecting to Storage daemon DLTDrive at 192.168.68.104:9103 ...
+ Sending relabel command from "DLT-28Jun03" to "DLT-20Dec04" ...
+ block.c:552 Write error at 0:0 on device /dev/nst0. ERR=Bad file descriptor.
+ Error writing final EOF to tape. This tape may not be readable.
+ dev.c:1207 ioctl MTWEOF error on /dev/nst0. ERR=Permission denied.
+ askdir.c:219 NULL Volume name. This shouldn't happen!!!
+ 3912 Failed to label Volume: ERR=dev.c:1207 ioctl MTWEOF error on /dev/nst0. ERR=Permission denied.
+ Label command failed for Volume DLT-20Dec04.
+ Do not forget to mount the drive!!!
+- Bug: if a job is manually scheduled to run later, it does not appear
+ in any status report and cannot be cancelled.
+
+Regression tests:
+- Add Pool/Storage override regression test.
+- Add delete JobId to regression.
+- Add a regression test for dbcheck.
+- New test to add bscan to four-concurrent-jobs regression,
+ i.e. after the four-concurrent jobs zap the
+ database as is done in the bscan-test, then use bscan to
+ restore the database, do a restore and compare with the
+ original.
+- Add restore of specific JobId to regression (item 3
+ on the restore prompt)
+- Add IPv6 to regression
+- Add database test to regression. Test each function like delete,
+ purge, ...
+
+- AntiVir can slow down backups on Win32 systems.
+- Win32 systems with FAT32 can be much slower than NTFS for
+ more than 1000 files per directory.
+
+
+1.37 Possibilities:
+- A HOLD command to stop all jobs from starting.
+- A PAUSE command to pause all running jobs ==> release the
+ drive.
+- Media Type = LTO,LTO-2,LTO-3
+ Media Type Read = LTO,LTO2,LTO3
+ Media Type Write = LTO2, LTO3
+
+=== From Carsten Menke <bootsy52@gmx.net>
+
+Following is a list of what I think in the situations where I'm faced with,
+could be a usefull enhancement to bacula, which I'm certain other users will
+benefit from as well.
+
+1. NextJob/NextJobs Directive within a Job Resource in the form of
+ NextJobs = job1,job2.
+
+ Why:
+ I currently solved the problem with running multiple jobs each after each
+ by setting the Max Wait Time for a job to 8 hours, and give
+ the jobs different Priorities. However, there scenarios where
+ 1 Job is directly depending on another job, so if the former job fails,
+ the job after it needn't to be run
+ while maybe other jobs should run despite of that
+
+Example:
+ A Backup Job and a Verify job, if the backup job fails there is no need to run
+ the verify job, as the backup job already failed. However, one may like
+ to backup the Catalog to disk despite of that the main backup job failed.
+
+Notes:
+ I see that this is related to the Event Handlers which are on the ToDo
+ list, also it is maybe a good idea to check for the return value and
+ execute different actions based on the return value
+
+
+3. offline capability to bconsole
+
+ Why:
+ Currently I use a script which I execute within the last Job via the
+ RunAfterJob Directive, to release and eject the tape.
+ So I have to call bconsole "release=Storage-Name" and afterwards
+ mt -f /dev/nst0 eject to get the tape out.
+
+ If I have multiple Storage Devices, than these may not be /dev/nst0 and
+ I have to modify the script or call it with parameters etc.
+ This would actually not be needed, as everything is already defined
+ in bacula-sd.conf and if I can invoke bconsole with the
+ storage name via $1 in the script than I'm done and information is
+ not duplicated.
+
+4. %s for Storage Name added to the chars being substituted in "RunAfterJob"
+
+ Why:
+
+ For the reason mentioned in 3. to have the ability to call a
+ script with /scripts/foobar %s and in the script use $1
+ to pass the Storage Name to bconsole
+
+5. Setting Volume State within a Job Resource
+
+ Why:
+ Instead of using "Maximum Volume Jobs" in the Pool Resource,
+ I would have the possibilty to define
+ in a Job Resource that after this certain job is run, the Volume State
+ should be set to "Volume State = Used", this give more flexibility (IMHO).