From: Martin Kletzander <mklet...@redhat.com> This way we can do the check for a particular TPM also elsewhere in the code, especially in places where we're dealing with only one TPM. The semantics is changed a little bit in a way that the function will check all the TPMs as opposed to stopping on the first one which is of the emulator type, but since a domain can currently only have one of these it was not an issue.
Signed-off-by: Martin Kletzander <mklet...@redhat.com> --- src/qemu/qemu_tpm.c | 59 ++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/src/qemu/qemu_tpm.c b/src/qemu/qemu_tpm.c index 8c104ab1b303..855d732e60d0 100644 --- a/src/qemu/qemu_tpm.c +++ b/src/qemu/qemu_tpm.c @@ -205,6 +205,40 @@ qemuTPMEmulatorCreateStorage(virDomainTPMDef *tpm, } +static bool +qemuTPMHasSharedStorage(const virQEMUDriverConfig *cfg, + const virDomainTPMDef *tpm) +{ + switch (tpm->type) { + case VIR_DOMAIN_TPM_TYPE_EMULATOR: + return virFileIsSharedFS(tpm->data.emulator.source_path, + cfg->sharedFilesystems) == 1; + case VIR_DOMAIN_TPM_TYPE_PASSTHROUGH: + case VIR_DOMAIN_TPM_TYPE_EXTERNAL: + case VIR_DOMAIN_TPM_TYPE_LAST: + break; + } + + return false; +} + + +bool +qemuTPMDomainHasSharedStorage(virQEMUDriver *driver, + virDomainDef *def) +{ + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); + size_t i; + + for (i = 0; i < def->ntpms; i++) { + if (qemuTPMHasSharedStorage(cfg, def->tpms[i])) + return true; + } + + return false; +} + + /** * qemuTPMEmulatorDeleteStorage: * @tpm: TPM definition @@ -1218,31 +1252,6 @@ qemuTPMEmulatorStart(virQEMUDriver *driver, } -bool -qemuTPMDomainHasSharedStorage(virQEMUDriver *driver, - virDomainDef *def) -{ - g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); - size_t i; - - for (i = 0; i < def->ntpms; i++) { - virDomainTPMDef *tpm = def->tpms[i]; - - switch (tpm->type) { - case VIR_DOMAIN_TPM_TYPE_EMULATOR: - return virFileIsSharedFS(tpm->data.emulator.source_path, - cfg->sharedFilesystems) == 1; - case VIR_DOMAIN_TPM_TYPE_PASSTHROUGH: - case VIR_DOMAIN_TPM_TYPE_EXTERNAL: - case VIR_DOMAIN_TPM_TYPE_LAST: - break; - } - } - - return false; -} - - bool qemuTPMCanMigrateSharedStorage(virDomainDef *def) { -- 2.50.1