[pve-devel] [PATCH container] create: don't skip arch detection on unpack errors
Wolfgang Bumiller
w.bumiller at proxmox.com
Tue Dec 1 14:55:05 CET 2015
The -ignore-unpack-errors option needs to be taken into
account in restore_archive instead of restore_and_configure
as restore_archive is also responsible for arch detection.
---
src/PVE/LXC/Create.pm | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/PVE/LXC/Create.pm b/src/PVE/LXC/Create.pm
index 1a1675e..53bcd2a 100644
--- a/src/PVE/LXC/Create.pm
+++ b/src/PVE/LXC/Create.pm
@@ -24,7 +24,7 @@ sub next_free_nbd_dev {
}
sub restore_archive {
- my ($archive, $rootdir, $conf) = @_;
+ my ($archive, $rootdir, $conf, $no_unpack_error) = @_;
my ($id_map, $rootuid, $rootgid) = PVE::LXC::parse_id_maps($conf);
my $userns_cmd = PVE::LXC::userns_command($id_map);
@@ -43,11 +43,12 @@ sub restore_archive {
if ($archive eq '-') {
print "extracting archive from STDIN\n";
- PVE::Tools::run_command($cmd, input => "<&STDIN");
+ eval { PVE::Tools::run_command($cmd, input => "<&STDIN"); };
} else {
print "extracting archive '$archive'\n";
- PVE::Tools::run_command($cmd);
+ eval { PVE::Tools::run_command($cmd); };
}
+ die $@ if $@ && !$no_unpack_error;
# determine file type of /usr/bin/file itself to get guests' architecture
$cmd = [@$userns_cmd, '/usr/bin/file', '-b', '-L', "$rootdir/usr/bin/file"];
@@ -135,8 +136,7 @@ sub recover_config {
sub restore_and_configure {
my ($vmid, $archive, $rootdir, $conf, $password, $restore, $no_unpack_error) = @_;
- eval { restore_archive($archive, $rootdir, $conf) };
- die $@ if $@ && !$no_unpack_error;
+ restore_archive($archive, $rootdir, $conf, $no_unpack_error);
if (!$restore) {
my $lxc_setup = PVE::LXC::Setup->new($conf, $rootdir); # detect OS
--
2.1.4
More information about the pve-devel
mailing list