all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [PATCH storage] fix #7598: qemu-img resize: tolerate timeout if resize succeeded
@ 2026-06-03  8:25 Jakob Klocker
  0 siblings, 0 replies; only message in thread
From: Jakob Klocker @ 2026-06-03  8:25 UTC (permalink / raw)
  To: pve-devel; +Cc: Jakob Klocker

On slow storages there is a chance the 10 second timeout is triggered
when resizing a volume. If the timeout fires while the resize is in a
certain state near the end, the operation can still complete
successfully even though a timeout error is thrown. In that case the
config is never updated and keeps the old, wrong size.

Because the config is out of sync, the volume is then displayed with
the wrong size in the web interface.

Link: https://bugzilla.proxmox.com/show_bug.cgi?id=7598
Signed-off-by: Jakob Klocker <j.klocker@proxmox.com>
---
 src/PVE/Storage/Common.pm | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/PVE/Storage/Common.pm b/src/PVE/Storage/Common.pm
index 3932aee..ee2ea00 100644
--- a/src/PVE/Storage/Common.pm
+++ b/src/PVE/Storage/Common.pm
@@ -277,7 +277,17 @@ sub qemu_img_resize {
     push $cmd->@*, '-f', $format, $path, $size;
 
     $timeout = 10 if !$timeout;
-    run_command($cmd, timeout => $timeout);
+    eval { run_command($cmd, timeout => $timeout); };
+    if (my $err = $@) {
+
+        die $err if $err !~ /got timeout/;
+
+        my $info = JSON::decode_json(qemu_img_info($path, $format));
+        die $err if !$info;
+
+        my $actual_size = $info->{'virtual-size'};
+        die $err if !defined($actual_size) || $actual_size < $size;
+    }
 }
 
 1;
-- 
2.47.3




^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-06-03  8:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-03  8:25 [PATCH storage] fix #7598: qemu-img resize: tolerate timeout if resize succeeded Jakob Klocker

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal