summaryrefslogtreecommitdiffstats
path: root/tools/lvm.c
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2001-12-31 19:09:51 +0000
committerAlasdair Kergon <agk@redhat.com>2001-12-31 19:09:51 +0000
commit41b2fd5f4de6f5932ac4acaee495b059d5765ecd (patch)
tree95e66904f6296970794f17121294b3b26111ad14 /tools/lvm.c
parent4624c6f8454e2f9f4ff004dc99beee65f87ca635 (diff)
downloadlvm2-41b2fd5f4de6f5932ac4acaee495b059d5765ecd.tar.gz
lvm2-41b2fd5f4de6f5932ac4acaee495b059d5765ecd.tar.xz
lvm2-41b2fd5f4de6f5932ac4acaee495b059d5765ecd.zip
o Use lvm_snprintf wherever return value is used
o Add parameters to set retention limits for backups
Diffstat (limited to 'tools/lvm.c')
-rw-r--r--tools/lvm.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/tools/lvm.c b/tools/lvm.c
index 02e0f8a8..61b06089 100644
--- a/tools/lvm.c
+++ b/tools/lvm.c
@@ -13,7 +13,6 @@
#include <libgen.h>
#include <sys/stat.h>
#include <ctype.h>
-#include <limits.h>
#include "stub.h"
#include "vgcache.h"
@@ -68,21 +67,25 @@ static int _debug;
static int _default_verbose;
static int _verbose;
-
/*
* The lvm_sys_dir contains:
*
* o The lvm configuration (lvm.conf)
* o The persistent filter cache (.cache)
- * o Volume group backups (backups)
+ * o Volume group backups (backup/)
*
*/
static char _sys_dir[PATH_MAX] = "/etc/lvm";
static char _backup_dir[PATH_MAX];
static char _dev_dir[PATH_MAX];
+static int _backup_days = 14; /* Keep at least 14 days */
+static int _backup_number = 10; /* Keep at least 10 backups */
+static int _backup_auto = 1; /* Autobackups enabled by default */
+
#define DEFAULT_DEV_DIR "/dev"
+
/* static functions */
static void register_commands(void);
static struct command *find_command(const char *name);
@@ -548,7 +551,8 @@ static int process_common_commands(struct command *com)
/* Set autobackup if command takes this option */
for (l = 0; l < com->num_args; l++)
if (com->valid_args[l] == autobackup_ARG)
- if (!autobackup_init(_backup_dir))
+ if (!autobackup_init(_backup_dir, _backup_days,
+ _backup_number, _backup_auto))
return EINVALID_CMD_LINE;
/* Zero indicates it's OK to continue processing this command */
@@ -845,13 +849,22 @@ static int init(void)
dm_log_init(print_log);
- if (lvm_snprintf(_backup_dir, sizeof(_backup_dir), "%s",
+ if (lvm_snprintf(_backup_dir, sizeof(_backup_dir), "%s/backup",
find_config_str(cmd->cf->root, "backup/dir",
'/', _sys_dir)) < 0) {
log_error("Backup directory given in config file too long");
return 0;
}
+ _backup_days = find_config_int(cmd->cf->root, "backup/days", '/',
+ _backup_days);
+
+ _backup_number = find_config_int(cmd->cf->root, "backup/keep", '/',
+ _backup_number);
+
+ _backup_auto = find_config_int(cmd->cf->root, "backup/auto", '/',
+ _backup_auto);
+
if (!dev_cache_setup(cmd->cf))
return 0;