* [pve-devel] [PATCH qemu-server 1/2] fix #6882: backup provider api: fix backup with TPM state by correctly generating node name
2025-10-03 10:33 [pve-devel] [PATCH qemu-server 0/2] fix #6882: backup provider api: fix backup with TPM state by correctly generating node name Fiona Ebner
@ 2025-10-03 10:33 ` Fiona Ebner
2025-10-03 10:33 ` [pve-devel] [PATCH qemu-server 2/2] backup: fleecing: avoid warning when querying block node size for TPM state Fiona Ebner
2025-10-03 11:53 ` [pve-devel] applied-series: [PATCH qemu-server 0/2] fix #6882: backup provider api: fix backup with TPM state by correctly generating node name Fabian Grünbichler
2 siblings, 0 replies; 4+ messages in thread
From: Fiona Ebner @ 2025-10-03 10:33 UTC (permalink / raw)
To: pve-devel
The backup-access API in QEMU expects the '-backup' suffix to be
present for the TPM state fleecing image too. This is a regression of
the switch to using blockdev for fleecing images with commit f92c1fa0
("backup: use blockdev for fleecing images"). Add special handling to
the fleecing_node_name() helper to fix it.
Fleecing backups to native plugins do not use a dedicated image for
the TPM state, so this only affected the backup provider API.
Fixes: f92c1fa0 ("backup: use blockdev for fleecing images")
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
src/PVE/QemuServer/Blockdev.pm | 6 ++++--
src/PVE/VZDump/QemuServer.pm | 1 +
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/PVE/QemuServer/Blockdev.pm b/src/PVE/QemuServer/Blockdev.pm
index 8e6749e8..8fa5eb51 100644
--- a/src/PVE/QemuServer/Blockdev.pm
+++ b/src/PVE/QemuServer/Blockdev.pm
@@ -43,7 +43,9 @@ my sub tpm_backup_node_name {
}
my sub fleecing_node_name {
- my ($type, $drive_id) = @_;
+ my ($type, $drive_id, $options) = @_;
+
+ $drive_id .= '-backup' if $options->{'tpm-backup'};
if ($type eq 'fmt') {
return "drive-$drive_id-fleecing"; # this is the top node for fleecing
@@ -114,7 +116,7 @@ sub get_block_info {
my sub get_node_name {
my ($type, $drive_id, $volid, $options) = @_;
- return fleecing_node_name($type, $drive_id) if $options->{fleecing};
+ return fleecing_node_name($type, $drive_id, $options) if $options->{fleecing};
return tpm_backup_node_name($type, $drive_id) if $options->{'tpm-backup'};
my $snap = $options->{'snapshot-name'};
diff --git a/src/PVE/VZDump/QemuServer.pm b/src/PVE/VZDump/QemuServer.pm
index 5b94c369..b84957be 100644
--- a/src/PVE/VZDump/QemuServer.pm
+++ b/src/PVE/VZDump/QemuServer.pm
@@ -659,6 +659,7 @@ my sub attach_fleecing_images {
};
my $options = { 'fleecing' => 1 };
+ $options->{'tpm-backup'} = 1 if $interface eq 'tpmstate';
# Specify size explicitly, to make it work if storage backend rounded up size for
# fleecing image when allocating.
$options->{size} = $di->{'block-node-size'} if $format eq 'raw';
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* [pve-devel] [PATCH qemu-server 2/2] backup: fleecing: avoid warning when querying block node size for TPM state
2025-10-03 10:33 [pve-devel] [PATCH qemu-server 0/2] fix #6882: backup provider api: fix backup with TPM state by correctly generating node name Fiona Ebner
2025-10-03 10:33 ` [pve-devel] [PATCH qemu-server 1/2] " Fiona Ebner
@ 2025-10-03 10:33 ` Fiona Ebner
2025-10-03 11:53 ` [pve-devel] applied-series: [PATCH qemu-server 0/2] fix #6882: backup provider api: fix backup with TPM state by correctly generating node name Fabian Grünbichler
2 siblings, 0 replies; 4+ messages in thread
From: Fiona Ebner @ 2025-10-03 10:33 UTC (permalink / raw)
To: pve-devel
Currently, there only is a warning that the fallback, being the size
queried from the storage, is used. This should work in all cases, but
there are plans for supporting TPM state as a FUSE/NBD export from an
underlying qcow2 image where it might still work, but the
correspondence of size between the attached block node in QEMU and the
storage layer already becomes much more blurry. Avoid the warning and
future-proof by also querying the size for the TPM state directly from
the attached block node in QEMU.
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
src/PVE/VZDump/QemuServer.pm | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/src/PVE/VZDump/QemuServer.pm b/src/PVE/VZDump/QemuServer.pm
index b84957be..55a3f55b 100644
--- a/src/PVE/VZDump/QemuServer.pm
+++ b/src/PVE/VZDump/QemuServer.pm
@@ -1128,9 +1128,22 @@ sub query_block_node_sizes {
for my $diskinfo ($disks->@*) {
my $drive_key = $diskinfo->{virtdev};
- $drive_key .= "-backup" if $drive_key eq 'tpmstate0';
- my $block_node_size =
- eval { $block_info->{$drive_key}->{inserted}->{image}->{'virtual-size'}; };
+
+ my $block_node_size;
+ if ($drive_key eq 'tpmstate0') {
+ # There is no front-end device for TPM state, so it's not included in the result of
+ # get_block_info(). Note that it is always attached with the same explicit node name.
+ my $named_block_node_info = mon_cmd($vmid, 'query-named-block-nodes');
+ for my $info ($named_block_node_info->@*) {
+ next if $info->{'node-name'} ne 'drive-tpmstate0-backup';
+ $block_node_size = $info->{image}->{'virtual-size'};
+ last;
+ }
+ } else {
+ $block_node_size =
+ eval { $block_info->{$drive_key}->{inserted}->{image}->{'virtual-size'}; };
+ }
+
if (!$block_node_size) {
$self->loginfo(
"could not determine block node size of drive '$drive_key' - using fallback");
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* [pve-devel] applied-series: [PATCH qemu-server 0/2] fix #6882: backup provider api: fix backup with TPM state by correctly generating node name
2025-10-03 10:33 [pve-devel] [PATCH qemu-server 0/2] fix #6882: backup provider api: fix backup with TPM state by correctly generating node name Fiona Ebner
2025-10-03 10:33 ` [pve-devel] [PATCH qemu-server 1/2] " Fiona Ebner
2025-10-03 10:33 ` [pve-devel] [PATCH qemu-server 2/2] backup: fleecing: avoid warning when querying block node size for TPM state Fiona Ebner
@ 2025-10-03 11:53 ` Fabian Grünbichler
2 siblings, 0 replies; 4+ messages in thread
From: Fabian Grünbichler @ 2025-10-03 11:53 UTC (permalink / raw)
To: pve-devel, Fiona Ebner
On Fri, 03 Oct 2025 12:33:09 +0200, Fiona Ebner wrote:
> The backup-access API in QEMU expects the '-backup' suffix to be
> present for the TPM state fleecing image too. This is a regression of
> the switch to using blockdev for fleecing images with commit f92c1fa0
> ("backup: use blockdev for fleecing images"). Add special handling to
> the fleecing_node_name() helper to fix it.
>
> Fleecing backups to native plugins do not use a dedicated image for
> the TPM state, so this only affected the backup provider API.
>
> [...]
Applied, thanks!
[1/2] fix #6882: backup provider api: fix backup with TPM state by correctly generating node name
commit: cd82e3f270d9310076da248c3f699c2a460d9628
[2/2] backup: fleecing: avoid warning when querying block node size for TPM state
commit: 33c0169fefe6a7d5a011c2539df59356674335e2
Best regards,
--
Fabian Grünbichler <f.gruenbichler@proxmox.com>
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 4+ messages in thread