[pve-devel] [PATCH qemu-server v5 16/32] backup: fleecing: use exact size when allocating non-raw fleecing images
Fiona Ebner
f.ebner at proxmox.com
Fri Mar 21 14:48:36 CET 2025
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>
---
New in v5.
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 4a258895..6562aba6 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