public inbox for pve-devel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal