[pve-devel] [PATCH storage 2/3] convert maxfiles to prune_backups when reading the storage configuration

Fabian Ebner f.ebner at proxmox.com
Mon Nov 23 13:33:09 CET 2020


If there are already prune options configured, simply delete the maxfiles
setting. Having set both is invalid from vzdump's perspective anyways, and any
backup job on such a storage failed, meaning a user would've noticed.

If there are no prune options, translate the maxfiles value to keep-last,
except for maxfiles being zero (=unlimited), in which case we use keep-all.

If both are not set, don't set anything, so:
1. Storages don't suddenly have retention options set.
2. People relying on vzdump defaults can still use those.

Signed-off-by: Fabian Ebner <f.ebner at proxmox.com>
---
 PVE/Storage.pm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/PVE/Storage.pm b/PVE/Storage.pm
index d613469..18357a8 100755
--- a/PVE/Storage.pm
+++ b/PVE/Storage.pm
@@ -129,6 +129,26 @@ sub lock_storage_config {
     }
 }
 
+# FIXME remove maxfiles for PVE 7.0
+my $convert_maxfiles_to_prune_backups = sub {
+    my ($scfg) = @_;
+
+    my $maxfiles = delete $scfg->{maxfiles};
+
+    if (!defined($scfg->{'prune-backups'}) && defined($maxfiles)) {
+	my $prune_backups;
+	if ($maxfiles) {
+	    $prune_backups = { 'keep-last' => $maxfiles };
+	} else { # maxfiles 0 means no limit
+	    $prune_backups = { 'keep-all' => 1 };
+	}
+	$scfg->{'prune-backups'} = PVE::JSONSchema::print_property_string(
+	    $prune_backups,
+	    'prune-backups'
+	);
+    }
+};
+
 sub storage_config {
     my ($cfg, $storeid, $noerr) = @_;
 
@@ -138,6 +158,8 @@ sub storage_config {
 
     die "storage '$storeid' does not exist\n" if (!$noerr && !$scfg);
 
+    $convert_maxfiles_to_prune_backups->($scfg);
+
     return $scfg;
 }
 
-- 
2.20.1






More information about the pve-devel mailing list