tpmstate0 is already included in `get_vm_volumes`, and our only storage plugin that has unmap_volume implemented is the RBDPlugin, where we call unmap in `deactivate_volume`. So it's already ummapped by the `deactivate_volumes` calls above.
For third-party storage plugins, it's natural to expect that deactivate_volume() would also remove a mapping for the volume just like RBDPlugin does. While there is an explicit map_volume() call in start_swtpm(), a third-party plugin might expect an explicit unmap_volume() call too. However, the order of calls right now is 1. activate_volume() 2. map_volume() 3. deactivate_volume() 4. unmap_volume() Which seems like it could cause problems already for third-party plugins relying on an explicit unmap call. All that said, it is unlikely that a third-party plugin breaks. If it really happens, it can be discussed/adapted to the actual needs still. Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> Acked-by: Fiona Ebner <f.eb...@proxmox.com> --- changes from v3: * include rationale for 3rd party plugins (thanks @fiona) PVE/QemuServer.pm | 8 -------- 1 file changed, 8 deletions(-) diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 5df0c96d..bbad02f4 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -6175,14 +6175,6 @@ sub vm_stop_cleanup { if (!$keepActive) { my $vollist = get_vm_volumes($conf); PVE::Storage::deactivate_volumes($storecfg, $vollist); - - if (my $tpmdrive = $conf->{tpmstate0}) { - my $tpm = parse_drive("tpmstate0", $tpmdrive); - my ($storeid, $volname) = PVE::Storage::parse_volume_id($tpm->{file}, 1); - if ($storeid) { - PVE::Storage::unmap_volume($storecfg, $tpm->{file}); - } - } } foreach my $ext (qw(mon qmp pid vnc qga)) { -- 2.39.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel