Merge commit 'upstream/3.2.0'
authorBdale Garbee <bdale@gag.com>
Tue, 2 Nov 2010 02:41:50 +0000 (20:41 -0600)
committerBdale Garbee <bdale@gag.com>
Tue, 2 Nov 2010 02:41:50 +0000 (20:41 -0600)
Conflicts:
changer-src/chg-mcutil.sh

1  2 
client-src/selfcheck.c
example/amanda.conf.in
example/template.d/dumptypes
gnulib/regenerate/regenerate
man/amanda.conf.5
man/disklist.5
man/entities/global.entities.in
man/xml-source/amanda.conf.5.xml
server-src/diskfile.h

diff --combined client-src/selfcheck.c
index bbfcd67daad6506cbd224ef7dfe32685421425dd,5f6cb075db48e0495d8a99501e3b197bacbdd14a..a68f39e4f47a455a4575f03bbd906a2c2c111ddb
@@@ -306,7 -306,7 +306,7 @@@ main
  
      if (am_has_feature(g_options->features, fe_req_xml)) {
        char  *errmsg = NULL;
-       dle_t *dles, *dle;
+       dle_t *dles, *dle, *dle_next;
  
        dles = amxml_parse_node_FILE(stdin, &errmsg);
        if (errmsg) {
            run_client_scripts(EXECUTE_ON_POST_HOST_AMCHECK, g_options, dle,
                               stdout);
        }
+       for (dle = dles; dle != NULL; dle = dle_next) {
+           dle_next = dle->next;
+           free_dle(dle);
+       }
      }
  
      check_overall();
