ALGO_LARGEST,
ALGO_LARGESTFIT,
ALGO_SMALLEST,
+ ALGO_SMALLESTFIT, /* for internal use */
ALGO_LAST,
+ ALGO_LASTFIT, /* for internal use */
ALGO_ALGO /* sentinel */
} taperalgo_t;
/* A GSlist where each element is a 'char*' */
typedef GSList* identlist_t;
+/* part_cache_types */
+typedef enum {
+ PART_CACHE_TYPE_NONE,
+ PART_CACHE_TYPE_MEMORY,
+ PART_CACHE_TYPE_DISK,
+} part_cache_type_t;
+
+/* recovery_limit */
+typedef struct {
+ gboolean same_host;
+ GSList *match_pats;
+} recovery_limit_t;
+
/* Names for the type of value in a val_t. Mostly for internal use, but useful
* for wrapping val_t's, too. */
typedef enum {
CONFTYPE_IDENTLIST,
CONFTYPE_DATA_PATH,
CONFTYPE_AUTOLABEL,
+ CONFTYPE_PART_CACHE_TYPE,
+ CONFTYPE_RECOVERY_LIMIT,
} conftype_t;
/* A "seen" struct. Rather than allocate strings all over the place, this
estimatelist_t estimatelist;
identlist_t identlist;
autolabel_t autolabel;
+ recovery_limit_t recovery_limit;
} v;
seen_t seen;
conftype_t type;
send_amreport_t val_t_to_send_amreport(val_t *);
data_path_t val_t_to_data_path(val_t *);
autolabel_t val_t_to_autolabel(val_t *);
+part_cache_type_t val_t_to_part_cache_type(val_t *);
+recovery_limit_t *val_t_to_recovery_limit(val_t *);
/* Has the given val_t been seen in a configuration file or config overwrite?
*
#define val_t__execute_where(val) ((val)->v.i)
#define val_t__data_path(val) ((val)->v.i)
#define val_t__autolabel(val) ((val)->v.autolabel)
+#define val_t__part_cache_type(val) ((val)->v.i)
+#define val_t__recovery_limit(val) ((val)->v.recovery_limit)
+
/*
* Parameters
*
CNF_ETIMEOUT,
CNF_DTIMEOUT,
CNF_CTIMEOUT,
- CNF_TAPEBUFS,
CNF_DEVICE_OUTPUT_BUFFER_SIZE,
CNF_PRINTER,
CNF_MAILER,
CNF_HOLDINGDISK,
CNF_AUTOLABEL,
CNF_DEBUG_DAYS,
+ CNF_TAPER_PARALLEL_WRITE,
+ CNF_RECOVERY_LIMIT,
CNF_CNF /* sentinel */
} confparm_key;
#define getconf_proplist(key) (val_t_to_proplist(getconf((key))))
#define getconf_send_amreport(key) (val_t_to_send_amreport(getconf((key))))
#define getconf_autolabel(key) (val_t_to_autolabel(getconf((key))))
+#define getconf_part_cache_type(key) (val_t_to_part_cache_type(getconf((key))))
+#define getconf_recovery_limit(key) (val_t_to_recovery_limit(getconf((key))))
/* Get a list of names for subsections of the given type
*
TAPETYPE_LENGTH,
TAPETYPE_FILEMARK,
TAPETYPE_SPEED,
- TAPETYPE_FILE_PAD,
+ TAPETYPE_PART_SIZE,
+ TAPETYPE_PART_CACHE_TYPE,
+ TAPETYPE_PART_CACHE_DIR,
+ TAPETYPE_PART_CACHE_MAX_SIZE,
TAPETYPE_TAPETYPE /* sentinel */
} tapetype_key;
* @param ttyp: the tapetype to examine
* @returns: various
*/
-#define tapetype_get_comment(ttyp) (val_t_to_str(tapetype_getconf((ttyp), TAPETYPE_COMMENT)))
-#define tapetype_get_lbl_templ(ttyp) (val_t_to_str(tapetype_getconf((ttyp), TAPETYPE_LBL_TEMPL)))
-#define tapetype_get_blocksize(ttyp) (val_t_to_size(tapetype_getconf((ttyp), TAPETYPE_BLOCKSIZE)))
-#define tapetype_get_readblocksize(ttyp) (val_t_to_size(tapetype_getconf((ttyp), TAPETYPE_READBLOCKSIZE)))
-#define tapetype_get_length(ttyp) (val_t_to_int64(tapetype_getconf((ttyp), TAPETYPE_LENGTH)))
-#define tapetype_get_filemark(ttyp) (val_t_to_int64(tapetype_getconf((ttyp), TAPETYPE_FILEMARK)))
-#define tapetype_get_speed(ttyp) (val_t_to_int(tapetype_getconf((ttyp), TAPETYPE_SPEED)))
-#define tapetype_get_file_pad(ttyp) (val_t_to_boolean(tapetype_getconf((ttyp), TAPETYPE_FILE_PAD)))
+#define tapetype_get_comment(ttyp) (val_t_to_str(tapetype_getconf((ttyp), TAPETYPE_COMMENT)))
+#define tapetype_get_lbl_templ(ttyp) (val_t_to_str(tapetype_getconf((ttyp), TAPETYPE_LBL_TEMPL)))
+#define tapetype_get_blocksize(ttyp) (val_t_to_size(tapetype_getconf((ttyp), TAPETYPE_BLOCKSIZE)))
+#define tapetype_get_readblocksize(ttyp) (val_t_to_size(tapetype_getconf((ttyp), TAPETYPE_READBLOCKSIZE)))
+#define tapetype_get_length(ttyp) (val_t_to_int64(tapetype_getconf((ttyp), TAPETYPE_LENGTH)))
+#define tapetype_get_filemark(ttyp) (val_t_to_int64(tapetype_getconf((ttyp), TAPETYPE_FILEMARK)))
+#define tapetype_get_speed(ttyp) (val_t_to_int(tapetype_getconf((ttyp), TAPETYPE_SPEED)))
+#define tapetype_get_part_size(ttyp) (val_t_to_int64(tapetype_getconf((ttyp), TAPETYPE_PART_SIZE)))
+#define tapetype_get_part_cache_type(ttyp) (val_t_to_part_cache_type(tapetype_getconf((ttyp), TAPETYPE_PART_CACHE_TYPE)))
+#define tapetype_get_part_cache_dir(ttyp) (val_t_to_str(tapetype_getconf((ttyp), TAPETYPE_PART_CACHE_DIR)))
+#define tapetype_get_part_cache_max_size(ttyp) (val_t_to_int64(tapetype_getconf((ttyp), TAPETYPE_PART_CACHE_MAX_SIZE)))
/*
* Dumptype parameter access
DUMPTYPE_PROPERTY,
DUMPTYPE_CLIENT_PORT,
DUMPTYPE_DATA_PATH,
+ DUMPTYPE_ALLOW_SPLIT,
+ DUMPTYPE_RECOVERY_LIMIT,
DUMPTYPE_DUMPTYPE /* sentinel */
} dumptype_key;
#define dumptype_get_property(dtyp) (val_t_to_proplist(dumptype_getconf((dtyp), DUMPTYPE_PROPERTY)))
#define dumptype_get_client_port(dtyp) (val_t_to_str(dumptype_getconf((dtyp), DUMPTYPE_CLIENT_PORT)))
#define dumptype_get_data_path(dtyp) (val_t_to_data_path(dumptype_getconf((dtyp), DUMPTYPE_DATA_PATH)))
+#define dumptype_get_allow_split(dtyp) (val_t_to_boolean(dumptype_getconf((dtyp), DUMPTYPE_ALLOW_SPLIT)))
+#define dumptype_get_recovery_limit(dtyp) (val_t_to_recovery_limit(dumptype_getconf((dtyp), DUMPTYPE_RECOVERY_LIMIT)))
/*
* Interface parameter access
* @returns: various
*/
-#define changer_config_get_comment(devconf) (val_t_to_str(changer_config_getconf((devconf), DEVICE_CONFIG_COMMENT)))
-#define changer_config_get_tapedev(devconf) (val_t_to_str(changer_config_getconf((devconf), DEVICE_CONFIG_TAPEDEV)))
-#define changer_config_get_tpchanger(devconf) (val_t_to_str(changer_config_getconf((devconf), DEVICE_CONFIG_TPCHANGER)))
-#define changer_config_get_changerdev(devconf) (val_t_to_str(changer_config_getconf((devconf), DEVICE_CONFIG_CHANGERDEV)))
-#define changer_config_get_changerfile(devconf) (val_t_to_str(changer_config_getconf((devconf), DEVICE_CONFIG_CHANGERFILE)))
+#define changer_config_get_comment(devconf) (val_t_to_str(changer_config_getconf((devconf), CHANGER_CONFIG_COMMENT)))
+#define changer_config_get_tapedev(devconf) (val_t_to_str(changer_config_getconf((devconf), CHANGER_CONFIG_TAPEDEV)))
+#define changer_config_get_tpchanger(devconf) (val_t_to_str(changer_config_getconf((devconf), CHANGER_CONFIG_TPCHANGER)))
+#define changer_config_get_changerdev(devconf) (val_t_to_str(changer_config_getconf((devconf), CHANGER_CONFIG_CHANGERDEV)))
+#define changer_config_get_changerfile(devconf) (val_t_to_str(changer_config_getconf((devconf), CHANGER_CONFIG_CHANGERFILE)))
changer_config_t *read_changer_config(char *name, FILE *from, char *fname, int *linenum);
changer_config_t *lookup_changer_config(char *identifier);
*/
int string_to_boolean(const char *str);
-/* Add all properties to an ARGV
- *
- * @param argvchild: Pointer to the ARGV.
- * @param proplist: The property list
- */
-void property_add_to_argv(GPtrArray *argv_ptr, proplist_t proplist);
-
/* Return a pointer to a static string for the data_path */
char *data_path_to_string(data_path_t data_path);