[pve-devel] [RFC storage] work-around #6543: do not use preallocation for qcow2 on top of LVM

Fiona Ebner f.ebner at proxmox.com
Tue Jul 22 17:31:50 CEST 2025


With the default preallocation=metadata for qcow2, the image can grow
more than 'qemu-img measure' reports, see bug #6543. Currently, the
option does not seem to make a difference with 'qemu-img measure', so
that needs to be further investigated. Once it's safe to add
preallocation back here, it should also be re-added to the
qemu_img_resize() call. Also, the option should be passed along to the
qemu_img_measure() call, because otherwise, it wouldn't match the
actual creation options.

Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
---

RFC, because this stop-gap might not even be complete (but it's the
best I have right now). Needs to be furhter investigated in any case.

 src/PVE/Storage/LVMPlugin.pm | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/PVE/Storage/LVMPlugin.pm b/src/PVE/Storage/LVMPlugin.pm
index 8be2a10..fba592d 100644
--- a/src/PVE/Storage/LVMPlugin.pm
+++ b/src/PVE/Storage/LVMPlugin.pm
@@ -568,8 +568,14 @@ my sub lvm_qcow2_format {
     $class->activate_volume($storeid, $scfg, $name);
     my $path = $class->path($scfg, $name, $storeid);
 
+    # TODO with the default preallocation=metadata for qcow2, the image can grow more than
+    # 'qemu-img measure' reports, see bug #6543. Currently, the option does not seem to make a
+    # difference with 'qemu-img measure', so that needs to be further investigated. Once it's safe
+    # to add preallocation back here, it should also be re-added to the qemu_img_resize() call.
+    # Also, the option should be passed along to the qemu_img_measure() call, because otherwise,
+    # it wouldn't match the actual creation options.
     my $options = {
-        preallocation => PVE::Storage::Plugin::preallocation_cmd_opt($scfg, $fmt),
+        # preallocation => PVE::Storage::Plugin::preallocation_cmd_opt($scfg, $fmt),
     };
     if ($backing_snap) {
         my $backing_volname = get_snap_name($class, $name, $backing_snap);
@@ -927,8 +933,7 @@ sub volume_resize {
     );
 
     if (!$running && $format eq 'qcow2') {
-        my $preallocation = PVE::Storage::Plugin::preallocation_cmd_opt($scfg, $format);
-        PVE::Storage::Common::qemu_img_resize($path, $format, $size, $preallocation, 10);
+        PVE::Storage::Common::qemu_img_resize($path, $format, $size, undef, 10);
     }
 
     return 1;
-- 
2.47.2





More information about the pve-devel mailing list