From 71a8073e6f18ccc21880a475af8d864279a960b8 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Thu, 7 Feb 2019 23:05:34 +0100 Subject: [PATCH] Introduce prune --disk-space. The new option takes a mandatory argument of the set {check, high, low}. The latter two make the command act as if disk space was high/low without actually performing the check. This is mostly useful for debugging. --- dss.c | 17 ++++++++++++----- dss.suite | 16 ++++++++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/dss.c b/dss.c index e2ee7dd..4396e6e 100644 --- a/dss.c +++ b/dss.c @@ -1660,14 +1660,21 @@ static int com_prune(void) struct snapshot *victim; struct disk_space ds; char *why; + bool try_hard; lock_dss_or_die(); - ret = get_disk_space(".", &ds); - if (ret < 0) - return ret; - log_disk_space(&ds); + switch (OPT_UINT32_VAL(PRUNE, DISK_SPACE)) { + case FDS_LOW: try_hard = true; break; + case FDS_HIGH: try_hard = false; break; + default: + ret = get_disk_space(".", &ds); + if (ret < 0) + return ret; + log_disk_space(&ds); + try_hard = disk_space_low(&ds); + } dss_get_snapshot_list(&sl); - victim = find_removable_snapshot(&sl, disk_space_low(&ds), &why); + victim = find_removable_snapshot(&sl, try_hard, &why); if (!victim) { dss_msg("nothing to prune\n"); ret = 0; diff --git a/dss.suite b/dss.suite index 2719827..f9cf8af 100644 --- a/dss.suite +++ b/dss.suite @@ -466,6 +466,22 @@ caption = Subcommands The subcommand fails if there is another dss "run" process. [/description] + [option disk-space] + summary = act as if free disk space was high/low + arg_info = required_arg + arg_type = string + typestr = mode + values = { + FDS_CHECK = "check", + FDS_HIGH = "high", + FDS_LOW = "low" + } + default_val = check + [help] + By default, free disk space is checked and even regular snapshots + become candidates for removal if disk space is low. This option + overrides the result of the check. + [/help] [subcommand ls] purpose = print the list of all snapshots [description] -- 2.39.2