]> git.proxmox.com Git - pve-container.git/commitdiff
vzdump: userns support
authorWolfgang Bumiller <w.bumiller@proxmox.com>
Thu, 12 Nov 2015 13:00:28 +0000 (14:00 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Fri, 13 Nov 2015 11:02:31 +0000 (12:02 +0100)
src/PVE/LXC.pm
src/PVE/LXC/Create.pm
src/PVE/VZDump/LXC.pm

index 07ac4fc2e432d38fcd6f8340654cb0d2e93a1b1a..ccab2843557eeeb75d312ad27f219357efc9e197 100644 (file)
@@ -2411,4 +2411,12 @@ sub parse_id_maps {
     return ($id_map, $rootuid, $rootgid);
 }
 
+sub userns_command {
+    my ($id_map) = @_;
+    if (@$id_map) {
+       return ['lxc-usernsexec', (map { ('-m', join(':', @$_)) } @$id_map), '--'];
+    }
+    return [];
+}
+
 1;
index cb9c85ab9aff85759be1e738ed7f0688f6d8d29a..b146ea7e71025b3d60fd3aabfa489a021a3f13d9 100644 (file)
@@ -25,11 +25,9 @@ sub next_free_nbd_dev {
 sub restore_archive {
     my ($archive, $rootdir, $conf) = @_;
 
-    my $userns_cmd = [];
-
     my ($id_map, $rootuid, $rootgid) = PVE::LXC::parse_id_maps($conf);
+    my $userns_cmd = PVE::LXC::userns_command($id_map);
     if (@$id_map) {
-       $userns_cmd = ['lxc-usernsexec', (map { ('-m', join(':', @$_)) } @$id_map), '--'];
        PVE::Tools::run_command(['chown', '-R', "$rootuid:$rootgid", $rootdir]);
     }
 
index f138588650140897efab49e05214d0b7afaab803..72ad9c00f0679c568fc414f13540e86fcfebde55 100644 (file)
@@ -105,6 +105,9 @@ sub prepare {
 
     $task->{hostname} = $conf->{'hostname'} || "CT$vmid";
 
+    my ($id_map, $rootuid, $rootgid) = PVE::LXC::parse_id_maps($conf);
+    $task->{userns_cmd} = PVE::LXC::userns_command($id_map);
+
     PVE::LXC::foreach_mountpoint($conf, sub {
        my ($name, $data) = @_;
        my $volid = $data->{volume};
@@ -278,7 +281,8 @@ sub archive {
     my $snapdir = $task->{snapdir};
     my $tmpdir = $task->{tmpdir};
 
-    my $tar = ['tar', 'cpf', '-', '--totals',
+    my $userns_cmd = $task->{userns_cmd};
+    my $tar = [@$userns_cmd, 'tar', 'cpf', '-', '--totals',
                @$PVE::LXC::COMMON_TAR_FLAGS,
                '--one-file-system', '--warning=no-file-ignored'];