
On Fri, 2021-11-26 at 16:43 +0100, Martin Kletzander wrote:
On Wed, Nov 10, 2021 at 10:24:25PM +0800, Luke Yue wrote:
Currently it will only be used in the test driver.
Signed-off-by: Luke Yue <lukedyue@gmail.com> --- src/conf/domain_conf.c | 67 ++++++++++++++++++++++++++++++++++++++++ src/conf/domain_conf.h | 6 ++++ src/libvirt_private.syms | 2 ++ 3 files changed, 75 insertions(+)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 3193120b79..512bfab9e9 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -16931,6 +16931,73 @@ virDomainVsockDefEquals(const virDomainVsockDef *a, }
+static bool +virDomainTPMDefEquals(const virDomainTPMDef *a, + const virDomainTPMDef *b) +{ + if (a->type != b->type) + return false; + + if (a->model != b->model) + return false; + + if (a->version != b->version) + return false; + + if (a->type == VIR_DOMAIN_TPM_TYPE_PASSTHROUGH) { + if (STRNEQ_NULLABLE(a-
data.passthrough.source.data.file.path, + b- data.passthrough.source.data.file.path))
This will not compile as `source` is a pointer here.
I just noticed in commit 42b0000, the `source` was changed to be a pointer, will fix in next version.
data.emulator.hassecretuuid) + return false;
+ return false; + } else { + if (a->data.emulator.hassecretuuid != b- + + if (a->data.emulator.hassecretuuid == true && + memcmp(a->data.emulator.secretuuid, + b->data.emulator.secretuuid, + VIR_UUID_BUFLEN)) + return false; + + if (a->data.emulator.persistent_state != + b->data.emulator.persistent_state)
Also it would make sense to try to detach a device without all the information, e.g. those that libvirt itself adds by default if they are missing, or in this case when persistent_state is set to the specified default (in formatdomain.html this is said to be "no" currently, but not filled in). Luckily the test driver itself does not do any of this, so I guess it's fine here.
Hmm, I will look into how libvirt adds these default devices and refine this function in next version or in the future. Thanks, Luke