@@@ -1120,8 -1124,8 +1124,8 @@@ check_overall(void
        check_file(COMPRESS_PATH, X_OK);
  
      if (need_dump || need_xfsdump ) {
 -      if (check_file_exist("/etc/dumpdates")) {
 -          check_file("/etc/dumpdates",
 +      if (check_file_exist("/var/lib/dumpdates")) {
 +          check_file("/var/lib/dumpdates",
  #ifdef USE_RUNDUMP
                       F_OK
  #else
        } else {
  #ifndef USE_RUNDUMP
            if (access("/etc", R_OK|W_OK) == -1) {
 -              g_printf(_("ERROR [dump will not be able to create the /etc/dumpdates file: %s]\n"), strerror(errno));
 +              g_printf(_("ERROR [dump will not be able to create the /var/lib/dumpdates file: %s]\n"), strerror(errno));
            }
  #endif
        }
      }
  
      if (need_vdump) {
 -      if (check_file_exist("/etc/vdumpdates")) {
 -            check_file("/etc/vdumpdates", F_OK);
 +      if (check_file_exist("/var/lib/vdumpdates")) {
 +            check_file("/var/lib/vdumpdates", F_OK);
        }
      }
  
      check_space(AMANDA_DBGDIR, (off_t)64);    /* for amandad i/o */
  #endif
  
 +    check_space("/var/lib", (off_t)64);               /* for /var/lib/dumpdates writing */
      check_space("/etc", (off_t)64);           /* for /etc/dumpdates writing */
      }
  }
diff --combined example/amanda.conf.in
index 6d234a0aeb37ff695a07ec67fd33a544a5d95fcc,7ef107b681ab10f80716b5a785222c115d3a219c..903b1bbd7b364254e0a8aac67fe3d114708fb6db
@@@ -133,17 -133,13 +133,13 @@@ tapedev "@EXAMPLE_TAPEDEV@"     # tape chan
  # encounters, uncomment the line below. Note that this will ERASE any
  # non-Amanda tapes you may have, and may also ERASE any near-failing tapes.
  # Use with caution.
- ## label_new_tapes "@DEFAULT_CONFIG@-%%%"
+ ## autolabel "@DEFAULT_CONFIG@-%%%" empty
  
  maxdumpsize -1                # Maximum number of bytes the planner will schedule
                        # for a run (default: runtapes * tape_length).
  tapetype HP-DAT               # what kind of tape it is (see tapetypes below)
  labelstr "^@DEFAULT_CONFIG@-[0-9][0-9]*$"     # label constraint regex: all tapes must match
  
- amrecover_do_fsf yes          # amrecover will call amrestore with the
-                               # -f flag for faster positioning of the tape.
- amrecover_check_label yes     # amrecover will call amrestore with the
-                               # -l flag to check the label.
  amrecover_changer "changer"   # amrecover will use the changer if you restore
      # from this device. It could be a string like 'changer' and amrecover will use your
      # changer if you set your tape to 'changer' with 'setdevice changer' or via 
@@@ -268,8 -264,13 +264,13 @@@ indexdir "@CONFIG_DIR@/@DEFAULT_CONFIG@
  #     lbl-templ "@CONFIG_DIR@/config/lbl.exabyte.ps"
  # }
  
+ define tapetype global {
+     part_size 3G
+     part_cache_type none
+ }
  
  define tapetype QIC-60 {
+     global
      comment "Archive Viper"
      length 60 mbytes
      filemark 100 kbytes               # don't know a better value
  }
  
  define tapetype DEC-DLT2000 {
+     global
      comment "DEC Differential Digital Linear Tape 2000"
      length 15000 mbytes
      filemark 8 kbytes
  # goluboff@butch.Colorado.EDU
  # in amanda-users (Thu Dec 26 01:55:38 MEZ 1996)
  define tapetype DLT {
+     global
      comment "DLT tape drives"
      length 20000 mbytes               # 20 Gig tapes
      filemark 2000 kbytes      # I don't know what this means
  }
  
  define tapetype SURESTORE-1200E {
+     global
      comment "HP AutoLoader"
      length 3900 mbytes
      filemark 100 kbytes
  }
  
  define tapetype EXB-8500 {
+     global
      comment "Exabyte EXB-8500 drive on decent machine"
      length 4200 mbytes
      filemark 48 kbytes
  }
  
  define tapetype EXB-8200 {
+     global
      comment "Exabyte EXB-8200 drive on decent machine"
      length 2200 mbytes
      filemark 2130 kbytes
  }
  
  define tapetype HP-DAT {
+     global
      comment "DAT tape drives"
      # data provided by Rob Browning <rlb@cs.utexas.edu>
      length 1930 mbytes
  }
  
  define tapetype DAT {
+     global
      comment "DAT tape drives"
      length 1000 mbytes                # these numbers are not accurate
      filemark 100 kbytes               # but you get the idea
  }
  
  define tapetype MIMSY-MEGATAPE {
+     global
      comment "Megatape (Exabyte based) drive through Emulex on Vax 8600"
      length 2200 mbytes
      filemark 2130 kbytes
  }
  
  define tapetype SEAGATE-ULTRIUM-LTO {
-      comment "SEAGATE ULTRIUM 06242 LTO, compression off"
-      length 99584 mbytes
-      filemark 0 kbytes
-      speed 11288 kps
+     global
+     comment "SEAGATE ULTRIUM 06242 LTO, compression off"
+     length 99584 mbytes
+     filemark 0 kbytes
+     speed 11288 kps
  }
  
  # dumptypes
  #   program   - specify the dump system to use.  Valid values are "DUMP",
  #                 or "GNUTAR".  Default: [program "DUMP"].
  #   record    - record the backup in the time-stamp-database of the backup
 -#               program (e.g. /etc/dumpdates for DUMP or
 +#               program (e.g. /var/lib/dumpdates for DUMP or
  #               @GNUTAR_LISTED_INCREMENTAL_DIRX@ for GNUTAR.).
  #               Default: [record yes]
  #   skip-full - skip the disk when a level 0 is due, to allow full backups
  #                              only be performed when an 'amadmin force' 
  #                              has been issued 
  #               Default: [strategy standard]
- # tape_splitsize - (optional) split dump file into pieces of a specified size.
- #               This allows dumps to be spread across multiple tapes, and can
- #               potentially make more efficient use of tape space.  Note that
- #               if this value is too large (more than half the size of the
- #               average dump being split), substantial tape space can be
- #               wasted.  If too small, large dumps will be split into
- #               innumerable tiny dumpfiles, adding to restoration complexity.
- #               A good rule of thumb, usually, is 1/10 of the size of your
- #               tape.  Default: [disabled]
- # split_diskbuffer - (optional) When dumping a split dump  in  PORT-WRITE
- #                 mode (usually meaning "no holding disk"), buffer the split
- #               chunks to a file in the directory specified by this option.
- #               Default: [none]
- # fallback_splitsize - (optional) When dumping a split dump  in  PORT-WRITE
- #                 mode, if no split_diskbuffer is specified (or if we somehow
- #                 fail to use our split_diskbuffer), we must buffer split
- #                 chunks in memory.  This specifies the maximum size split
- #                 chunks can be in this scenario, and thus the maximum amount
- #                 of memory consumed for in-memory splitting.  Default: [10m]
  #
  # Note that you may specify previously defined dumptypes as a shorthand way of
  # defining parameters.
@@@ -544,7 -535,6 +535,6 @@@ define dumptype user-tar 
  
  define dumptype user-tar-span {
      root-tar
-     tape_splitsize 3 Gb
      comment "tape-spanning user partitions dumped with tar"
      priority medium
  }
@@@ -587,7 -577,6 +577,6 @@@ define dumptype comp-user 
  
  define dumptype comp-user-span {
      global
-     tape_splitsize 5 Gb
      comment "Tape-spanning non-root partitions on reasonably fast machines"
      compress client fast
      priority medium
@@@ -633,7 -622,7 +622,7 @@@ define dumptype nocomp-high 
  
  define dumptype nocomp-test {
      global
 -    comment "test dump without compression, no /etc/dumpdates recording"
 +    comment "test dump without compression, no /var/lib/dumpdates recording"
      compress none
      record no
      priority medium
  
  define dumptype comp-test {
      nocomp-test
 -    comment "test dump with compression, no /etc/dumpdates recording"
 +    comment "test dump with compression, no /var/lib/dumpdates recording"
      compress client fast
  }
  
index b19189f923b2b97c00cbd9ae2659e67babc37a31,d73639ad0d79462a035d13483373f255f759ed8d..62172d304691cf6cdf7408d39dee70e8014465a5
  #   program   - specify the dump system to use.  Valid values are "DUMP" 
  #               "STAR" and "GNUTAR".  Default: [program "DUMP"].
  #   record    - record the backup in the time-stamp-database of the backup
 -#               program (e.g. /etc/dumpdates for DUMP or
 +#               program (e.g. /var/lib/dumpdates for DUMP or
  #               /var/lib/amanda/gnutar-lists for GNUTAR.).
  #               Default: [record yes]
  #   skip-full - skip the disk when a level 0 is due, to allow full backups
  #                              only be performed when an 'amadmin force' 
  #                              has been issued 
  #               Default: [strategy standard]
- # tape_splitsize - (optional) split dump file into pieces of a specified size.
- #               This allows dumps to be spread across multiple tapes, and can
- #               potentially make more efficient use of tape space.  Note that
- #               if this value is too large (more than half the size of the
- #               average dump being split), substantial tape space can be
- #               wasted.  If too small, large dumps will be split into
- #               innumerable tiny dumpfiles, adding to restoration complexity.
- #               A good rule of thumb, usually, is 1/10 of the size of your
- #               tape.  Default: [disabled]
- # split_diskbuffer - (optional) When dumping a split dump  in  PORT-WRITE
- #                 mode (usually meaning "no holding disk"), buffer the split
- #               chunks to a file in the directory specified by this option.
- #               Default: [none]
- # fallback_splitsize - (optional) When dumping a split dump  in  PORT-WRITE
- #                 mode, if no split_diskbuffer is specified (or if we somehow
- #                 fail to use our split_diskbuffer), we must buffer split
- #                 chunks in memory.  This specifies the maximum size split
- #                 chunks can be in this scenario, and thus the maximum amount
- #                 of memory consumed for in-memory splitting.  Default: [10m]
- #
  #
  # Note that you may specify previously defined dumptypes as a shorthand way
  # of defining parameters.
@@@ -184,7 -164,6 +164,6 @@@ define dumptype user-star 
  
  define dumptype user-star-span {
      root-star
-     tape_splitsize 3 Gb
      comment "tape-spanning user partitions dumped with star"
      priority medium
  }
@@@ -232,7 -211,6 +211,6 @@@ define dumptype user-tar 
  
  define dumptype user-tar-span {
      root-tar
-     tape_splitsize 3 Gb
      comment "tape-spanning user partitions dumped with tar"
      priority medium
  }
@@@ -277,7 -255,6 +255,6 @@@ define dumptype comp-user 
  
  define dumptype comp-user-span {
      global
-     tape_splitsize 5 Gb
      comment "Tape-spanning non-root partitions on reasonably fast machines"
      compress client fast
      priority medium
@@@ -325,7 -302,7 +302,7 @@@ define dumptype nocomp-high 
  
  define dumptype nocomp-test {
      global
 -    comment "test dump without compression, no /etc/dumpdates recording"
 +    comment "test dump without compression, no /var/lib/dumpdates recording"
      compress none
      record no
      priority medium
  
  define dumptype comp-test {
      nocomp-test
 -    comment "test dump with compression, no /etc/dumpdates recording"
 +    comment "test dump with compression, no /var/lib/dumpdates recording"
      compress client fast
  }
  
index 6f42fa014782941304af48ccf11826cd02349de5,57565d78ef319fba1b4e6e6531188524d94c25cd..57565d78ef319fba1b4e6e6531188524d94c25cd
mode 100644,100755..100644
@@@ -4,7 -4,7 +4,7 @@@
  # same version as was used to generate the source in the repository,
  # run the following in your git repository:
  #
- #   git checkout 8d2524ce78ca107074727cbd8780c26a203a107c
+ #   git checkout 09b8fa6cb737f6e091931c494cbd56d12b3ad08d
  
  # get to the project root
  cd `dirname $0`/../..
@@@ -39,9 -39,10 +39,10 @@@ shopt -u nullglo
  ## Add your modules here, then see below if you need to patch them. ##
  ######################################################################
  
- GNULIB_MODULES="getaddrinfo lock visibility base64 physmem fsusage"
- GNULIB_MODULES="$GNULIB_MODULES mkdtemp getopt full-read full-write"
- GNULIB_MODULES="$GNULIB_MODULES lseek ftruncate fseeko ftello regex"
+ GNULIB_MODULES="getaddrinfo lock base64 physmem fsusage"
+ GNULIB_MODULES="$GNULIB_MODULES mkdtemp getopt-gnu full-read full-write"
+ GNULIB_MODULES="$GNULIB_MODULES lseek ftruncate fseeko ftello regex environ"
+ GNULIB_MODULES="$GNULIB_MODULES inet_pton"
  
  ######################################################################
  ## End modules                                                      ##
diff --combined man/amanda.conf.5
index bd2402bc2be05230ce4e71ee76efeb38212c3126,b8b452ec8bb7e5c2a61d070de593fd5478b655d3..2305f16ab9c88e11e93b2c6660c1d1d5e28b4fee
@@@ -2,12 -2,12 +2,12 @@@
  .\"     Title: amanda.conf
  .\"    Author: James da Silva <jds@amanda.org>
  .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
- .\"      Date: 06/01/2010
+ .\"      Date: 10/18/2010
  .\"    Manual: File formats and conventions
- .\"    Source: Amanda 3.1.0
+ .\"    Source: Amanda 3.2.0
  .\"  Language: English
  .\"
- .TH "AMANDA\&.CONF" "5" "06/01/2010" "Amanda 3\&.1\&.0" "File formats and conventions"
+ .TH "AMANDA\&.CONF" "5" "10/18/2010" "Amanda 3\&.2\&.0" "File formats and conventions"
  .\" -----------------------------------------------------------------
  .\" * set default formatting
  .\" -----------------------------------------------------------------
@@@ -46,7 -46,7 +46,7 @@@ are treated the same\&. Also, the chara
  \fBdevice_property\fR
  and
  \fBdevice\-property\fR
- have the same meaning\&.
+ have the same meaning\&. This manpage uses the dashed versions, but the underscored versions will be accepted for backward compatibility
  .PP
  Identifiers are names which are defined in the configuration itself, such as dumptypes or interfaces\&. Identifiers are are case\-insensitive, but sensitive to \'\fB\-\fR\' vs\&. \'\fB_\fR\'\&. Identifiers should be quoted in the configuration file, although For historical reasons, the quotes are optional\&.
  .PP
@@@ -67,7 -67,7 +67,7 @@@ tapetype "EXABYTE"        # optiona
  
  define dumptype "dt" {    # optional      insensitive     sensitive
    "dumptype\-common"       # optional      insensitive     sensitive
-   strategy noincr         # prohibited    insensitive     insensitive
+   strategy noinc          # prohibited    insensitive     insensitive
  }
  .fi
  .SS "VALUE SUFFIXES"
@@@ -322,9 -322,19 +322,19 @@@ days 
  \fBtapecycle\fR \fIint\fR
  .RS 4
  Default:
- \fI15 tapes\fR\&. Typically tapes are used by Amanda in an ordered rotation\&. The
+ \fI15 tapes\fR\&. Specifies the number of "active" volumes \- volumes that Amanda will not overwrite\&. While Amanda is always willing to write to a new volume, it refuses to overwrite a volume unless at least \'\fBtapecycle\fR
+ \-1\' volumes have been written since\&.
+ .sp
+ It is considered good administrative practice to set the
+ \fBtapecycle\fR
+ parameter slightly lower than the actual number of tapes in use\&. This allows the administrator to more easily cope with damaged or misplaced tapes or schedule adjustments that call for slight adjustments in the rotation order\&.
+ .sp
+ Note: Amanda is commonly misconfigured with
+ \fBtapecycle\fR
+ equal to the number of tapes per
+ \fBdumpcycle\fR\&. In this misconfiguration, amanda may erase a full dump before a new one is completed\&. Recovery is then impossible\&. The
  \fBtapecycle\fR
parameter defines the size of that rotation\&. This parameter must be be larger than the number of tapes used in a dumpcycle\&.
must be at least one tape larger than the number of tapes per dumpcycle\&.
  .sp
  The number of tapes per dumpcycle is calculated by multiplying the number of
  \fBamdump\fR
@@@ -337,31 -347,6 +347,6 @@@ runs per dump cycle) an
  (the number of tapes used per run)\&. Typically
  \fBtapecycle\fR
  is set to two or four times the tapes per dumpcycle\&.
- .if n \{\
- .sp
- .\}
- .RS 4
- .it 1 an-trap
- .nr an-no-space-flag 1
- .nr an-break-flag 1
- .br
- .ps +1
- \fBNote\fR
- .ps -1
- .br
- Amanda is commonly misconfigured with \fBtapecycle\fR
- equal to the number of tapes per \fBdumpcycle\fR\&.  In this
- misconfiguration, amanda may erase a full dump before a new one is completed,
- the recovery is then impossible\&. tapecycle must be at least one tape larger
- than the number of tapes per dumpcycle\&.
- .sp .5v
- .RE
- While Amanda is always willing to use a new tape in its rotation, it refuses to reuse a tape until at least \'\fBtapecycle\fR
- \-1\' number of other tapes have been used\&.
- .sp
- It is considered good administrative practice to set the
- \fBtapecycle\fR
- parameter slightly lower than the actual number of tapes in rotation\&. This allows the administrator to more easily cope with damaged or misplaced tapes or schedule adjustments that call for slight adjustments in the rotation order\&.
  .RE
  .PP
  \fBusetimestamps\fR \fIbool\fR
@@@ -370,45 -355,48 +355,48 @@@ Default
  \fBYes\fR\&. This option allows Amanda to track multiple runs per calendar day\&. The only reason one might disable it is that Amanda versions before 2\&.5\&.1 can\'t read logfiles written when this option was enabled\&.
  .RE
  .PP
- \fBlabel_new_tapes\fR \fIstring\fR
+ \fBlabel\-new\-tapes\fR \fIstring\fR
  .RS 4
  Deprecated, use
  \fBautolabel\fR
- option\&.
+ option with options
+ \fBvolume\-error empty\fR
+ to get equivalent behavior\&.
  .sp
- Default: not set\&. When set, this directive will cause Amanda to automatically write an Amanda tape label to any blank tape she encounters\&. This option is DANGEROUS because when set, Amanda will ERASE any non\-Amanda tapes you may have, and may also ERASE any near\-failing tapes\&. Use with caution\&.
- .sp
- When using this directive, specify the template for new tape labels\&. The template should contain some number of contiguous \'%\' characters, which will be replaced with a generated number\&. Be sure to specify enough \'%\' characters that you do not run out of tape labels\&. Example:
- \fBlabel_new_tapes "DailySet1\-%%%"\fR
+ Default: not set\&. When set, this directive will cause Amanda to automatically write an Amanda tape label to any blank tape she encounters\&.
  .RE
  .PP
- \fBautolabel\fR \fIstring\fR [\fBany\fR] [\fBother_config\fR] [\fBnon_amanda\fR] [\fBvolume_error\fR] [\fBempty\fR]
+ \fBautolabel\fR \fIstring\fR [\fBany\fR] [\fBother\-config\fR] [\fBnon\-amanda\fR] [\fBvolume\-error\fR] [\fBempty\fR]
  .RS 4
  Default: not set\&. When set, this directive will cause Amanda to automatically write an Amanda tape label to most volume she encounters\&. This option is DANGEROUS because when set, Amanda may erase near\-failing tapes or tapes accidentally loaded in the wrong slot\&.
  .sp
  When using this directive, specify the template for new tape labels\&. The template should contain some number of contiguous \'%\' characters, which will be replaced with a generated number\&. Be sure to specify enough \'%\' characters that you do not run out of tape labels\&. Example:
  \fBautolabel "DailySet1\-%%%" empty\fR
+ .sp
+ Note that many devices cannot distinguish an empty tape from an error condition, so it may is often necessary to include
+ \fBvolume\-error\fR
+ as an autolabel condition\&.
  .PP
  \fBany\fR
  .RS 4
- equivalent to \'\fBother_config non_amanda volume_error empty\fR\'
+ equivalent to \'\fBother\-config non\-amanda volume\-error empty\fR\'
  .RE
  .PP
- \fBother_config\fR
+ \fBother\-config\fR
  .RS 4
  Label volumes with a valid Amanda label that do not match our
  \fBlabelstr\fR\&. Danger: this may erase volumes
  from other Amanda configurations without warning!
  .RE
  .PP
- \fBnon_amanda\fR
+ \fBnon\-amanda\fR
  .RS 4
  Label volumes which do not start with data that resembles an
  Amanda header\&. Danger: this may erase volumes from other backup applications
  without warning!
  .RE
  .PP
- \fBvolume_error\fR
+ \fBvolume\-error\fR
  .RS 4
  Label volumes where an error occurs while trying to read the label\&.
  Danger: this may erase arbitrary volumes due to transient errors\&.
@@@ -440,32 -428,18 +428,18 @@@ option\&
  \fBtapedev\fR \fIstring\fR
  .RS 4
  Default:
- \fI"null:"\fR\&. The device name, referencing the name of a "device" section in the configuration file\&. See
- \fBamanda-devices\fR(7)
- for more information on device names\&.
- .sp
- If a tape changer is configured (see the
- \fBtpchanger\fR
- option), this option might not be used\&.
- .sp
- If
- \fBtapedev\fR
- is
- \fBnull:\fR, programs such as
- \fBamdump\fR
- will run normally but all images will be thrown away\&. This should only be used for debugging and testing, and probably only with the
- \fBrecord\fR
- option set to
- \fIno\fR\&.
+ \fI"null:"\fR\&. This parameter can either specify a device (explicitly or by referencing a device definition \- see
+ \fBamanda-devices\fR(7)) or a tape changer (explicitly or by referencing a device definition \- see
+ \fBamanda-changers\fR(7))\&.
  .RE
  .PP
- \fBdevice_property\fR \fIstring\fR \fIstring\fR
+ \fBdevice\-property\fR \fIstring\fR \fIstring\fR
  .RS 4
  These options can set various device properties\&. See
  \fBamanda-devices\fR(7)
  for more information on device properties and their syntax\&. Both strings are always quoted; the first string contains the name of the property to set, and the second contains its value\&. For example, to set a fixed block size of 128k, write:
  .nf
- device_property "BLOCK_SIZE" "128k"
+ device\-property "BLOCK_SIZE" "128k"
  .fi
  .RE
  .PP
@@@ -478,10 -452,15 +452,15 @@@ keyword append the values to the list o
  .PP
  \fBtpchanger\fR \fIstring\fR
  .RS 4
- Default: not set\&. The name of the tape changer\&. If a tape changer is not configured, this option is not used and should be commented out of the configuration file\&.
- .sp
- If a tape changer is configured, choose one of the changer scripts (e\&.g\&.
- \fBchg\-scsi\fR) and enter that here\&.
+ Default: not set\&. The tape changer to use\&. In most cases, only one of
+ \fBtpchanger\fR
+ or
+ \fBtapedev\fR
+ is specified, although for backward compatibility both may be specified if
+ \fBtpchanger\fR
+ gives the name of an old changer script\&. See
+ \fBamanda-changers\fR(7)
+ for more information on configuring changers\&.
  .RE
  .PP
  \fBchangerdev\fR \fIstring\fR
@@@ -495,7 -474,7 +474,7 @@@ option\&
  \fBchangerfile\fR \fIstring\fR
  .RS 4
  Default:
- \fI"usr/adm/amanda/log/changer\-status"\fR\&. A tape changer configuration parameter\&. Usage depends on the particular changer defined with the
+ \fI"/usr/adm/amanda/log/changer\-status"\fR\&. A tape changer configuration parameter\&. Usage depends on the particular changer defined with the
  \fBtpchanger\fR
  option\&.
  .RE
@@@ -508,14 -487,12 +487,12 @@@ Default
  If a tape changer is configured, this may be set larger than one to let Amanda write to more than one tape\&.
  .sp
  Note that this is an upper bound on the number of tapes, and Amanda may use less\&.
- .sp
- Also note that as of this release, Amanda does not support true tape overflow\&. When it reaches the end of one tape, the backup image Amanda was processing starts over again on the next tape\&.
  .RE
  .PP
  \fBmaxdumpsize\fR \fIint\fR
  .RS 4
  Default:
- \fI\fBruntapes\fR\fR\fI*\fR\fI\fBtape_length\fR\fR\&. Maximum number of bytes the planner will schedule for a run\&.
+ \fI\fBruntapes\fR\fR\fI*\fR\fI\fBtape\-length\fR\fR\&. Maximum number of bytes the planner will schedule for a run\&.
  .sp
  The default unit is Kbytes if it is not specified\&.
  .RE
@@@ -556,6 -533,13 +533,13 @@@ Last in, first out\&
  .RE
  .RE
  .PP
+ \fBtaper\-parallel\-write\fR \fIint\fR
+ .RS 4
+ .PP
+ Default:
+ \fI1\fR\&. Amanda can write simultaneously up to that number of volume at any given time\&. The changer must have as many drives\&.
+ .RE
+ .PP
  \fBlabelstr\fR \fIstring\fR
  .RS 4
  Default:
@@@ -608,13 -592,13 +592,13 @@@ will wait to get the dump size estimate
  will wait up to 40 minutes for that machine\&. A negative value will be interpreted as a total amount of time to wait per client instead of per disk\&.
  .RE
  .PP
- \fBconnect_tries\fR \fIint\fR
+ \fBconnect\-tries\fR \fIint\fR
  .RS 4
  Default:
  \fI3\fR\&. How many times the server will try a connection\&.
  .RE
  .PP
- \fBreq_tries\fR \fIint\fR
+ \fBreq\-tries\fR \fIint\fR
  .RS 4
  Default:
  \fI3\fR\&. How many times the server will resend a REQ packet if it doesn\'t get the ACK packet\&.
@@@ -772,7 -756,7 +756,7 @@@ Default
  \fBtapelist\fR(5)\&. Amanda maintains this file with information about the active set of tapes\&.
  .RE
  .PP
- \fBdevice_output_buffer_size\fR \fIint\fR
+ \fBdevice\-output\-buffer\-size\fR \fIint\fR
  .RS 4
  Default:
  \fI1280k\fR\&. Controls the amount of memory used by Amanda to hold data as it is read from the network or disk before it is written to the output device\&. Higher values may be useful on fast tape drives and optical media\&.
@@@ -784,7 -768,7 +768,7 @@@ The default unit is bytes if it is not 
  .RS 4
  Default:
  \fI20\fR\&. This option is deprecated; use the
- \fBdevice_output_buffer_size\fR
+ \fBdevice\-output\-buffer\-size\fR
  directive instead\&.
  \fBtapebufs\fR
  works the same way, but the number specified is multiplied by the device blocksize prior to use\&.
@@@ -802,21 -786,27 +786,27 @@@ Default
  \fBoff\fR\&. Whether an amdump run will flush the dumps from holding disk to tape\&.
  .RE
  .PP
- \fBamrecover_do_fsf\fR \fIbool\fR
+ \fBamrecover\-do\-fsf\fR \fIbool\fR
  .RS 4
+ Deprecated; amrecover always uses fsf, and does not invoke amrestore\&.
+ .sp
  Default:
  \fBon\fR\&. Amrecover will call amrestore with the \-f flag for faster positioning of the tape\&.
  .RE
  .PP
- \fBamrecover_check_label\fR \fIbool\fR
+ \fBamrecover\-check\-label\fR \fIbool\fR
  .RS 4
+ Deprecated; amrecover always checks the label, and does not invoke amrestore\&.
+ .sp
  Default:
  \fBon\fR\&. Amrecover will call amrestore with the \-l flag to check the label\&.
  .RE
  .PP
- \fBamrecover_changer\fR \fIstring\fR
+ \fBamrecover\-changer\fR \fIstring\fR
  .RS 4
- Default: not set\&. Amrecover will use the changer if you use \'settape <string>\' and that string is the same as the amrecover_changer setting\&.
+ Default: not set\&. Amrecover will use the changer if you use \'settape <string>\' and that string is the same as the
+ \fBamrecover\-changer\fR
+ setting\&.
  .RE
  .PP
  \fBcolumnspec\fR \fIstring\fR
@@@ -901,61 -891,61 +891,61 @@@ Default
  \fIno default\fR\&. The name of an Amanda configuration file to include within the current file\&. Useful for sharing dumptypes, tapetypes and interface definitions among several configurations\&. Relative pathnames are relative to the configuration directory\&.
  .RE
  .PP
- \fBdebug_days\fR \fIint\fR
+ \fBdebug\-days\fR \fIint\fR
  .RS 4
  Default:
  \fI3\fR\&. The number of days the debug files are kept\&.
  .RE
  .PP
- \fBdebug_auth\fR \fIint\fR
+ \fBdebug\-auth\fR \fIint\fR
  .RS 4
  Default:
  \fI0\fR\&. Debug level of the auth module
  .RE
  .PP
- \fBdebug_event\fR \fIint\fR
+ \fBdebug\-event\fR \fIint\fR
  .RS 4
  Default:
  \fI0\fR\&. Debug level of the event module
  .RE
  .PP
- \fBdebug_holding\fR \fIint\fR
+ \fBdebug\-holding\fR \fIint\fR
  .RS 4
  Default:
  \fI0\fR\&. Debug level of the holdingdisk module
  .RE
  .PP
- \fBdebug_protocol\fR \fIint\fR
+ \fBdebug\-protocol\fR \fIint\fR
  .RS 4
  Default:
  \fI0\fR\&. Debug level of the protocol module
  .RE
  .PP
- \fBdebug_planner\fR \fIint\fR
+ \fBdebug\-planner\fR \fIint\fR
  .RS 4
  Default:
  \fI0\fR\&. Debug level of the planner process
  .RE
  .PP
- \fBdebug_driver\fR \fIint\fR
+ \fBdebug\-driver\fR \fIint\fR
  .RS 4
  Default:
  \fI0\fR\&. Debug level of the driver process
  .RE
  .PP
- \fBdebug_dumper\fR \fIint\fR
+ \fBdebug\-dumper\fR \fIint\fR
  .RS 4
  Default:
  \fI0\fR\&. Debug level of the dumper process
  .RE
  .PP
- \fBdebug_chunker\fR \fIint\fR
+ \fBdebug\-chunker\fR \fIint\fR
  .RS 4
  Default:
  \fI0\fR\&. Debug level of the chunker process
  .RE
  .PP
- \fBdebug_taper\fR \fIint\fR
+ \fBdebug\-taper\fR \fIint\fR
  .RS 4
  Default:
  \fI0\fR\&. Debug level of the taper process
@@@ -1036,6 -1026,21 +1026,21 @@@ Default: \-\-with\-low\-tcpportrange o
  Default: \-\-with\-tcpportrange or
  \fI1024,65535\fR\&. Unreserved tcp port that will be used (bsd, bsdudp)\&. Range is inclusive\&.
  .RE
+ .PP
+ \fBrecovery\-limit\fR [ \fIstring\fR | \fBsame\-host\fR ]
+ .RS 4
+ Default: none (no limitations)\&. This parameter limits the hosts that may do remote recoveries\&. Hosts are identified by their authenticated peer name, as described in
+ \fBamanda-auth\fR(7); if this is not available and the recovery\-limit parameter is present, recovery will be denied\&. The arguments to the parameter are strings giving host match expressions (see
+ \fBamanda-match\fR(7)) or the special keyword same\-host, which requires an exact match to the hostname of the DLE being recovered\&. Specifying no arguments at all will disable all recoveries from any host\&.
+ .sp
+ Note that match expressions can be constructed to be forgiving of e\&.g\&., fully\-qualified vs\&. unqualified hostnames, but
+ \fBsame\-host\fR
+ requires an exact match\&.
+ .sp
+ The error messages that appear in amrecover are intentionally vague to avoid information leakage\&. Consult the amindexd debug log for more details on the reasons a recovery was rejected\&.
+ .sp
+ Recovery limits can be refined on a per\-DLE basis using the dumptype parameter of the same name\&. Note that the default value will apply to any dumpfiles for disks which no longer appear in the disklist; thus leaving the global parameter at its default value but setting it for all DLEs is not sufficient to maintain secure backups\&.
+ .RE
  .SH "HOLDINGDISK SECTION"
  .PP
  The
@@@ -1132,19 -1137,19 +1137,19 @@@ Default
  for more detail\&.
  .RE
  .PP
- \fBamandad_path\fR \fIstring\fR
+ \fBamandad\-path\fR \fIstring\fR
  .RS 4
  Default:
  \fI"$libexec/amandad"\fR\&. Specify the amandad path of the client, only use with rsh/ssh authentification\&.
  .RE
  .PP
- \fBclient_username\fR \fIstring\fR
+ \fBclient\-username\fR \fIstring\fR
  .RS 4
  Default:
  \fICLIENT_LOGIN\fR\&. Specify the username to connect on the client, only use with rsh/ssh authentification\&.
  .RE
  .PP
- \fBclient_port\fR [ \fIint\fR | \fIstring\fR ]
+ \fBclient\-port\fR [ \fIint\fR | \fIstring\fR ]
  .RS 4
  Default:
  \fI"amanda"\fR\&. Specifies the port to connect to on the client\&. It can be a service name or a numeric port number\&.
@@@ -1246,7 -1251,7 +1251,7 @@@ compress client bes
  compress client custom
  .RS 4
  Specify
- \fIclient_custom_compress\fR
+ \fBclient\-custom\-compress\fR
  "PROG"
  .sp
  PROG must not contain white space and it must accept \-d for uncompress\&.
@@@ -1263,7 -1268,7 +1268,7 @@@ compress server bes
  compress server custom
  .RS 4
  Specify
- \fBserver_custom_compress\fR
+ \fBserver\-custom\-compress\fR
  "PROG"
  .sp
  PROG must not contain white space and it must accept \-d for uncompress\&.
@@@ -1274,12 -1279,12 +1279,12 @@@ Note that some tape devices do compress
  option), Amanda (software) compression should be disabled\&.
  .RE
  .PP
- \fBclient_custom_compress\fR \fIstring\fR
+ \fBclient\-custom\-compress\fR \fIstring\fR
  .RS 4
  Default: none\&. The program to use to perform compression/decompression on the client; used with "compress client custom"\&. Must not contain whitespace\&. Must accept \-d to uncompress\&.
  .RE
  .PP
- \fBserver_custom_compress\fR \fIstring\fR
+ \fBserver\-custom\-compress\fR \fIstring\fR
  .RS 4
  Default: none\&. The program to use to perform compression/decompression on the server; used with "compress server custom"\&. Must not contain whitespace\&. Must accept \-d to uncompress\&.
  .RE
@@@ -1304,11 -1309,11 +1309,11 @@@ encrypt non
  .PP
  encrypt client
  .RS 4
- Specify client_encrypt "PROG"
+ Specify client\-encrypt "PROG"
  .sp
  PROG must not contain white space\&.
  .sp
- Specify client_decrypt_option "decryption\-parameter" Default: "\-d"
+ Specify client\-decrypt\-option "decryption\-parameter" Default: "\-d"
  .sp
  decryption\-parameter must not contain white space\&.
  .sp
  .PP
  encrypt server
  .RS 4
- Specify server_encrypt "PROG"
+ Specify server\-encrypt "PROG"
  .sp
  PROG must not contain white space\&.
  .sp
- Specify server_decrypt_option "decryption\-parameter" Default: "\-d"
+ Specify server\-decrypt\-option "decryption\-parameter" Default: "\-d"
  .sp
  decryption\-parameter must not contain white space\&.
  .sp
@@@ -1335,24 -1340,24 +1340,24 @@@ which is a wrapper o
  is provided as a reference symmetric encryption program\&.
  .RE
  .PP
- \fBclient_encrypt\fR \fIstring\fR
+ \fBclient\-encrypt\fR \fIstring\fR
  .RS 4
  Default: none\&. The program to use to perform encryption/decryption on the client; used with "encrypt client"\&. Must not contain whitespace\&.
  .RE
  .PP
- \fBclient_decrypt_option\fR \fIstring\fR
+ \fBclient\-decrypt\-option\fR \fIstring\fR
  .RS 4
- Default: \-d\&. The option that can be passed to client_encrypt to make it decrypt instead\&. Must not contain whitespace\&.
+ Default: \-d\&. The option that can be passed to client\-encrypt to make it decrypt instead\&. Must not contain whitespace\&.
  .RE
  .PP
- \fBserver_encrypt\fR \fIstring\fR
+ \fBserver\-encrypt\fR \fIstring\fR
  .RS 4
  Default: none\&. The program to use to perform encryption/decryption on the server; used with "encrypt server"\&. Must not contain whitespace\&.
  .RE
  .PP
- \fBserver_decrypt_option\fR \fIstring\fR
+ \fBserver\-decrypt\-option\fR \fIstring\fR
  .RS 4
- Default: \-d\&. The option that can be passed to server_encrypt to make it decrypt instead\&. Must not contain whitespace\&.
+ Default: \-d\&. The option that can be passed to server\-encrypt to make it decrypt instead\&. Must not contain whitespace\&.
  .RE
  .PP
  \fBestimate\fR [ \fBclient\fR | \fBcalcsize\fR | \fBserver\fR ]+
@@@ -1608,8 -1613,8 +1613,8 @@@ keyword append the values to the list o
  \fBrecord\fR \fIboolean\fR
  .RS 4
  Default:
 -\fByes\fR\&. Whether to ask the backup program to update its database (e\&.g\&.
 -/etc/dumpdates
 +\fIyes\fR\&. Whether to ask the backup program to update its database (e\&.g\&.
 +/var/lib/dumpdates
  for DUMP or
  /usr/local/var/amanda/gnutar\-lists
  for GNUTAR) of time stamps\&. This is normally enabled for daily backups and turned off for periodic archival runs\&.
@@@ -1635,7 -1640,7 +1640,7 @@@ an
  has scheduled an incremental backup, these disks will be skipped\&.
  .RE
  .PP
- \fBssh_keys\fR \fIstring\fR
+ \fBssh\-keys\fR \fIstring\fR
  .RS 4
  Default: not set\&. The key file the ssh auth will use, it must be the private key\&. If this parameter is not specified, then the default ssh key will be used\&.
  .RE
@@@ -1681,24 -1686,40 +1686,40 @@@ should be used to tell Amanda that a fu
  .RE
  .RE
  .PP
- \fBtape_splitsize\fR \fIint\fR
+ \fBallow\-split\fR \fIbool\fR
  .RS 4
- Default: not set\&. Split dump file on tape into pieces of a specified size\&. This allows dumps to be spread across multiple tapes, and can potentially make more efficient use of tape space\&. Note that if this value is too large (more than half the size of the average dump being split), substantial tape space can be wasted\&. If too small, large dumps will be split into innumerable tiny dumpfiles, adding to restoration complexity\&. A good rule of thumb, usually, is 1/10 of the size of your tape\&.
+ Default: true\&. If true, then dumps with this dumptype can be split on the storage media\&. If false, then the dump will be written in a single file on the media\&. See "Dump Splitting Configuration" below\&.
+ .RE
+ .PP
+ \fBtape\-splitsize\fR \fIint\fR
+ .RS 4
+ Deprecated\&. See "Dump Splitting Configuration" below\&.
  .sp
- The default unit is Kbytes if it is not specified\&.
Default: not set\&. Split dump file on tape into pieces of a specified size\&. The default unit is Kbytes if it is not specified\&.
  .RE
  .PP
- \fBsplit_diskbuffer\fR \fIstring\fR
+ \fBsplit\-diskbuffer\fR \fIstring\fR
  .RS 4
+ .PP
+ Deprecated\&. See "Dump Splitting Configuration" below\&.
  Default: not set\&. When dumping a split dump in PORT\-WRITE mode (usually meaning "no holding disk"), buffer the split chunks to a file in the directory specified by this option\&.
  .RE
  .PP
- \fBfallback_splitsize\fR \fIint\fR
+ \fBfallback\-splitsize\fR \fIint\fR
  .RS 4
- Default:
- \fI10M\fR\&. When dumping a split dump in PORT\-WRITE mode, if no split_diskbuffer is specified (or if we somehow fail to use our split_diskbuffer), we must buffer split chunks in memory\&. This specifies the maximum size split chunks can be in this scenario, and thus the maximum amount of memory consumed for in\-memory splitting\&. The size of this buffer can be changed from its (very conservative) default to a value reflecting the amount of memory that each taper process on the dump server may reasonably consume\&.
+ Deprecated\&. See "Dump Splitting Configuration" below\&.
  .sp
- The default unit is Kbytes if it is not specified\&.
+ Default:
+ \fI10M\fR\&. This specifies the part size used when no
+ \fBsplit\-diskbuffer\fR
+ is specified, or when it is too small or does not exist, and thus the maximum amount of memory consumed for in\-memory splitting\&. The default unit is Kbytes if it is not specified\&.
+ .RE
+ .PP
+ \fBrecovery\-limit\fR [ \fBsame\-host\fR | \fIstring\fR ]*
+ .RS 4
+ Default: global value\&. This parameter overrides the global
+ \fBrecovery\-limit\fR
+ parameter for DLEs of this dumptype\&.
  .RE
  .PP
  The following
@@@ -1829,6 -1850,30 +1850,30 @@@ How much data will be read in each tap
  The default unit is Kbytes if it is not specified\&.
  .RE
  .PP
+ \fBpart\-size\fR \fIint\fR
+ .RS 4
+ Default: none\&. This is the size (in KB if no units are specified) of each split part written to the volume\&. It is reduced to
+ \fBpart\-cache\-max\-size\fR
+ when part caching is required\&. If this is set to zero, then no splitting will take place; in this case, some devices can span dumps from volume to volume, while others will cause the entire dump to fail if they encounter end\-of\-medium before the dump is complete\&. See "Dump Splitting Configuration" below\&.
+ .RE
+ .PP
+ \fBpart\-cache\-type\fR [ \fBnone\fR | \fBdisk\fR | \fBmemory\fR ]
+ .RS 4
+ Default: none\&. When part caching is required, this parameter specifies the type of caching that will be used\&. The options include no caching (\fBnone\fR), in which case a failed part will cause the entire dump to fail; on\-disk caching (\fBdisk\fR), for which
+ \fBpart\-cache\-dir\fR
+ must be set properly; and in\-memory caching (\fBmemory\fR), which on most systems severely restrains the size of the part that can be written\&. See "Dump Splitting Configuration" below\&.
+ .RE
+ .PP
+ \fBpart\-cache\-dir\fR \fIstring\fR
+ .RS 4
+ Default: none\&. The directory in which part\-cache files can be written when caching on disk\&. See "Dump Splitting Configuration" below\&.
+ .RE
+ .PP
+ \fBpart\-cache\-max\-size\fR \fIint\fR
+ .RS 4
+ Default: none\&. The maximum part size to use when caching is in effect\&. This is used to limit the part size when disk or memory space for caching is constrained\&. This value must be greater than zero\&.
+ .RE
+ .PP
  \fBspeed\fR \fIint\fR
  .RS 4
  Default:
@@@ -1848,7 -1893,7 +1893,7 @@@ man page for more information\&
  .PP
  In addition to options, another
  \fBtapetype\fR
- name may be supplie as an identifier, which makes this
+ name may be supplied as an identifier, which makes this
  \fBtapetype\fR
  inherit options from another
  \fBtapetype\fR\&. For instance, the only difference between a DLT4000 tape drive using Compact\-III tapes and one using Compact\-IV tapes is the length of the tape\&. So they could be entered as:
@@@ -1989,13 -2034,13 +2034,13 @@@ Default
  \fI5000\fR\&. Scripts are executed in that order, it is useful if you have many scripts and they must be executed in a spefific order\&.
  .RE
  .PP
- \fBexecute_where\fR [ \fBclient\fR | \fBserver\fR ]
+ \fBexecute\-where\fR [ \fBclient\fR | \fBserver\fR ]
  .RS 4
  Default:
  \fBclient\fR\&. Where the script must be executed, on the client or server\&.
  .RE
  .PP
- \fB>execute_on\fR \fIexecute_on\fR [,\fIexecute_on\fR]*
+ \fBexecute\-on\fR \fIexecute_on\fR [,\fIexecute_on\fR]*
  .RS 4
  No default\&. When the script must be executed, you can specify many of them:
  .PP
@@@ -2098,7 -2143,7 +2143,7 @@@ script \-\-post\-recove
  .fi
  .RE
  .PP
- \fBproperty\fR> [\fBappend\fR] [\fBpriority\fR] \fIstring\fR \fIstring\fR+
+ \fBproperty\fR [\fBappend\fR] [\fBpriority\fR] \fIstring\fR \fIstring\fR+
  .RS 4
  No default\&. You can set property for the script, each script have a different set of property\&. Both strings are quoted; the first string contains the name of the property to set, and the others contains its values\&.
  \fBappend\fR
@@@ -2115,7 -2160,7 +2160,7 @@@ in the form of "device" sections, whic
  define device \fIname\fR {
      commend "\fIcomment (optional)\fR"
      tapedev "\fIdevice\-specifier\fR"
-     device_property "\fIprop\-name\fR" "\fIprop\-value\fR"
+     device\-property "\fIprop\-name\fR" "\fIprop\-value\fR"
      \&.\&.\&.
  }
  .fi
@@@ -2133,7 -2178,7 +2178,7 @@@ specifies the device name to use; se
  parmeter is optional and only for the user\'s convenience\&.
  .PP
  An arbitrary number of
- \fIdevice_property\fR
+ \fIdevice\-property\fR
  parameters can be specified\&. Again, see
  \fBamanda-devices\fR(7)
  for information on device properties\&.
@@@ -2160,6 -2205,34 +2205,34 @@@ is the user\-specified name of this dev
  See
  \fBamanda-changers\fR(7)
  for more information on configuring changers\&.
+ .SH "DUMP SPLITTING CONFIGURATION"
+ .PP
+ Amanda can "split" dumps into parts while writing them to storage media\&. This allows Amanda to recover gracefully from a failure while writing a part to a volume, by simply selecting a new volume and re\-writing the dump from the beginning of the failed part\&. Parts also allow Amanda to seek directly to the required data, although this functionality is not yet used\&.
+ .PP
+ In order to support re\-writing from the beginning of a failed part, Amanda must have access to the contents of the part after it has been partially written\&. If the dump is being read from holding disk, then the part contents are availble there\&. Otherwise, the part must be cached, and this can be done memory or on disk\&. In either of the latter cases, the cache must have enough space to hold an entire part\&.
+ .PP
+ Because it is common for a single Amanda configuration to use both holding\-disk (FILE\-WRITE) and direct (known as PORT\-WRITE) dumps, Amanda allows the configuration of different split sizes for the two cases\&. This allows, for example, for a part size appropriate to large tapes when performing FILE\-WRITE dumps, with a part size limited by available disk or memory when performing PORT\-WRITE dumps\&.
+ .PP
+ Selecting a proper split size is a delicate matter\&. If the parts are too large, substantial storage space may be wasted in failed parts\&. If too small, large dumps will be split into innumerable tiny dumpfiles, adding to restoration complexity; furthermore, an excess of filemarks will cause slower tape drive operation and reduce the usable space on tape\&. A good rule of thumb is 1/10 of the size of a volume of storage media\&.
+ .PP
+ In versions of Amanda through 3\&.1\&.*, splitting was controlled by the dumptype parameters
+ \fBtape\-splitsize\fR,
+ \fBsplit\-diskbuffer\fR, and
+ \fBfallback\-splitsize\fR\&. These keywords had confusing and non\-intuitive interactions, and have since been deprecated\&.
+ .PP
+ If the deprecated keywords are not present, subsequent versions of Amanda use the dumptype parameter
+ \fBallow\-split\fR
+ to control whether a DLE can be split, and the
+ \fItapetype\fR
+ parameters
+ \fBpart\-size\fR,
+ \fBpart\-cache\-type\fR,
+ \fBpart\-cache\-dir\fR, and
+ \fBpart\-cache\-max\-size\fR\&. The
+ \fBpart\-size\fR
+ specifies the "normal" part size, while the
+ \fBpart\-cache\-*\fR
+ parameters describe how to behave when caching is required (on PORT\-WRITE)\&. Full details on these parameters are given above\&.
  .SH "SEE ALSO"
  .PP
  \fBamanda\fR(8),
diff --combined man/disklist.5
index b59c5739d78b53aff24d43a8f1d8dcd8c51468c4,349d7daac3b4a19221b2531118d341bfd282bba8..f2bab787b5ad3a88fc15c00cdf739de1efca113e
@@@ -2,12 -2,12 +2,12 @@@
  .\"     Title: disklist
  .\"    Author: James da Silva <jds@amanda.org>
  .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
- .\"      Date: 06/01/2010
+ .\"      Date: 10/18/2010
  .\"    Manual: File formats and conventions
- .\"    Source: Amanda 3.1.0
+ .\"    Source: Amanda 3.2.0
  .\"  Language: English
  .\"
- .TH "DISKLIST" "5" "06/01/2010" "Amanda 3\&.1\&.0" "File formats and conventions"
+ .TH "DISKLIST" "5" "10/18/2010" "Amanda 3\&.2\&.0" "File formats and conventions"
  .\" -----------------------------------------------------------------
  .\" * set default formatting
  .\" -----------------------------------------------------------------
@@@ -89,7 -89,7 +89,7 @@@ defined in th
  \fBamanda\&.conf\fR
  file\&.
  \fIDumptype\fRs specify backup related parameters, such as whether to compress the backups, whether to record backup results in
 -/etc/dumpdates, the disk\'s relative priority, etc\&.
 +/var/lib/dumpdates, the disk\'s relative priority, etc\&.
  .RE
  .PP
  \fIspindle\fR
index 0c76083f596153b24308a6629390095bfee2c57d,d55b6e815feef24161fba26a8c2cc160b4a94291..47f6059906eae5822aa4d018379eb90ece80fae3
@@@ -78,7 -78,7 +78,7 @@@
    </varlistentry>'>
  
  <!ENTITY configoverride.synopsis
-     '<group rep="repeat" choice="opt"><arg choice="req"><option>-o</option> <replaceable>configoption</replaceable></arg></group>'>
+     '<arg rep="repeat" choice="opt"><option>-o</option> <replaceable>configoption</replaceable></arg>'>
  
  <!ENTITY configoverride.varlistentry
    '<varlistentry>
@@@ -98,7 -98,7 +98,7 @@@
  <!ENTITY tapelist '<manref name="tapelist" vol="5"/>'>
  
  <!-- IDs for files used by AMANDA-->
 -<!ENTITY dumpdates '<filename>/etc/dumpdates</filename>'>
 +<!ENTITY dumpdates '<filename>/var/lib/dumpdates</filename>'>
  
  <!-- IDs for AMANDA commands-->
  <!ENTITY amadmin ' <command>amadmin</command>'>
index 7d4fda62455205c5dceefa33dd1ce644c359b48f,179722e1c6c33fb7ba25695cc21ff92c0e3fdca2..079dd60fc89b6f1b7a466afc3dcd9238b0a060cb
@@@ -56,21 -56,18 +56,18 @@@ The remainder of the line is ignored.</
  and
  <amkeyword>MailTo</amkeyword>
  are treated the same.  Also, the characters
- '<amkeyword>-</amkeyword>'
- and
- '<amkeyword>_</amkeyword>'
+ '<amkeyword>-</amkeyword>' and '<amkeyword>_</amkeyword>'
  are interchangeable in all predefined Amanda keywords:
  <amkeyword>device_property</amkeyword>
  and
  <amkeyword>device-property</amkeyword>
- have the same meaning.</para>
+ have the same meaning.  This manpage uses the dashed versions, but the
+ underscored versions will be accepted for backward compatibility</para>
  
  <para>Identifiers are names which are defined in the configuration itself, such
  as dumptypes or interfaces.  Identifiers are are case-insensitive, but
  sensitive to
- '<amkeyword>-</amkeyword>'
- vs.
- '<amkeyword>_</amkeyword>'.
+ '<amkeyword>-</amkeyword>' vs.  '<amkeyword>_</amkeyword>'.
  Identifiers should be quoted in the configuration file, although For historical
  reasons, the quotes are optional.</para>
  
@@@ -91,7 -88,7 +88,7 @@@ tapetype "EXABYTE"        # optiona
  
  define dumptype "dt" {    # optional      insensitive     sensitive
    "dumptype-common"       # optional      insensitive     sensitive
-   strategy noincr         # prohibited    insensitive     insensitive
+   strategy noinc          # prohibited    insensitive     insensitive
  }
  </programlisting>
  </para>
@@@ -395,9 -392,25 +392,25 @@@ days 
    <listitem>
  <para>Default:
  <amdefault>15 tapes</amdefault>.
- Typically tapes are used by Amanda in an ordered rotation. The <amkeyword>tapecycle</amkeyword> parameter 
- defines the size of that rotation. This parameter must be be larger than the number of tapes
- used in a dumpcycle.</para>
+ Specifies the number of "active" volumes - volumes that Amanda will not
+ overwrite.  While Amanda is always willing to write to a new volume, it refuses
+ to overwrite a volume unless at least '<amkeyword>tapecycle</amkeyword> -1'
+ volumes have been written since.</para>
+ <para> It is considered good administrative practice to set the
+ <amkeyword>tapecycle</amkeyword> parameter slightly lower than the actual
+ number of tapes in use. This allows the administrator to more easily cope
+ with damaged or misplaced tapes or schedule adjustments that call for
+ slight adjustments in the rotation order.</para>
+ <para>Note: Amanda is commonly misconfigured with <amkeyword>tapecycle</amkeyword>
+ equal to the number of tapes per <amkeyword>dumpcycle</amkeyword>.  In this
+ misconfiguration, amanda may erase a full dump before a new one is
+ completed.  Recovery is then impossible. The
+ <amkeyword>tapecycle</amkeyword> must be at least one tape larger than the
+ number of tapes per dumpcycle.</para>
  <para>
  The number of tapes per dumpcycle is calculated by multiplying the number of
  &amdump; runs per dump cycle <amkeyword>runspercycle</amkeyword> (the
@@@ -406,21 -419,6 +419,6 @@@ remap='B'>runtapes</emphasis> (the numb
  <amkeyword>tapecycle</amkeyword> is set to two or four times the tapes
  per dumpcycle.</para>
  
- <note>Amanda is commonly misconfigured with <amkeyword>tapecycle</amkeyword>
- equal to the number of tapes per <amkeyword>dumpcycle</amkeyword>.  In this
- misconfiguration, amanda may erase a full dump before a new one is completed,
- the recovery is then impossible. tapecycle must be at least one tape larger
- than the number of tapes per dumpcycle.
- </note>
- <para>While Amanda is always willing to use a new tape in its rotation, it refuses to reuse a tape until at
- least '<amkeyword>tapecycle</amkeyword> -1' number of other tapes have been used. 
- </para>
- <para>
- It is considered good administrative practice to set the <amkeyword>tapecycle</amkeyword> parameter 
- slightly lower than the actual number of tapes in rotation. This allows the administrator to more easily cope 
- with damaged or misplaced tapes or schedule adjustments that call for slight adjustments in the rotation order.
- </para>
    </listitem>
    </varlistentry>
  
@@@ -437,22 -435,13 +435,13 @@@ can't read logfiles written when this o
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>label_new_tapes</amkeyword>
+   <term><amkeyword>label-new-tapes</amkeyword>
          <amtype>string</amtype></term>
  <listitem>
-     <para>Deprecated, use <amkeyword>autolabel</amkeyword> option.</para>
+     <para>Deprecated, use <amkeyword>autolabel</amkeyword> option with options <amkeyword>volume-error empty</amkeyword> to get equivalent behavior.</para>
      <para>Default: not set.
  When set, this directive will cause Amanda to automatically write an Amanda
- tape label to any blank tape she encounters. This option is DANGEROUS 
- because when set, Amanda will ERASE any non-Amanda tapes you may have, and may 
- also ERASE any near-failing tapes. Use with caution.</para>
- <para>When using this directive, specify the template for new tape 
- labels. The template should contain some number of contiguous '%' 
- characters, which will be replaced with a generated number. Be sure to 
- specify enough '%' characters that you do not run out of tape labels. 
- Example: 
- <markup>label_new_tapes "DailySet1-%%%"</markup>
- </para>
+ tape label to any blank tape she encounters.</para>
  </listitem>
  </varlistentry>
  
    <term><amkeyword>autolabel</amkeyword>
          <amtype>string</amtype>
          [<amkeyword>any</amkeyword>]
-         [<amkeyword>other_config</amkeyword>]
-         [<amkeyword>non_amanda</amkeyword>]
-         [<amkeyword>volume_error</amkeyword>]
+         [<amkeyword>other-config</amkeyword>]
+         [<amkeyword>non-amanda</amkeyword>]
+         [<amkeyword>volume-error</amkeyword>]
          [<amkeyword>empty</amkeyword>]</term>
  <listitem>
      <para>Default: not set.
@@@ -477,28 -466,31 +466,31 @@@ specify enough '%' characters that you 
  Example:
  <markup>autolabel &quot;DailySet1-%%%&quot; empty</markup>
  </para>
+ <para>Note that many devices cannot distinguish an empty tape from an error
+ condition, so it may is often necessary to include
+ <amkeyword>volume-error</amkeyword> as an autolabel condition.</para>
  <variablelist remap='TP'>
  <varlistentry>
  <term><amkeyword>any</amkeyword></term>
- <listitem>equivalent to '<amkeyword>other_config non_amanda volume_error empty</amkeyword>'
+ <listitem>equivalent to '<amkeyword>other-config non-amanda volume-error empty</amkeyword>'
  </listitem>
  </varlistentry>
  <varlistentry>
- <term><amkeyword>other_config</amkeyword></term>
+ <term><amkeyword>other-config</amkeyword></term>
  <listitem>Label volumes with a valid Amanda label that do not match our
  <amkeyword>labelstr</amkeyword>. Danger: this may erase volumes
  from other Amanda configurations without warning!
  </listitem>
  </varlistentry>
  <varlistentry>
- <term><amkeyword>non_amanda</amkeyword></term>
+ <term><amkeyword>non-amanda</amkeyword></term>
  <listitem>Label volumes which do not start with data that resembles an
  Amanda header. Danger: this may erase volumes from other backup applications
  without warning!
  </listitem>
  </varlistentry>
  <varlistentry>
- <term><amkeyword>volume_error</amkeyword></term>
+ <term><amkeyword>volume-error</amkeyword></term>
  <listitem>Label volumes where an error occurs while trying to read the label.
  Danger: this may erase arbitrary volumes due to transient errors.
  </listitem>
@@@ -542,30 -534,14 +534,14 @@@ option.</para
    <listitem>
  <para>Default:
  <amdefault>&quot;null:&quot;</amdefault>.
- The device name, referencing the name of a &quot;device&quot; section in the configuration file.  See
- <manref name="amanda-devices" vol="7"/>
- for more information on device names.</para>
+ This parameter can either specify a device (explicitly or by referencing a device definition - see <manref name="amanda-devices" vol="7" />)
+ or a tape changer (explicitly or by referencing a device definition - see <manref name="amanda-changers" vol="7" />).</para>
  
- <para>If a tape changer is configured
- (see the
- <amkeyword>tpchanger</amkeyword>
- option), this option might not be used.</para>
- <para>If <amkeyword>tapedev</amkeyword> is
- <emphasis remap='B'>null:</emphasis>,
- programs such as
- &amdump;
- will run normally but all images will be thrown away.
- This should only be used for debugging and testing,
- and probably only with the
- <amkeyword>record</amkeyword>
- option set to
- <amdefault>no</amdefault>.</para>
    </listitem>
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>device_property</amkeyword> <amtype>string</amtype> <amtype>string</amtype></term>
+   <term><amkeyword>device-property</amkeyword> <amtype>string</amtype> <amtype>string</amtype></term>
    <listitem>
  <para>These options can set various device properties.  See
  <manref name="amanda-devices" vol="7"/>
@@@ -574,7 -550,7 +550,7 @@@ Both strings are always quoted; the fir
  the property to set, and the second contains its value. For example, to set
  a fixed block size of 128k, write:</para>
  <programlisting>
- device_property "BLOCK_SIZE" "128k"
+ device-property "BLOCK_SIZE" "128k"
  </programlisting>
  
    </listitem>
@@@ -595,13 -571,12 +571,12 @@@ the property to set, and the others con
    <varlistentry>
    <term><amkeyword>tpchanger</amkeyword> <amtype>string</amtype></term>
    <listitem>
- <para>Default: not set.
- The name of the tape changer.
- If a tape changer is not configured, this option is not used
- and should be commented out of the configuration file.</para>
- <para>If a tape changer is configured, choose one of the changer scripts
- (e.g.  <emphasis remap='B'>chg-scsi</emphasis>)
- and enter that here.</para>
+ <para>Default: not set.  The tape changer to use.  In most cases, only one of
+ <amkeyword>tpchanger</amkeyword> or <amkeyword>tapedev</amkeyword> is
+ specified, although for backward compatibility both may be specified if
+ <amkeyword>tpchanger</amkeyword> gives the name of an old changer script.
+ See <manref name="amanda-changers" vol="7" /> for more information on
+ configuring changers.</para>
    </listitem>
    </varlistentry>
  
@@@ -620,7 -595,7 +595,7 @@@ option.</para
    <term><amkeyword>changerfile</amkeyword> <amtype>string</amtype></term>
    <listitem>
  <para>Default:
- <amdefault>&quot;usr/adm/amanda/log/changer-status&quot;</amdefault>.
+ <amdefault>&quot;/usr/adm/amanda/log/changer-status&quot;</amdefault>.
  A tape changer configuration parameter.
  Usage depends on the particular changer defined with the
  <amkeyword>tpchanger</amkeyword>
@@@ -639,9 -614,6 +614,6 @@@ and should be commented out of the conf
  let Amanda write to more than one tape.</para>
  <para>Note that this is an upper bound on the number of tapes,
  and Amanda may use less.</para>
- <para>Also note that as of this release, Amanda does not support true tape overflow.
- When it reaches the end of one tape,
- the backup image Amanda was processing starts over again on the next tape.</para>
    </listitem>
    </varlistentry>
  
    <term><amkeyword>maxdumpsize</amkeyword> <amtype>int</amtype></term>
    <listitem>
  <para>Default:
- <amdefault><amkeyword>runtapes</amkeyword>*<amkeyword>tape_length</amkeyword></amdefault>.
+ <amdefault><amkeyword>runtapes</amkeyword>*<amkeyword>tape-length</amkeyword></amdefault>.
  Maximum number of bytes the planner will schedule for a run.</para>
  <para>The default unit is Kbytes if it is not specified.</para>
    </listitem>
@@@ -703,6 -675,14 +675,14 @@@ The algorithm used to choose which dum
    </listitem>
    </varlistentry>
  <varlistentry>
+ <term><amkeyword>taper-parallel-write</amkeyword> <amtype>int</amtype></term>
+ <listitem>
+   </listitem>
+ <para>Default: <amdefault>1</amdefault>.
+ Amanda can write simultaneously up to that number of volume at any given
+ time. The changer must have as many drives.</para>
+   </varlistentry>
+ <varlistentry>
  <term><amkeyword>labelstr</amkeyword> <amtype>string</amtype></term>
  <listitem>
  <para>Default:
@@@ -778,7 -758,7 +758,7 @@@ per client instead of per disk.</para
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>connect_tries</amkeyword> <amtype>int</amtype></term>
+   <term><amkeyword>connect-tries</amkeyword> <amtype>int</amtype></term>
    <listitem>
  <para>Default:
  <amdefault>3</amdefault>.
@@@ -787,7 -767,7 +767,7 @@@ How many times the server will try a co
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>req_tries</amkeyword> <amtype>int</amtype></term>
+   <term><amkeyword>req-tries</amkeyword> <amtype>int</amtype></term>
    <listitem>
  <para>Default:
  <amdefault>3</amdefault>.
@@@ -1023,7 -1003,7 +1003,7 @@@ Amanda maintains this file with informa
    </listitem>
    </varlistentry>
    <varlistentry>
-   <term><amkeyword>device_output_buffer_size</amkeyword> <amtype>int</amtype></term>
+   <term><amkeyword>device-output-buffer-size</amkeyword> <amtype>int</amtype></term>
    <listitem>
  <para>Default:
  <amdefault>1280k</amdefault>.
@@@ -1040,7 -1020,7 +1020,7 @@@ useful on fast tape drives and optical 
  <para>Default:
  <amdefault>20</amdefault>.
  This option is deprecated; use
- the <amkeyword>device_output_buffer_size</amkeyword> directive
+ the <amkeyword>device-output-buffer-size</amkeyword> directive
  instead. <amkeyword>tapebufs</amkeyword> works the same way,
  but the number specified is multiplied by the device blocksize prior
  to use.</para>
@@@ -1068,27 -1048,29 +1048,29 @@@ Whether an amdump run will flush the du
    </listitem>
    </varlistentry>
    <varlistentry>
-   <term><amkeyword>amrecover_do_fsf</amkeyword> <amtype>bool</amtype></term>
+   <term><amkeyword>amrecover-do-fsf</amkeyword> <amtype>bool</amtype></term>
    <listitem>
+ <para>Deprecated; amrecover always uses fsf, and does not invoke amrestore.</para>
  <para>Default:
  <amkeyword>on</amkeyword>.
  Amrecover will call amrestore with the -f flag for faster positioning of the tape.</para>
    </listitem>
    </varlistentry>
    <varlistentry>
-   <term><amkeyword>amrecover_check_label</amkeyword> <amtype>bool</amtype></term>
+   <term><amkeyword>amrecover-check-label</amkeyword> <amtype>bool</amtype></term>
    <listitem>
+ <para>Deprecated; amrecover always checks the label, and does not invoke amrestore.</para>
  <para>Default:
  <amkeyword>on</amkeyword>.
  Amrecover will call amrestore with the -l flag to check the label.</para>
    </listitem>
    </varlistentry>
    <varlistentry>
-   <term><amkeyword>amrecover_changer</amkeyword> <amtype>string</amtype></term>
+   <term><amkeyword>amrecover-changer</amkeyword> <amtype>string</amtype></term>
    <listitem>
  <para>Default: not set.
  Amrecover will use the changer if you use 'settape &lt;string&gt;' and that string
- is the same as the amrecover_changer setting.</para>
+ is the same as the <amkeyword>amrecover-changer</amkeyword> setting.</para>
    </listitem>
    </varlistentry>
    <varlistentry>
@@@ -1159,7 -1141,7 +1141,7 @@@ Relative pathnames are relative to the 
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>debug_days</amkeyword> <amtype>int</amtype></term>
+   <term><amkeyword>debug-days</amkeyword> <amtype>int</amtype></term>
    <listitem>
  <para>Default:
  <amdefault>3</amdefault>.
@@@ -1168,7 -1150,7 +1150,7 @@@ The number of days the debug files are 
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>debug_auth</amkeyword> <amtype>int</amtype></term>
+   <term><amkeyword>debug-auth</amkeyword> <amtype>int</amtype></term>
    <listitem>
  <para>Default:
  <amdefault>0</amdefault>.
@@@ -1177,7 -1159,7 +1159,7 @@@ Debug level of the auth module</para
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>debug_event</amkeyword> <amtype>int</amtype></term>
+   <term><amkeyword>debug-event</amkeyword> <amtype>int</amtype></term>
    <listitem>
  <para>Default:
  <amdefault>0</amdefault>.
@@@ -1186,7 -1168,7 +1168,7 @@@ Debug level of the event module</para
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>debug_holding</amkeyword> <amtype>int</amtype></term>
+   <term><amkeyword>debug-holding</amkeyword> <amtype>int</amtype></term>
    <listitem>
  <para>Default:
  <amdefault>0</amdefault>.
@@@ -1195,7 -1177,7 +1177,7 @@@ Debug level of the holdingdisk module</
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>debug_protocol</amkeyword> <amtype>int</amtype></term>
+   <term><amkeyword>debug-protocol</amkeyword> <amtype>int</amtype></term>
    <listitem>
  <para>Default:
  <amdefault>0</amdefault>.
@@@ -1204,7 -1186,7 +1186,7 @@@ Debug level of the protocol module</par
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>debug_planner</amkeyword> <amtype>int</amtype></term>
+   <term><amkeyword>debug-planner</amkeyword> <amtype>int</amtype></term>
    <listitem>
  <para>Default:
  <amdefault>0</amdefault>.
@@@ -1213,7 -1195,7 +1195,7 @@@ Debug level of the planner process</par
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>debug_driver</amkeyword> <amtype>int</amtype></term>
+   <term><amkeyword>debug-driver</amkeyword> <amtype>int</amtype></term>
    <listitem>
  <para>Default:
  <amdefault>0</amdefault>.
@@@ -1222,7 -1204,7 +1204,7 @@@ Debug level of the driver process</para
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>debug_dumper</amkeyword> <amtype>int</amtype></term>
+   <term><amkeyword>debug-dumper</amkeyword> <amtype>int</amtype></term>
    <listitem>
  <para>Default:
  <amdefault>0</amdefault>.
@@@ -1231,7 -1213,7 +1213,7 @@@ Debug level of the dumper process</para
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>debug_chunker</amkeyword> <amtype>int</amtype></term>
+   <term><amkeyword>debug-chunker</amkeyword> <amtype>int</amtype></term>
    <listitem>
  <para>Default:
  <amdefault>0</amdefault>.
@@@ -1240,7 -1222,7 +1222,7 @@@ Debug level of the chunker process</par
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>debug_taper</amkeyword> <amtype>int</amtype></term>
+   <term><amkeyword>debug-taper</amkeyword> <amtype>int</amtype></term>
    <listitem>
  <para>Default:
  <amdefault>0</amdefault>.
@@@ -1357,6 -1339,36 +1339,36 @@@ Range is inclusive.</para
    </listitem>
    </varlistentry>
  
+   <varlistentry>
+   <term><amkeyword>recovery-limit</amkeyword> [ <amtype>string</amtype> | <amkeyword>same-host</amkeyword> ]</term>
+   <listitem>
+ <para>Default: none (no limitations).  This parameter limits the hosts
+     that may do remote recoveries.  Hosts are identified by their authenticated
+     peer name, as described in <manref name="amanda-auth" vol="7"/>; if this is
+     not available and the recovery-limit parameter is present, recovery will be
+     denied.  The arguments to the parameter are strings giving host match
+     expressions (see <manref name="amanda-match" vol="7"/>) or the special
+     keyword same-host, which requires an exact match to the hostname of the
+     DLE being recovered.  Specifying no arguments at all will disable all
+     recoveries from any host.</para>
+ <para>Note that match expressions can be constructed to be
+     forgiving of e.g., fully-qualified vs. unqualified hostnames, but
+     <amkeyword>same-host</amkeyword> requires an exact match.</para>
+ <para>The error messages that appear in amrecover are intentionally vague to
+     avoid information leakage.  Consult the amindexd debug log for more details
+     on the reasons a recovery was rejected.</para>
+ <para>Recovery limits can be refined on a per-DLE basis using the dumptype
+     parameter of the same name.  Note that the default value will apply to any
+     dumpfiles for disks which no longer appear in the disklist; thus leaving the
+     global parameter at its default value but setting it for all DLEs is not
+     sufficient to maintain secure backups.</para>
+   </listitem>
+   </varlistentry>
  </variablelist>
  </refsect1>
  
@@@ -1490,7 -1502,7 +1502,7 @@@ Type of authorization to perform betwee
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>amandad_path</amkeyword> <amtype>string</amtype></term>
+   <term><amkeyword>amandad-path</amkeyword> <amtype>string</amtype></term>
    <listitem>
  <para>Default:
  <amdefault>&quot;$libexec/amandad&quot;</amdefault>.
@@@ -1500,7 -1512,7 +1512,7 @@@ Specify the amandad path of the client
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>client_username</amkeyword> <amtype>string</amtype></term>
+   <term><amkeyword>client-username</amkeyword> <amtype>string</amtype></term>
    <listitem>
  <para>Default:
  <amdefault>CLIENT_LOGIN</amdefault>.
@@@ -1510,7 -1522,7 +1522,7 @@@ Specify the username to connect on the 
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>client_port</amkeyword> [ <amtype>int</amtype> | <amtype>string</amtype> ]</term>
+   <term><amkeyword>client-port</amkeyword> [ <amtype>int</amtype> | <amtype>string</amtype> ]</term>
    <listitem>
  <para>Default:
  <amdefault>&quot;amanda&quot;</amdefault>.
@@@ -1653,7 -1665,7 +1665,7 @@@ to use your own compression method. (Se
    <varlistentry>
      <term>compress client custom</term>
      <listitem>
-       <para>Specify <emphasis>client_custom_compress</emphasis> &quot;PROG&quot;</para>
+       <para>Specify <amkeyword>client-custom-compress</amkeyword> &quot;PROG&quot;</para>
        <para>PROG must not contain white space and it must accept -d for uncompress.</para>
      </listitem>
    </varlistentry>
    <varlistentry>
      <term>compress server custom</term>
      <listitem>
-       <para>Specify <amkeyword>server_custom_compress</amkeyword> &quot;PROG&quot;</para>
+       <para>Specify <amkeyword>server-custom-compress</amkeyword> &quot;PROG&quot;</para>
        <para>PROG must not contain white space and it must accept -d for uncompress.</para>
      </listitem>
    </varlistentry>
@@@ -1678,7 -1690,7 +1690,7 @@@ or <emphasis remap='B'>mt</emphasis> op
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>client_custom_compress</amkeyword> <amtype>string</amtype></term>
+   <term><amkeyword>client-custom-compress</amkeyword> <amtype>string</amtype></term>
    <listitem>
  <para>Default: none.
      The program to use to perform compression/decompression on the client; used with
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>server_custom_compress</amkeyword> <amtype>string</amtype></term>
+   <term><amkeyword>server-custom-compress</amkeyword> <amtype>string</amtype></term>
    <listitem>
  <para>Default: none.
      The program to use to perform compression/decompression on the server; used with
@@@ -1722,9 -1734,9 +1734,9 @@@ server host as it goes from the networ
    <varlistentry>
      <term>encrypt client</term>
      <listitem>
-       <para>Specify client_encrypt &quot;PROG&quot;</para>
+       <para>Specify client-encrypt &quot;PROG&quot;</para>
        <para>PROG must not contain white space.</para>
-       <para>Specify client_decrypt_option &quot;decryption-parameter&quot; Default: &quot;-d&quot;</para>
+       <para>Specify client-decrypt-option &quot;decryption-parameter&quot; Default: &quot;-d&quot;</para>
        <para>decryption-parameter must not contain white space.</para>
        <para>(See dumptype client-encrypt-nocomp in example/amanda.conf for reference)</para>
      </listitem>
    <varlistentry>
      <term>encrypt server</term>
      <listitem>
-       <para>Specify server_encrypt &quot;PROG&quot;</para>
+       <para>Specify server-encrypt &quot;PROG&quot;</para>
        <para>PROG must not contain white space.</para>
-       <para>Specify server_decrypt_option &quot;decryption-parameter&quot; Default: &quot;-d&quot;</para>
+       <para>Specify server-decrypt-option &quot;decryption-parameter&quot; Default: &quot;-d&quot;</para>
        <para>decryption-parameter must not contain white space.</para>
        <para>(See dumptype server-encrypt-fast in example/amanda.conf for reference)</para>
      </listitem>
@@@ -1750,7 -1762,7 +1762,7 @@@ client-encryption AND server-compressio
  </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>client_encrypt</amkeyword> <amtype>string</amtype></term>
+   <term><amkeyword>client-encrypt</amkeyword> <amtype>string</amtype></term>
    <listitem>
  <para>Default: none.
  The program to use to perform encryption/decryption on the client; used with
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>client_decrypt_option</amkeyword> <amtype>string</amtype></term>
+   <term><amkeyword>client-decrypt-option</amkeyword> <amtype>string</amtype></term>
    <listitem>
  <para>Default: -d.
- The option that can be passed to client_encrypt to make it decrypt instead.
+ The option that can be passed to client-encrypt to make it decrypt instead.
  Must not contain whitespace.</para>
    </listitem>
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>server_encrypt</amkeyword> <amtype>string</amtype></term>
+   <term><amkeyword>server-encrypt</amkeyword> <amtype>string</amtype></term>
    <listitem>
  <para>Default: none.
  The program to use to perform encryption/decryption on the server; used with
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>server_decrypt_option</amkeyword> <amtype>string</amtype></term>
+   <term><amkeyword>server-decrypt-option</amkeyword> <amtype>string</amtype></term>
    <listitem>
  <para>Default: -d.
- The option that can be passed to server_encrypt to make it decrypt instead.
+ The option that can be passed to server-encrypt to make it decrypt instead.
  Must not contain whitespace.</para>
    </listitem>
    </varlistentry>
@@@ -2073,8 -2085,8 +2085,8 @@@ the property to set, and the others con
    <term><amkeyword>record</amkeyword> <amtype>boolean</amtype></term>
    <listitem>
  <para>Default:
 -<amkeyword>yes</amkeyword>.
 -Whether to ask the backup program to update its database (e.g. <filename>/etc/dumpdates</filename>
 +<emphasis remap='I'>yes</emphasis>.
 +Whether to ask the backup program to update its database (e.g. <filename>/var/lib/dumpdates</filename>
  for DUMP or <filename>/usr/local/var/amanda/gnutar-lists</filename> for GNUTAR) of time stamps.
  This is normally enabled for daily backups and turned off for periodic archival runs.</para>
    </listitem>
@@@ -2098,7 -2110,7 +2110,7 @@@ level 1 incrementals in this configurat
    </listitem>
    </varlistentry>
    <varlistentry>
-   <term><amkeyword>ssh_keys</amkeyword> <amtype>string</amtype></term>
+   <term><amkeyword>ssh-keys</amkeyword> <amtype>string</amtype></term>
    <listitem>
  <para>Default: not set.
  The key file the ssh auth will use, it must be the private key. If this parameter is not specified, then the default ssh key will be used.</para>
@@@ -2159,23 -2171,28 +2171,28 @@@ The value should be hh*100+mm, e.g. 6:3
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>tape_splitsize</amkeyword> <amtype>int</amtype></term>
+   <term><amkeyword>allow-split</amkeyword> <amtype>bool</amtype></term>
+   <listitem>
+ <para>Default: true.
+ If true, then dumps with this dumptype can be split on the storage media.  If false, then
+ the dump will be written in a single file on the media.  See "Dump Splitting Configuration"
+ below.</para>
+   </listitem>
+   </varlistentry>
+   <varlistentry>
+   <term><amkeyword>tape-splitsize</amkeyword> <amtype>int</amtype></term>
    <listitem>
+       <para>Deprecated.  See "Dump Splitting Configuration" below.</para>
  <para>Default: not set.
  Split dump file on tape into pieces of a specified size.
- This allows dumps to be spread across multiple tapes, and can potentially
- make more efficient use of tape space.
- Note that if this value is too large (more than half the size of the
- average dump being split), substantial tape space can be wasted.
- If too small, large dumps will be split into innumerable tiny dumpfiles,
- adding to restoration complexity.
- A good rule of thumb, usually, is 1/10 of the size of your tape.</para>
- <para>The default unit is Kbytes if it is not specified.</para>
+ The default unit is Kbytes if it is not specified.</para>
    </listitem>
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>split_diskbuffer</amkeyword> <amtype>string</amtype></term>
+   <term><amkeyword>split-diskbuffer</amkeyword> <amtype>string</amtype></term>
+       <para>Deprecated.  See "Dump Splitting Configuration" below.</para>
    <listitem>
  <para>Default: not set.
  When dumping a split dump in PORT-WRITE mode (usually meaning "no holding disk"), buffer the split chunks to a file in the directory specified by this option.
    </varlistentry>
  
    <varlistentry>
-   <term><amkeyword>fallback_splitsize</amkeyword> <amtype>int</amtype></term>
+   <term><amkeyword>fallback-splitsize</amkeyword> <amtype>int</amtype></term>
    <listitem>
+       <para>Deprecated.  See "Dump Splitting Configuration" below.</para>
  <para>Default:
  <amdefault>10M</amdefault>.
- When dumping a split dump in PORT-WRITE mode, if no split_diskbuffer is
- specified (or if we somehow fail to use our split_diskbuffer), we must
- buffer split chunks in memory.
- This specifies the maximum size split chunks can be in this scenario,
+ This specifies the part size used when no <amkeyword>split-diskbuffer</amkeyword> is specified, or when it is too small or does not exist,
  and thus the maximum amount of memory consumed for in-memory splitting.
- The size of this buffer can be changed from its (very conservative) default
- to a value reflecting the amount of memory that each taper process on
- the dump server may reasonably consume.
- </para>
- <para>The default unit is Kbytes if it is not specified.</para>
+ The default unit is Kbytes if it is not specified.</para>
+   </listitem>
+   </varlistentry>
+   <varlistentry>
+       <term><amkeyword>recovery-limit</amkeyword>
+           [ <amkeyword>same-host</amkeyword> | <amtype>string</amtype> ]*</term>
+   <listitem>
+ <para>Default: global value.  This parameter overrides the global
+     <amkeyword>recovery-limit</amkeyword> parameter for DLEs of this
+     dumptype.</para>
    </listitem>
    </varlistentry>
  </variablelist>
@@@ -2348,6 -2371,52 +2371,52 @@@ tape devices
    </listitem>
    </varlistentry>
    
+   <varlistentry>
+   <term><amkeyword>part-size</amkeyword> <amtype>int</amtype></term>
+   <listitem>
+ <para>Default: none.  This is the size (in KB if no units are specified) of
+ each split part written to the volume.  It is reduced to
+ <amkeyword>part-cache-max-size</amkeyword> when part caching is required.
+ If this is set to zero, then no splitting will take place; in this case,
+ some devices can span dumps from volume to volume, while others will cause
+ the entire dump to fail if they encounter end-of-medium before the dump is
+ complete.  See "Dump Splitting Configuration" below.</para>
+   </listitem>
+   </varlistentry>
+   <varlistentry>
+   <term><amkeyword>part-cache-type</amkeyword> [ <amkeyword>none</amkeyword> | <amkeyword>disk</amkeyword> | <amkeyword>memory</amkeyword> ] </term>
+   <listitem>
+ <para>Default: none.  When part caching is required, this parameter specifies
+ the type of caching that will be used.  The options include no caching
+ (<amkeyword>none</amkeyword>), in which case a failed part will cause the
+ entire dump to fail; on-disk caching (<amkeyword>disk</amkeyword>), for
+ which <amkeyword>part-cache-dir</amkeyword> must be set properly; and
+ in-memory caching (<amkeyword>memory</amkeyword>), which on most systems
+ severely restrains the size of the part that can be written.  See "Dump
+ Splitting Configuration" below.</para>
+   </listitem>
+   </varlistentry>
+   <varlistentry>
+   <term><amkeyword>part-cache-dir</amkeyword> <amtype>string</amtype></term>
+   <listitem>
+ <para>Default: none.
+ The directory in which part-cache files can be written when caching on disk.
+ See "Dump Splitting Configuration" below.</para>
+   </listitem>
+   </varlistentry>
+   <varlistentry>
+   <term><amkeyword>part-cache-max-size</amkeyword> <amtype>int</amtype></term>
+   <listitem>
+ <para>Default: none.
+ The maximum part size to use when caching is in effect.  This is used to limit
+ the part size when disk or memory space for caching is constrained.  This value
+ must be greater than zero.</para>
+   </listitem>
+   </varlistentry>
    <varlistentry>
    <term><amkeyword>speed</amkeyword> <amtype>int</amtype></term>
    <listitem>
@@@ -2374,7 -2443,7 +2443,7 @@@ man page for more information.</para
  
  <para>In addition to options, another
  <amkeyword>tapetype</amkeyword>
- name may be supplie as an identifier, which makes this
+ name may be supplied as an identifier, which makes this
  <amkeyword>tapetype</amkeyword>
  inherit options from another
  <amkeyword>tapetype</amkeyword>.
@@@ -2547,13 -2616,13 +2616,13 @@@ A comment string describing this script
    </listitem>
    </varlistentry>
    <varlistentry>
-   <term><amkeyword>execute_where</amkeyword> [ <amkeyword>client</amkeyword> | <amkeyword>server</amkeyword> ]</term>
+   <term><amkeyword>execute-where</amkeyword> [ <amkeyword>client</amkeyword> | <amkeyword>server</amkeyword> ]</term>
    <listitem>
  <para>Default: <amkeyword>client</amkeyword>. Where the script must be executed, on the client or server.</para>
    </listitem>
    </varlistentry>
    <varlistentry>
-   <term><amkeyword>>execute_on</amkeyword> <amtype>execute_on</amtype> [,<amtype>execute_on</amtype>]*</term>
+   <term><amkeyword>execute-on</amkeyword> <amtype>execute_on</amtype> [,<amtype>execute_on</amtype>]*</term>
    <listitem>
  <para>No default. When the script must be executed, you can specify many of them:</para>
      <!-- .RS -->
@@@ -2676,7 -2745,7 +2745,7 @@@ script --post-recove
    </listitem>
    </varlistentry>
    <varlistentry>
-   <term><amkeyword>property</amkeyword>> [<amkeyword>append</amkeyword>] [<amkeyword>priority</amkeyword>] <amtype>string</amtype> <amtype>string</amtype>+</term>
+   <term><amkeyword>property</amkeyword> [<amkeyword>append</amkeyword>] [<amkeyword>priority</amkeyword>] <amtype>string</amtype> <amtype>string</amtype>+</term>
    <listitem>
  <para>No default. You can set property for the script, each script have a different set of property. Both strings are quoted; the first string contains the name of
  the property to set, and the others contains its values.
@@@ -2697,7 -2766,7 +2766,7 @@@ in the form of "device" sections, whic
  define device <emphasis remap='I'>name</emphasis> {
      commend "<emphasis remap='I'>comment (optional)</emphasis>"
      tapedev "<emphasis remap='I'>device-specifier</emphasis>"
-     device_property "<emphasis remap='I'>prop-name</emphasis>" "<emphasis remap='I'>prop-value</emphasis>"
+     device-property "<emphasis remap='I'>prop-name</emphasis>" "<emphasis remap='I'>prop-value</emphasis>"
      <literal>...</literal>
  }
  </programlisting>
@@@ -2712,7 -2781,7 +2781,7 @@@ As with most sections, the <emphasis re
  parmeter is optional and only for the user's convenience.</para>
  
  <para>An arbitrary number of <emphasis
- remap='I'>device_property</emphasis> parameters can be specified.
+ remap='I'>device-property</emphasis> parameters can be specified.
  Again, see
  <manref name="amanda-devices" vol="7"/>
  for information on device properties.</para>
@@@ -2743,6 -2812,60 +2812,60 @@@ device. The remaining parameters are sp
  
  </refsect1>
  
+ <refsect1><title>Dump Splitting Configuration</title>
+     <para>Amanda can "split" dumps into parts while writing them to storage
+       media.  This allows Amanda to recover gracefully from a failure while
+       writing a part to a volume, by simply selecting a new volume and
+       re-writing the dump from the beginning of the failed part.  Parts also
+       allow Amanda to seek directly to the required data, although this
+       functionality is not yet used.</para>
+     <para>In order to support re-writing from the beginning of a failed part,
+       Amanda must have access to the contents of the part after it has been
+       partially written.  If the dump is being read from holding disk, then
+       the part contents are availble there.  Otherwise, the part must be
+       cached, and this can be done memory or on disk.  In either of the
+       latter cases, the cache must have enough space to hold an entire
+       part.</para>
+     <para>Because it is common for a single Amanda configuration to use both
+       holding-disk (FILE-WRITE) and direct (known as PORT-WRITE) dumps, Amanda
+       allows the configuration of different split sizes for the two cases.  This
+       allows, for example, for a part size appropriate to large tapes when
+       performing FILE-WRITE dumps, with a part size limited by available disk
+       or memory when performing PORT-WRITE dumps.</para>
+     <para>Selecting a proper split size is a delicate matter.  If the parts are
+       too large, substantial storage space may be wasted in failed parts.  If
+       too small, large dumps will be split into innumerable tiny dumpfiles,
+       adding to restoration complexity; furthermore, an excess of filemarks
+       will cause slower tape drive operation and reduce the usable space on
+       tape.  A good rule of thumb is 1/10 of the size of a volume of storage
+       media.</para>
+     <para>In versions of Amanda through 3.1.*, splitting was controlled by the
+       dumptype parameters <amkeyword>tape-splitsize</amkeyword>,
+       <amkeyword>split-diskbuffer</amkeyword>, and
+       <amkeyword>fallback-splitsize</amkeyword>.  These keywords had
+       confusing and non-intuitive interactions, and have since been
+       deprecated.</para>
+     <para>If the deprecated keywords are not present, subsequent versions
+       of Amanda use the dumptype parameter
+       <amkeyword>allow-split</amkeyword> to control whether a DLE can be
+       split, and the <emphasis>tapetype</emphasis> parameters
+       <amkeyword>part-size</amkeyword>,
+       <amkeyword>part-cache-type</amkeyword>,
+       <amkeyword>part-cache-dir</amkeyword>, and
+       <amkeyword>part-cache-max-size</amkeyword>.  The
+       <amkeyword>part-size</amkeyword> specifies the "normal" part size,
+       while the <amkeyword>part-cache-*</amkeyword> parameters describe
+       how to behave when caching is required (on PORT-WRITE).  Full
+       details on these parameters are given above.</para>
+ </refsect1>
  <seealso>
  <manref name="amanda-client.conf" vol="5"/>,
  <manref name="amanda-applications" vol="7"/>,
diff --combined server-src/diskfile.h
index 06660975df6606c5abe657b4f216dfe9d584439c,5797a18ce262a115e4c8ab7fbd11ff4b1dadc250..298ba67d486fb6b5a3d2513319f1c14928e410db
@@@ -34,6 -34,7 +34,7 @@@
  
  #include "amanda.h"
  #include "conffile.h"
+ #include "fileheader.h"
  #include "amfeatures.h"
  
  typedef struct netif_s {
@@@ -67,6 -68,7 +68,7 @@@ typedef struct disk_s 
      char      *name;                  /* label name for disk */
      char      *device;                /* device name for disk, eg "sd0g" */
      char      *dtype_name;            /* name of dump type */
+     dumptype_t        *config;                /* pointer to the dumptype config */
      char      *program;               /* dump program, eg DUMP, STAR, GNUTAR */
      char      *srvcompprog;           /* custom compression server filter */
      char      *clntcompprog;          /* custom compression client filter */
      int               exclude_optional;       /* exclude list are optional */
      int               include_optional;       /* include list are optional */
      int               priority;               /* priority of disk */
-     off_t     tape_splitsize;         /* size of dumpfile chunks on tape */
-     char      *split_diskbuffer;      /* place where we can buffer PORT-WRITE dumps other than RAM */
-     off_t     fallback_splitsize;     /* size for in-RAM PORT-WRITE buffers */
+     int               allow_split;
+     off_t     splitsize;
+     off_t     tape_splitsize;         /* size of dumpfile chunks on tape */
+     char      *split_diskbuffer;      /* place where we can buffer PORT-WRITE dumps other than RAM */
+     off_t     fallback_splitsize;     /* size for in-RAM PORT-WRITE buffers */
      int               dumpcycle;              /* days between fulls */
      long      frequency;              /* XXX - not used */
      char      *auth;                  /* type of authentication (per disk) */
      char      *clnt_decrypt_opt;      /* client-side decryption option parameter to use */
      double    comprate[2];            /* default compression rates */
      /* flag options */
 -    int               record;                 /* record dump in /etc/dumpdates ? */
 +    int               record;                 /* record dump in /var/lib/dumpdates ? */
      int               skip_incr;              /* incs done externally ? */
      int               skip_full;              /* fulls done externally ? */
      int               to_holdingdisk;         /* use holding disk ? */
@@@ -170,6 -174,7 +174,7 @@@ char *xml_scripts(identlist_t pp_script
  void disable_skip_disk(disklist_t *origqp);
  
  char *match_disklist(disklist_t *origqp, int sargc, char **sargv);
+ gboolean match_dumpfile(dumpfile_t *file, int sargc, char **sargv);
  void free_disklist(disklist_t *dl);
  
  netif_t *disklist_netifs(void);