qemu: tpm: Conditionally create storage on incoming migration

Do not create storage if the TPM state files are on shared storage and
there's an incoming migration since in this case the storage directory
must already exist. Also do not run swtpm_setup in this case.

Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Stefan Berger 2022-10-24 06:28:44 -04:00 committed by Michal Privoznik
parent 384138d790
commit 68103e9daf

View File

@ -556,11 +556,20 @@ qemuTPMEmulatorBuildCommand(virDomainTPMDef *tpm,
int pwdfile_fd = -1;
int migpwdfile_fd = -1;
const unsigned char *secretuuid = NULL;
bool create_storage = true;
if (!swtpm)
return NULL;
if (qemuTPMEmulatorCreateStorage(tpm, &created, swtpm_user, swtpm_group) < 0)
/* Do not create storage and run swtpm_setup on incoming migration over
* shared storage
*/
if (incomingMigration &&
virFileIsSharedFS(tpm->data.emulator.storagepath) == 1)
create_storage = false;
if (create_storage &&
qemuTPMEmulatorCreateStorage(tpm, &created, swtpm_user, swtpm_group) < 0)
return NULL;
if (tpm->data.emulator.hassecretuuid)