[pve-devel] [PATCH v8 qemu-server 02/11] backup: fleecing: use exact size when allocating non-raw fleecing images
Wolfgang Bumiller
w.bumiller at proxmox.com
Thu Apr 3 14:31:00 CEST 2025
From: Fiona Ebner <f.ebner at proxmox.com>
A non-1KiB aligned source image could cause issues when used with
qcow2 fleecing images, e.g. for an image with size 4.5 KiB:
> Size mismatch for 'drive-tpmstate0-backup-fleecing' - sector count 10 != 9
Raw images are attached to QEMU with an explicit 'size' argument, so
rounding up before allocation doesn't matter, but it does for qcow2.
Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
---
No changes to v7.
PVE/VZDump/QemuServer.pm | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/PVE/VZDump/QemuServer.pm b/PVE/VZDump/QemuServer.pm
index 4a25889..6562aba 100644
--- a/PVE/VZDump/QemuServer.pm
+++ b/PVE/VZDump/QemuServer.pm
@@ -558,7 +558,15 @@ my sub allocate_fleecing_images {
my $name = "vm-$vmid-fleece-$n";
$name .= ".$format" if $scfg->{path};
- my $size = PVE::Tools::convert_size($di->{'block-node-size'}, 'b' => 'kb');
+ my $size;
+ if ($format ne 'raw') {
+ # Since non-raw images cannot be attached with an explicit 'size' parameter to
+ # QEMU later, pass the exact size to the storage layer. This makes qcow2
+ # fleecing images work for non-1KiB-aligned source images.
+ $size = $di->{'block-node-size'}/1024;
+ } else {
+ $size = PVE::Tools::convert_size($di->{'block-node-size'}, 'b' => 'kb');
+ }
$di->{'fleece-volid'} = PVE::Storage::vdisk_alloc(
$self->{storecfg}, $fleecing_storeid, $vmid, $format, $name, $size);
--
2.39.5
More information about the pve-devel
mailing list