[pve-devel] [PATCH container] fix #2117: don't keep custom idmap in pct pipe restore

Oguz Bektas o.bektas at proxmox.com
Mon Mar 4 11:02:53 CET 2019


while doing a pct restore operation, custom id mappings were being
obtained from the archive file to be used in the newly created container.
this fails when using pipe restore, since there is no file for the
mappings to be recovered from.

Co-Authored by: Mira Limbeck <m.limbeck at proxmox.com>
Signed-off-by: Oguz Bektas <o.bektas at proxmox.com>
---
 src/PVE/API2/LXC.pm | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm
index 27d26d5..1cc2979 100644
--- a/src/PVE/API2/LXC.pm
+++ b/src/PVE/API2/LXC.pm
@@ -331,10 +331,11 @@ __PACKAGE__->register_method({
 	    my $vollist = [];
 	    eval {
 		my $orig_mp_param; # only used if $restore
+		my $orig_conf;
 		if ($restore) {
 		    die "can't overwrite running container\n" if PVE::LXC::check_running($vmid);
-		    (my $orig_conf, $orig_mp_param) = PVE::LXC::Create::recover_config($archive);
-		    if ($is_root) {
+		    if ($is_root && $archive ne '-') {
+			($orig_conf, $orig_mp_param) = PVE::LXC::Create::recover_config($archive);
 			# When we're root call 'restore_configuration' with ristricted=0,
 			# causing it to restore the raw lxc entries, among which there may be
 			# 'lxc.idmap' entries. We need to make sure that the extracted contents
@@ -344,6 +345,9 @@ __PACKAGE__->register_method({
 		}
 		if ($storage_only_mode) {
 		    if ($restore) {
+			if (!defined $orig_mp_param) {
+			    (undef, $orig_mp_param) = PVE::LXC::Create::recover_config($archive);
+			}
 			$mp_param = $orig_mp_param;
 			die "rootfs configuration could not be recovered, please check and specify manually!\n"
 			    if !defined($mp_param->{rootfs});
-- 
2.11.0




More information about the pve-devel mailing list