[pve-devel] [PATCH container 2/2] vzdump: move include logic for mountpoints to method
Aaron Lauterer
a.lauterer at proxmox.com
Fri Apr 3 16:11:38 CEST 2020
Move the logic which mountpoints are included in the backup job to its
own method and adapt the VZDump code accordingly. This makes it possible
to develop other features around backup jobs.
Signed-off-by: Aaron Lauterer <a.lauterer at proxmox.com>
---
v3 -> v4: nothing changed. in here for completness sake
src/PVE/LXC/Config.pm | 24 ++++++++++++++++++++++++
src/PVE/VZDump/LXC.pm | 32 +++++++++++++++++---------------
2 files changed, 41 insertions(+), 15 deletions(-)
diff --git a/src/PVE/LXC/Config.pm b/src/PVE/LXC/Config.pm
index e3be23c..42e5354 100644
--- a/src/PVE/LXC/Config.pm
+++ b/src/PVE/LXC/Config.pm
@@ -1606,4 +1606,28 @@ sub get_replicatable_volumes {
return $volhash;
}
+sub get_backup_volumes {
+ my ($class, $conf) = @_;
+
+ my $ret_volumes = [];
+
+ my $test_mountpoint = sub {
+ my ($key, $volume) = @_;
+
+ my $data = {};
+ my ($included, $reason) = $class->mountpoint_backup_enabled($key, $volume);
+
+ $data->{key} = $key;
+ $data->{included} = $included;
+ $data->{reason} = $reason;
+ $data->{data} = $volume;
+
+ push @$ret_volumes, $data;
+ };
+
+ PVE::LXC::Config->foreach_mountpoint($conf, $test_mountpoint);
+
+ return $ret_volumes;
+}
+
1;
diff --git a/src/PVE/VZDump/LXC.pm b/src/PVE/VZDump/LXC.pm
index 09c4d47..74f4427 100644
--- a/src/PVE/VZDump/LXC.pm
+++ b/src/PVE/VZDump/LXC.pm
@@ -120,18 +120,19 @@ sub prepare {
$task->{rootgid} = $rootgid;
my $volids = $task->{volids} = [];
- PVE::LXC::Config->foreach_mountpoint($conf, sub {
- my ($name, $data) = @_;
- my $volid = $data->{volume};
- my $mount = $data->{mp};
- my $type = $data->{type};
-
- return if !$volid || !$mount;
-
- if (!PVE::LXC::Config->mountpoint_backup_enabled($name, $data)) {
- push @$exclude_dirs, $mount;
- $self->loginfo("excluding $type mount point $name ('$mount') from backup");
- return;
+
+ my $mountpoint_info = PVE::LXC::Config->get_backup_volumes($conf);
+
+ foreach my $mp (@{$mountpoint_info}) {
+ my $name = $mp->{key};
+ my $data = $mp->{data};
+
+ next if !$data->{volume} || !$data->{mp};
+
+ if (!$mp->{included}) {
+ push @$exclude_dirs, $data->{mp};
+ $self->loginfo("excluding $data->{type} mount point $name ('$data->{mp}') from backup");
+ next;
}
$data->{name} = $name;
@@ -140,10 +141,11 @@ sub prepare {
if ($conf->{template} && !defined($data->{ro})) {
$data->{ro} = 1;
}
+
+ $self->loginfo("including mount point $name ('$data->{mp}') in backup");
push @$disks, $data;
- push @$volids, $volid
- if $type eq 'volume';
- });
+ push @$volids, $data->{volume} if $mp->{included};
+ }
if ($mode eq 'snapshot') {
if (!PVE::LXC::Config->has_feature('snapshot', $conf, $storage_cfg, undef, undef, 1)) {
--
2.20.1
More information about the pve-devel
mailing list