[PATCH qemu-server 8/8] blockdev: add underlay resize

Tiago Sousa joao.sousa at eurotux.com
Fri Oct 17 13:25:33 CEST 2025


Signed-off-by: Tiago Sousa <joao.sousa at eurotux.com>
---
 src/PVE/QemuServer/Blockdev.pm | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/PVE/QemuServer/Blockdev.pm b/src/PVE/QemuServer/Blockdev.pm
index 78769198..5da1abd9 100644
--- a/src/PVE/QemuServer/Blockdev.pm
+++ b/src/PVE/QemuServer/Blockdev.pm
@@ -725,6 +725,24 @@ sub resize {
     );
 }
 
+sub underlay_resize {
+    my ($storecfg, $vmid, $drive_id, $volid) = @_;
+
+    my $running = PVE::QemuServer::Helpers::vm_running_locally($vmid);
+
+    # get backing_snap
+    my $snapshots = PVE::Storage::volume_snapshot_info($storecfg, $volid);
+    my $backing_snap = $snapshots->{current}->{parent};
+    my $size = PVE::Storage::volume_underlay_resize($storecfg, $volid, $backing_snap);
+
+    return if !$running;
+    my $block_info = get_block_info($vmid);
+    my $inserted = $block_info->{$drive_id}->{inserted}
+        or die "no block node inserted for drive '$drive_id'\n";
+
+    set_write_threshold($storecfg, $vmid, $drive_id, $volid);
+}
+
 my sub blockdev_change_medium {
     my ($storecfg, $vmid, $qdev_id, $drive) = @_;
 
@@ -861,7 +879,7 @@ sub block_set_write_threshold {
 sub compute_write_threshold {
     my ($storecfg, $scfg, $volid) = @_;
 
-    my $lv_size = PVE::Storage::volume_size_info($storecfg, $volid, 5);
+    my $lv_size = PVE::Storage::volume_underlay_size_info($storecfg, $volid, 5);
 
     my $write_threshold = $lv_size - $scfg->{chunksize} * $scfg->{'chunk-percentage'};
 
-- 
2.47.3




More information about the pve-devel mailing list