]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/kernstodo
Cleanup Python build so that Python is not dragged
[bacula/bacula] / bacula / kernstodo
index 14ebef85a8e29d82cb4beea7fc55892e67138840..31055d0381af61991ad15cdad1d982a92a5efbf5 100644 (file)
                     Kern's ToDo List
-                     18 November 2004
+                     09 April 2005
 
 Major development:      
 Project                     Developer
 =======                     =========                         
 IPv6_2                      Meno Abels
-Data encryption             Meno Abels (see projects)
-Communication encryption    Meno Abels  
 Version 1.37                Kern (see below)
 ========================================================
 
-For 1.36.1:
-- Fix orphanned buffers:
-   Orphaned buffer:      24 bytes allocated at line 808 of rufus-dir job.c
-   Orphaned buffer:      40 bytes allocated at line 45 of rufus-dir alist.c
-- Add dump of VolSessionId/Time and FileIndex with bls.
-
-1.37 Projects:
+1.37 Major Projects:
 #3   Migration (Move, Copy, Archive Jobs)
-#4   Embedded Python Scripting
-#5   Events that call a Python program
-#6   Select one from among Multiple Storage Devices for Job
 #7   Single Job Writing to Multiple Storage Devices
+     (probably not) 
+
+##   Integrate web-bacula into a new Bacula project with
+     bimagemgr.
+##   Consider moving docs to their own project.
+##   Move rescue to its own project.
 
