From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [IPv6:2a0f:8001:1:32::40]) by lore.proxmox.com (Postfix) with ESMTPS id 8E13D1FF0B0 for ; Tue, 27 Oct 2026 11:17:37 +0100 (CET) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id BED2521665; Tue, 27 Oct 2026 11:17:30 +0100 (CET) From: Thomas Ellmenreich To: pve-devel@lists.proxmox.com Subject: [PATCH qemu-server 3/3] clone disk: read actual size when cloning TPM drive Date: Tue, 27 Oct 2026 11:17:23 +0100 Message-ID: <20261027101723.144576-4-t.ellmenreich@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20261027101723.144576-1-t.ellmenreich@proxmox.com> References: <20261027101723.144576-1-t.ellmenreich@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1793096246138 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.379 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: PRGPC5M5QTY7EQI6S64DWG7DUGWYPVN3 X-Message-ID-Hash: PRGPC5M5QTY7EQI6S64DWG7DUGWYPVN3 X-MailFrom: t.ellmenreich@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Thomas Ellmenreich X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: When cloning a TPM drive, don't assume the default size of 4MiB, instead read and then use the actual size. The default size is constant, but can be changed, if the granularity of the backing storage is bigger than 4MiB. This allows TPM volumes on storages with a larger granularity than 4MiB be moved to different storages without producing an error. Suggested-by: Fiona Ebner Signed-off-by: Thomas Ellmenreich Reviewed-by: Fiona Ebner --- src/PVE/QemuServer.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/PVE/QemuServer.pm b/src/PVE/QemuServer.pm index 954acd05..0c130041 100644 --- a/src/PVE/QemuServer.pm +++ b/src/PVE/QemuServer.pm @@ -78,6 +78,7 @@ use PVE::QemuServer::Drive qw( parse_drive print_drive storage_allows_io_uring_default + get_tpmstate_size ); use PVE::QemuServer::DriveDevice qw(print_drivedevice_full scsihw_infos); use PVE::QemuServer::Machine; @@ -7888,7 +7889,7 @@ sub clone_disk { } elsif ($dst_drivename eq 'efidisk0') { $size = $efisize or die "internal error - need to specify EFI disk size\n"; } elsif ($dst_drivename eq 'tpmstate0') { - $size = PVE::QemuServer::Drive::TPMSTATE_DISK_SIZE; + $size = get_tpmstate_size($drive->{file}, $storecfg); } else { clone_disk_check_io_uring( $vmid, $drive, $storecfg, $src_storeid, $storeid, $use_drive_mirror, -- 2.47.3