[PATCH v2 0/9] qemu: tpm: Add support for migration across shared storage

Stefan Berger stefanb at linux.ibm.com
Mon Oct 17 22:23:11 UTC 2022



On 10/6/22 09:26, Michal Prívozník wrote:
> On 10/5/22 16:01, Stefan Berger wrote:
>> This series of patches adds support for migrating vTPMs across hosts whose
>> storage has been set up to share the directory structure holding the state
>> of the TPM (swtpm). A new migration flag VIR_MIGRATE_TPM_SHARED_STORAGE is
>> added to enable this. This flag influences the management of the directory
>> structure holding the TPM state, which for example is only removed when a
>> domain is undefined and not when a VM is removed on the migration source
>> host. Further, when shared storage is used then security labeling on the
>> destination side is skipped assuming that the labeling was already done on
>> the source side.
>>
>> I have tested this with an NFS setup where I had to turn SELinux off on
>> the hosts since the SELinux MLS range labeling is not supported by NFS.
>>
>> Shared storage migration requires (upcoming) swtpm v0.8.
>>
>>     Stefan
>>
>> Stefan Berger (9):
>>    util: Add parsing support for swtpm's cmdarg-migration capability
>>    qemu: Introduced VIR_MIGRATE_TPM_SHARED_STORAGE for TPM migration
>>    qemu: tpm: Conditionally create storage on incoming migration
>>    qemu: tpm: Pass --migration option to swtpm if supported
>>    qemu: tpm: Avoid security labels on incoming migration with shared
>>      storage
>>    qemu: tpm: Require UNDEFINE_TPM to be set to remove TPM state
>>    qemu: tpm: Determine whether to remove TPM state during migration
>>    qemu: tpm: Enable migration with VIR_MIGRATE_TPM_SHARED_STORAGE
>>    virsh: Add support for --tpm-shared-storage flag for migration
>>
>>   docs/manpages/virsh.rst          |  6 +++
>>   include/libvirt/libvirt-domain.h |  8 +++
>>   src/conf/domain_conf.h           |  1 +
>>   src/qemu/qemu_driver.c           |  4 +-
>>   src/qemu/qemu_extdevice.c        |  5 +-
>>   src/qemu/qemu_extdevice.h        |  3 +-
>>   src/qemu/qemu_migration.c        | 23 +++++++--
>>   src/qemu/qemu_migration.h        |  1 +
>>   src/qemu/qemu_process.c          | 10 ++--
>>   src/qemu/qemu_process.h          |  6 ++-
>>   src/qemu/qemu_saveimage.c        |  2 +-
>>   src/qemu/qemu_snapshot.c         |  4 +-
>>   src/qemu/qemu_tpm.c              | 87 ++++++++++++++++++++++++++++----
>>   src/qemu/qemu_tpm.h              | 24 ++++++++-
>>   src/util/virtpm.c                |  1 +
>>   src/util/virtpm.h                |  1 +
>>   tools/virsh-domain.c             |  7 +++
>>   17 files changed, 164 insertions(+), 29 deletions(-)
>>
> 
> Overall, I like this. I've raised couple of points in my review. I've
> made suggested changes as 'fixup' commits and pushed everything on my
> gitlab:
> 
> https://gitlab.com/MichalPrivoznik/libvirt/-/commits/tpm_migration_v2
> 
> (except for private data for TPM which I'm suggesting somewhere in
> review). Feel free to take them an squash them in. Or just parts of it.
> I mean, I wasn't sure where exactly I should stop passing 'flags' and
> set 'sharedStorage' bool argument. Maybe I was too aggressive and flags
> can be passed all the way down.
> 

I forgot about your series..  I put a v2 with fixes here now:

https://github.com/stefanberger/libvirt-tpm/tree/swtpm_shared_storage.v2.fixed

It has the private data support and a fix for post migration cleanup. The new flag is still in there...

    Stefan



> Michal
> 



More information about the libvir-list mailing list