From 270bfff2e1f80cb2d33da2cb5407f48e6e84c5db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= Date: Mon, 21 Nov 2022 13:16:04 +0100 Subject: [PATCH] vm_resume: fix nocheck/migrate handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit it's not deterministic whether the rename/move of the VM config triggered on the source side of a migration is already visible on the target side when vm_resume is executed. check the vmlist for the node where the config is currently located if $nocheck is set - it is now needed to add the forwarding DB entries to the bridge. this fixes an issue on busier or slower clusters, where pmxcfs hasn't yet processed the rename, and resuming would fail with an error about the config not existing. Reported-by: Dominik Csapak Signed-off-by: Fabian Grünbichler --- PVE/QemuServer.pm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 721633d8..caaf1a5a 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -6366,7 +6366,17 @@ sub vm_resume { my $res = mon_cmd($vmid, 'query-status'); my $resume_cmd = 'cont'; my $reset = 0; - my $conf = PVE::QemuConfig->load_config($vmid); + my $conf; + if ($nocheck) { + my $vmlist = PVE::Cluster::get_vmlist(); + my $node; + if (exists($vmlist->{ids}->{$vmid})) { + $node = $vmlist->{ids}->{$vmid}->{node}; + } + $conf = PVE::QemuConfig->load_config($vmid, $node); + } else { + $conf = PVE::QemuConfig->load_config($vmid); + } if ($res->{status}) { return if $res->{status} eq 'running'; # job done, go home @@ -6375,7 +6385,6 @@ sub vm_resume { } if (!$nocheck) { - PVE::QemuConfig->check_lock($conf) if !($skiplock || PVE::QemuConfig->has_lock($conf, 'backup')); }