[pve-devel] [PATCH qemu-server v6 1/3] adapt linked clone check to not die if an error occurs during check

Michael Köppl m.koeppl at proxmox.com
Tue May 20 11:08:16 CEST 2025


Align error handling behavior when checking for linked clones with the
rest of destroy_vm's error handling approach. Unlike the LXC destroy
implementation, this version continues execution when encountering
errors during the check, since:

1. The same validation occurs later in the process
2. This prevents potential crashes
3. The VM removal will still be blocked if the volume has linked clones

Align error handling behavior when checking for linked clones with the
rest of destroy_vm's error handling approach. Unlike the LXC implementation,
this version continues execution when encountering errors during the check,
since:

Co-authored-by: Stefan Hrdlicka
Signed-off-by: Michael Köppl <m.koeppl at proxmox.com>
---
 PVE/QemuServer.pm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 577959a4..e02bf7d4 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -2116,9 +2116,10 @@ sub destroy_vm {
 		my $volid = $drive->{file};
 		return if !$volid || $volid =~ m|^/|;
 
-		die "base volume '$volid' is still in use by linked cloned\n"
-		    if PVE::Storage::volume_is_base_and_used($storecfg, $volid);
-
+		# errors that occur during this check are not propagated since the
+		# same check is done again in vdisk_free
+		my $result = eval { PVE::Storage::volume_is_base_and_used($storecfg, $volid) };
+		die "base volume '$volid' is still in use by linked cloned\n" if $result;
 	});
     }
 
-- 
2.39.5





More information about the pve-devel mailing list