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;
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]