From b406ab6342f26bd147c50046057be6892f6314a1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Dominic=20J=C3=A4ger?= Date: Mon, 28 Oct 2019 12:47:32 +0100 Subject: [PATCH] replace remaining vm_destroy call-sites with destroy_vm MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This function has been used in one place only into which we inlined its functionality. Removing it avoids confusion between vm_destroy and vm_destroy. The whole $importfn is executed in a lock_config_full. As a consequence, for the inlined code: 1. lock_config is redundant 2. it is not possible that the VM has been started (check_running) in the meanwhile Additionally, it is not possible that the "lock" property has been written into the VM's config file (check_lock) in the meanwhile Add warning after eval so that it does not go unnoticed if it ever comes into action. Signed-off-by: Dominic Jäger --- PVE/CLI/qm.pm | 5 +++-- PVE/QemuServer.pm | 15 --------------- 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/PVE/CLI/qm.pm b/PVE/CLI/qm.pm index 2c363735..235f6135 100755 --- a/PVE/CLI/qm.pm +++ b/PVE/CLI/qm.pm @@ -645,7 +645,6 @@ __PACKAGE__->register_method ({ # reload after disks entries have been created $conf = PVE::QemuConfig->load_config($vmid); - PVE::QemuConfig->check_lock($conf); my $firstdisk = PVE::QemuServer::resolve_first_disk($conf); $conf->{bootdisk} = $firstdisk if $firstdisk; PVE::QemuConfig->write_config($vmid, $conf); @@ -654,7 +653,9 @@ __PACKAGE__->register_method ({ my $err = $@; if ($err) { my $skiplock = 1; - eval { PVE::QemuServer::vm_destroy($storecfg, $vmid, $skiplock); }; + # eval for additional safety in error path + eval { PVE::QemuServer::destroy_vm($storecfg, $vmid, undef, $skiplock) }; + warn "Could not destroy VM $vmid: $@" if "$@"; die "import failed - $err"; } }; diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index a11153ec..bfe6662d 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -5937,21 +5937,6 @@ sub vm_sendkey { }); } -sub vm_destroy { - my ($storecfg, $vmid, $skiplock) = @_; - - PVE::QemuConfig->lock_config($vmid, sub { - - my $conf = PVE::QemuConfig->load_config($vmid); - - if (!check_running($vmid)) { - destroy_vm($storecfg, $vmid, undef, $skiplock); - } else { - die "VM $vmid is running - destroy failed\n"; - } - }); -} - # vzdump restore implementaion sub tar_archive_read_firstfile { -- 2.39.5