-Regression tests:
+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"?
+  
+For 1.37:
+- Look at dird_conf.c:1000: warning: `int size' 
+  might be used uninitialized in this function
+- Make a callback when Rerun failed levels is called.
+- Give Python program access to Scheduled jobs.
+- Implement some way to turn off automatic pruning in Jobs.
+- Implement a way an Admin Job can prune, possibly multiple
+  clients -- Python script?
+- Implement "NewVolumeEachJob = yes|no" in Dir.
+- FD Python
+  - Python script to save with Python, not save, save with Bacula.
+  - Python script to do backup.
+- Create a new GUI chapter explaining all the GUI programs.
+- Look at Preben's acl.c error handling code.
+- Look at adding full Volume and Pool information to a Volume 
+  label so that bscan can get *all* the info. 
+- Implement Maximum Job Spool Size
+- Remove all old Device resource code in Dir and code to pass it
+  back in SD -- better, rework it to pass back device statistics.
+- Finish implementation of passing all Storage and Device needs to
+  the SD.
+- 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.
+- Make sure that Python has access to Client address/port so that
+  it can check if Clients are alive.
+- Cleanup and complete Python scripting.
+  - What events?
+  - Change the Priority, Client, Storage, JobStatus (error) 
+    at the start of a job.
+
+Maybe in 1.37:
+- 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.
+- By the way: on page http://www.bacula.org/?page=tapedrives , at the 
+  bottom, the link to "Tape Testing Chapter" is broken. It goes to 
+  /html-manual/... while the others point to /rel-manual/...
+- 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.
+- Device resource needs the "name" of the SD.
+- Add and option to see if the file size changed during backup.
+- Windows restore:
+  data-fd: RestoreFiles.2004-12-07_15.56.42 Error:
+  > ..\findlib\../../findlib/create_file.c:275 Could not open e:/: ERR=Der
+  > Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen
+  > Prozess verwendet wird.
+  Restore restores all files, but then fails at the end trying
+  to set the attributes of e:
+- Add better documentation on how restores can be done
+  from failed jobs.
+- Resolve the problem between Device name and Archive name,
+  and fix SD messages.
+- Make sure SD deletes spool files on error exit.
+- Delete old spool files when SD starts.
+- Add a restore directory-x
+- When labeling tapes, if you enter 000026, Bacula uses
+  the tape index rather than the Volume name 000026.
+- Max Vols limit in Pool off by one?
+- Tell the "restore" user when browsing is no longer possible.
+- Require restore via the restore command or make a restore Job
+  get the bootstrap file.
+- Make bootstrap file handle multiple MediaTypes (SD)
+- Add offline tape command to Bacula console.
+- Document that Bootstrap files can be written with cataloging
+  turned off.
+- Upgrade to MySQL 4.1.1 See:  
+  http://dev.mysql.com/doc/mysql/en/Server_SQL_mode.html
+- Add client version to the Client name line that prints in
+  the Job report.
+- 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 (Scott):
 - Add Pool/Storage override regression test.
 - Add delete JobId to regression.
 - Add a regression test for dbcheck.  
@@ -38,9 +146,110 @@ Regression tests:
 - 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:
-- Add offline command to Bacula console.
+- 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).
+
+6. Localization of Bacula Messages
+
+    Why:
+    Unfortunatley many,many people I work with don't speak english very well.
+    So if at least the Reporting messages would be localized then they
+    would  understand that they have to change the tape,etc. etc.
+
+    I volunteer to do the german translations, and if I can convince my wife also
+    french and Morre (western african language).
+
+7. OK, this is evil, probably bound to security risks and maybe not possible
+    due to the design of bacula.
+
+    Implementation of Backtics ( `command` ) for shell comand execution to
+    the "Label Format" Directive.
+
+Why:
+
+    Currently I have defined BACULA_DAY_OF_WEEK="day1|day2..." resulting in
+    Label Format = "HolyBackup-${BACULA_DAY_OF_WEEK[${WeekDay}]}". If I could
+    use backticks than I could use "Label Format = HolyBackup-`date +%A` to have
+    the localized name for the day of the week appended to the
+    format string. Then I have the tape labeled automatically with weekday
+    name in the correct language.
+==========
+- Make output from status use html table tags for nicely 
+  presenting in a browser.
+- Can one write tapes faster with 8192 byte block sizes?
+- Specify a single directory to restore.
+- Document security problems with the same password for everyone in
+  rpm and Win32 releases.
+- Browse generations of files.
 - I've seen an error when my catalog's File table fills up.  I
    then have to recreate the File table with a larger maximum row
    size.  Relevant information is at
@@ -56,42 +265,25 @@ Media: LTO-2
 Model: SSL1016
 Slots: 16
 Cap: 200GB
-- Save mount point for directories not traversed with  
-  onefs=yes.
-- Implement WildFile and WildDir to solve problem of 
-  saving only *.doc files.
+- Supported drive:
+  Wangtek 6525ES (SCSI-1 QIC drive, 525MB), under Linux 2.4.something, 
+  bacula 1.36.0/1 works with blocksize 16k INSIDE bacula-sd.conf.
 - Add regex from http://www.pcre.org to Bacula for Win32.
-- Cancel command should include JobId in list of Jobs.
-- Require restore via the restore command or make a restore Job
-  get the bootstrap file.
 - Use only shell tools no make in CDROM package.
 - Document PostgreSQL performance problems bug 131.
 - Document testing
-- Add performance testing hooks
-- if 2 concurrent backups are attempted on the same tape
-  drive (autoloader) into different tape pools, one of them will exit
-  fatally instead of halting until the drive is idle
-- Add seconds to start and end times in the Job report output.
-- Add disk seeking on restore.  
 - Document that ChangerDevice is used for Alert command.
 - Include within include does it work?
 - Implement a Pool of type Cleaning?
 - Implement VolReadTime and VolWriteTime in SD
 - Modify Backing up Your Database to include a bootstrap file.
 - Think about making certain database errors fatal.
-- Look at correcting the time jump in the sceduler for daylight
+- Look at correcting the time jump in the scheduler for daylight
   savings time changes.
 - Add a "real" timer to network connections.
-- Tell the "restore" user when browsing is no longer possible.
 - Write non-optimized bsrs from the JobMedia and Media records,
   even after Files are pruned.
-- Document that Bootstrap files can be written with cataloging
-  turned off.
-- Look at adding full Volume and Pool information to a Volume 
-  label so that bscan can get *all* the info. 
 - Promote to Full = Time period 
-- Scratch Pool where the volumes can be re-assigned to any Pool.
-- Update StartTime if job held in Job Queue.
 - Despool attributes simultaneously with data in a separate
   thread, rejoined at end of data spooling.
 - Implement Files/Bytes,... stats for restore job.
@@ -162,14 +354,9 @@ For 1.37 Testing/Documentation:
 - 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).
-- 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).
 - Allow the user to select JobType for manual pruning/purging.
-- Look at adding Client run command that will use the
-  port opened by the client.
 - bscan does not put first of two volumes back with all info in
   bscan-test.
 - Implement the FreeBSD nodump flag in chflags.
@@ -179,6 +366,12 @@ For 1.37 Testing/Documentation:
   perhaps if password is undefined.
 - Implement "from ISO-date/time every x hours/days/weeks/months" in
   schedules.
+=== rate design
+  jcr->last_rate
+  jcr->last_runtime
+  MA = (last_MA * 3 + rate) / 4
+  rate = (bytes - last_bytes) / (runtime - last_runtime)
+
 ==== from Marc Schoechlin
 - the help-command should be more verbose
   (it should explain the paramters of the different 
@@ -213,6 +406,10 @@ For 1.37 Testing/Documentation:
 - any actions should be interuptable with STRG+C
 - command-expansion would be pretty cool
 ====
+- When the replace Never option is set, new directory permissions
+  are not restored. See bug 213. To fix this requires creating a
+  list of newly restored directories so that those directory 
+  permissions *can* be restored.
 - Compaction of Disk space by "migrating" Volumes that have pruned
   Jobs (what criteria? size, #jobs, time).
 - Add prune all command
@@ -354,8 +551,6 @@ For 1.37 Testing/Documentation:
     is contained in only one device.
   In SD allow Device to have Multiple MediaTypes
 
-- Look at www.nu2.nu/pebuilder as a helper for full windows
-  bare metal restore.
 - Ideas from Jerry Scharf:
   First let's point out some big pluses that bacula has for this
         it's open source
@@ -1029,7 +1224,85 @@ Block Position: 0
 
 
 === Done
-- Add "Rerun failed levels = yes/no" to Job resource.
-- Fix CDROM make script to permit picking up already installed
-  static FD.
-- Add date/time to each Jmsg.
+- Save mount point for directories not traversed with onefs=yes.
+- Add seconds to start and end times in the Job report output.
+- if 2 concurrent backups are attempted on the same tape
+  drive (autoloader) into different tape pools, one of them will exit
+  fatally instead of halting until the drive is idle
+- Update StartTime if job held in Job Queue.
+- Look at www.nu2.nu/pebuilder as a helper for full windows
+  bare metal restore. (done by Scott)
+- Fix orphanned buffers:
+   Orphaned buffer:      24 bytes allocated at line 808 of rufus-dir job.c
+   Orphaned buffer:      40 bytes allocated at line 45 of rufus-dir alist.c
+- Implement Preben's suggestion to add
+  File System Types = ext2, ext3 
+  to FileSets, thus simplifying backup of *all* local partitions.
+- Try to open a device on each Job if it was not opened
+  when the SD started.
+- Add dump of VolSessionId/Time and FileIndex with bls.
+- If Bacula does not find the right tape in the Autochanger,
+  then mark the tape in error and move on rather than asking
+  for operator intervention.
+- Cancel command should include JobId in list of Jobs.
+- Add performance testing hooks
+- Bootstrap from JobMedia records.
+- Implement WildFile and WildDir to solve problem of 
+  saving only *.doc files.
+- Fix
+   Please use the "label"  command to create a new Volume for:
+       Storage:      DDS-4-changer
+       Media type:   
+       Pool:         Default
+   label
+   The defined Storage resources are:
+- Copy Changer Device and Changer Command from Autochanger
+  to Device resource in SD if none given in Device resource.
+- 1. Automatic use of more than one drive in an autochanger (done)
+- 2. Automatic selection of the correct drive for each Job (i.e.
+     selects a drive with an appropriate Volume for the Job) (done)
+- 6. Allow multiple simultaneous Jobs referencing the same pool write
+    to several tapes (some new directive(s) are are probably needed for
+    this) (done)
+- Locking (done)
+- Key on Storage rather than Pool (done)
+- Allow multiple drives to use same Pool (change jobq.c DIR) (done).
+- Synchronize multiple drives so that not more
+  than one loads a tape and any time (done)
+- 4. Use Changer Device and Changer Command specified in the
+     Autochanger resource, if none is found in the Device resource.
+    You can continue to specify them in the Device resource if you want
+    or need them to be different for each device.
+- 5. Implement a new Device directive (perhaps "Autoselect = yes/no") 
+    that can allow a Device be part of an Autochanger, and hence the changer
+    script protected, but if set to no, will prevent the Device from being 
+    automatically selected from the changer. This allows the device to
+    be directly accessed through its Device name, but not through the
+    AutoChanger name.
+#6   Select one from among Multiple Storage Devices for Job
+#5   Events that call a Python program 
+     (Implemented in Dir/SD)
+- Make sure the Device name is in the Query packet returned.
+- Don't start a second file job if one is already running.
+- Implement EOF/EOV labels for ANSI labels
+- Implement IBM labels.
+- When Python creates a new label, the tape is immediately
+  recycled and no label created. This happens when using   
+  autolabeling -- even when Python doesn't generate the name.
+- Scratch Pool where the volumes can be re-assigned to any Pool.
+- 28-Mar 23:19 rufus-sd: acquire.c:379 Device "DDS-4" (/dev/nst0) 
+  is busy reading. Job 6 canceled.
+- Remove separate thread for opening devices in SD.  On the other
+  hand, don't block waiting for open() for devices.
+- Fix code to either handle updating NumVol or to calculate it in
+  Dir next_vol.c
+- Ensure that you cannot exclude a directory or a file explicitly
+  Included with File.
+#4   Embedded Python Scripting 
+     (Implemented in Dir/SD/FD)
+- Add Python writable variable for changing the Priority,
+    Client, Storage, JobStatus (error), ...
+- SD Python
+  - Solicit Events
+- Add disk seeking on restore; turn off seek on tapes.
+  stored/match_bsr.c