[PATCH v4 5/7] qemu: tpm: Pass --migration option to swtpm if supported and needed
Stefan Berger
stefanb at linux.ibm.com
Tue Nov 8 14:09:46 UTC 2022
On 11/7/22 03:31, Michal Prívozník wrote:
> On 10/24/22 12:28, Stefan Berger wrote:
>> Pass the --migration option to swtpm if swptm supports it (starting
>> with v0.8) and if the TPM's state is written on shared storage. If this
>> is the case apply the 'release-lock-outgoing' parameter with this
>> option and apply the 'incoming' parameter for incoming migration so that
>> swtpm releases the file lock on the source side when the state is migrated
>> and locks the file on the destination side when the state is received.
>>
>> If a started swtpm instance is running with the necessary options of
>> migrating with share storage then remember this with a flag in the
>> virDomainTPMPrivateDef.
>>
>> Report an error if swtpm does not support the --migration option and an
>> incoming migration across shared storage is requested.
>>
>> Signed-off-by: Stefan Berger <stefanb at linux.ibm.com>
>> ---
>> src/qemu/qemu_migration.c | 10 ++++++++
>> src/qemu/qemu_tpm.c | 48 +++++++++++++++++++++++++++++++++++++--
>> src/qemu/qemu_tpm.h | 3 +++
>> 3 files changed, 59 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
>> index 16bf7ac178..2aa0b6e89e 100644
>> --- a/src/qemu/qemu_migration.c
>> +++ b/src/qemu/qemu_migration.c
>> @@ -2786,6 +2786,7 @@ qemuMigrationSrcBegin(virConnectPtr conn,
>> g_autofree char *xml = NULL;
>> char *ret = NULL;
>> virDomainAsyncJob asyncJob;
>> + int rc;
>>
>> if (cfg->migrateTLSForce &&
>> !(flags & VIR_MIGRATE_TUNNELLED) &&
>> @@ -2795,6 +2796,15 @@ qemuMigrationSrcBegin(virConnectPtr conn,
>> goto cleanup;
>> }
>>
>> + rc = qemuTPMHasSharedStorage(driver, vm->def);
>> + if (rc < 0)
>> + goto cleanup;
>> + if (rc == 1 && !qemuTPMCanMigrateSharedStorage(vm->def)) {
>> + virReportError(VIR_ERR_NO_SUPPORT, "%s",
>> + _("the running swtpm does not support migration with shared storage"));
>> + goto cleanup;
>> + }
>> +
>
> This check is correct, but as I said in my other reply, I think it
> should live in qemuMigrationSrcIsAllowed().
I can move it.
Stefan
>
> Michal
>
More information about the libvir-list
mailing list