From 670f947ee86a9046fe2a5cdc74c7aa18e99a4cba Mon Sep 17 00:00:00 2001 From: Fiona Ebner Date: Mon, 27 Mar 2023 11:01:05 +0200 Subject: [PATCH] backup: prepare: fix format detection for disks without storage ID which is the case for passed-through disks. The qemu_img_format() function cannot correctly handle those, and it's not safe to assume they are raw (it's most likely, but not guaranteed), so just use the storage method for the format like it was done before commit efa3aa24 ("avoid list context for volume_size_info calls"). This will use 'qemu-img info' to get the actual format. Reported in the community forum: https://forum.proxmox.com/threads/124794/ https://forum.proxmox.com/threads/124823/ https://forum.proxmox.com/threads/124818/ Fixes: efa3aa24 ("avoid list context for volume_size_info calls") Signed-off-by: Fiona Ebner Tested-by: Friedrich Weber Signed-off-by: Thomas Lamprecht --- PVE/VZDump/QemuServer.pm | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/PVE/VZDump/QemuServer.pm b/PVE/VZDump/QemuServer.pm index add26ad6..036a7228 100644 --- a/PVE/VZDump/QemuServer.pm +++ b/PVE/VZDump/QemuServer.pm @@ -119,11 +119,20 @@ sub prepare { } next if !$path; - my $size = eval { PVE::Storage::volume_size_info($self->{storecfg}, $volid, 5) }; - die "no such volume '$volid'\n" if $@; + my ($size, $format); + if ($storeid) { + # The call in list context can be expensive for certain plugins like RBD, just get size + $size = eval { PVE::Storage::volume_size_info($self->{storecfg}, $volid, 5) }; + die "no such volume '$volid'\n" if $@; - my $scfg = PVE::Storage::storage_config($self->{storecfg}, $storeid); - my $format = PVE::QemuServer::qemu_img_format($scfg, $volname); + my $scfg = PVE::Storage::storage_config($self->{storecfg}, $storeid); + $format = PVE::QemuServer::qemu_img_format($scfg, $volname); + } else { + ($size, $format) = eval { + PVE::Storage::volume_size_info($self->{storecfg}, $volid, 5); + }; + die "no such volume '$volid'\n" if $@; + } my $diskinfo = { path => $path, -- 2.39.5