On Tue, Jun 23, 2026 at 06:26:02 +0000, Abhisek Panda wrote:
> Append 'x509' to the function identifiers managing the tls-creds-x509
> objects. This defines the functions' scope and prevents naming
> conflicts with the introduction of functions related to tls-creds-psk
> in subsequent commits.
>
> Additionally, update the TLS x509 object alias from "obj%s_tls0" to
> "obj%s_tlsx509_0" along with relevant testcase changes.
>
> Suggested-by: Tejus GK <[email protected]>
> Signed-off-by: Abhisek Panda <[email protected]>
> ---
> src/qemu/qemu_alias.c | 8 +-
> src/qemu/qemu_alias.h | 2 +-
> src/qemu/qemu_backup.c | 2 +-
> src/qemu/qemu_command.c | 2 +-
> src/qemu/qemu_domain.c | 2 +-
> src/qemu/qemu_hotplug.c | 76 +++++++++----------
> src/qemu/qemu_hotplug.h | 26 +++----
> src/qemu/qemu_migration.c | 24 +++---
> src/qemu/qemu_migration_params.c | 44 +++++------
> src/qemu/qemu_migration_params.h | 14 ++--
> src/qemu/qemu_postparse.c | 2 +-
> tests/qemumigparamsdata/tls-enabled.json | 2 +-
> tests/qemumigparamsdata/tls-enabled.reply | 2 +-
> tests/qemumigparamsdata/tls-enabled.xml | 2 +-
> tests/qemumigparamsdata/tls-hostname.json | 2 +-
> tests/qemumigparamsdata/tls-hostname.reply | 2 +-
> tests/qemumigparamsdata/tls-hostname.xml | 2 +-
> tests/qemumonitorjsontest.c | 4 +-
> tests/qemustatusxml2xmldata/upgrade-out.xml | 2 +-
> .../chardev-backends-json.x86_64-9.1.0.args | 8 +-
> .../chardev-backends-json.x86_64-latest.args | 8 +-
> .../chardev-backends.x86_64-9.1.0.args | 8 +-
> .../chardev-backends.x86_64-latest.args | 8 +-
> ...rk-tlsx509-nbd-hostname.x86_64-latest.args | 6 +-
> ...isk-network-tlsx509-nbd.x86_64-latest.args | 6 +-
> ...-tlsx509-chardev-verify.x86_64-latest.args | 4 +-
> ...ial-tcp-tlsx509-chardev.x86_64-latest.args | 4 +-
> ...-tlsx509-secret-chardev.x86_64-latest.args | 4 +-
> 28 files changed, 138 insertions(+), 138 deletions(-)
>
> diff --git a/src/qemu/qemu_alias.c b/src/qemu/qemu_alias.c
> index 400ce73283..b41794a5fa 100644
> --- a/src/qemu/qemu_alias.c
> +++ b/src/qemu/qemu_alias.c
> @@ -872,15 +872,15 @@ qemuAliasForSecret(const char *parentalias,
> return g_strdup_printf("%s-secret%zu", parentalias, secret_idx);
> }
>
> -/* qemuAliasTLSObjFromSrcAlias
> +/* qemuAliasTLSx509ObjFromSrcAlias
> * @srcAlias: Pointer to a source alias string
> *
> - * Generate and return a string to be used as the TLS object alias
> + * Generate and return a string to be used as the TLS X.509 object alias
> */
> char *
> -qemuAliasTLSObjFromSrcAlias(const char *srcAlias)
> +qemuAliasTLSx509ObjFromSrcAlias(const char *srcAlias)
> {
> - return g_strdup_printf("obj%s_tls0", srcAlias);
> + return g_strdup_printf("obj%s_tlsx509_0", srcAlias);
> }
Since there is only one TLS object possible I don't see a reason for
changing this. Additionally
> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
> index 5be567b510..d2add3f656 100644
> --- a/src/qemu/qemu_hotplug.c
> +++ b/src/qemu/qemu_hotplug.c
> @@ -1702,12 +1702,12 @@ void
> qemuDomainDelTLSObjects(virDomainObj *vm,
> virDomainAsyncJob asyncJob,
> const char *secAlias,
> - const char *tlsAlias)
> + const char *tlsx509Alias)
> {
> qemuDomainObjPrivate *priv = vm->privateData;
> virErrorPtr orig_err;
>
> - if (!tlsAlias && !secAlias)
> + if (!tlsx509Alias && !secAlias)
> return;
>
> virErrorPreserveLast(&orig_err);
> @@ -1715,8 +1715,8 @@ qemuDomainDelTLSObjects(virDomainObj *vm,
> if (qemuDomainObjEnterMonitorAsync(vm, asyncJob) < 0)
> goto cleanup;
>
> - if (tlsAlias)
> - ignore_value(qemuMonitorDelObject(priv->mon, tlsAlias, false));
> + if (tlsx509Alias)
> + ignore_value(qemuMonitorDelObject(priv->mon, tlsx509Alias, false));
>
> if (secAlias)
> ignore_value(qemuMonitorDelObject(priv->mon, secAlias, false));
[...]
> @@ -1766,14 +1766,14 @@ qemuDomainAddTLSObjects(virDomainObj *vm,
>
>
> int
> -qemuDomainGetTLSObjects(qemuDomainSecretInfo *secinfo,
> - const char *tlsCertdir,
> - bool tlsListen,
> - bool tlsVerify,
> - const char *tlsPriority,
> - const char *alias,
> - virJSONValue **tlsProps,
> - virJSONValue **secProps)
> +qemuDomainGetTLSx509Objects(qemuDomainSecretInfo *secinfo,
> + const char *tlsCertdir,
> + bool tlsListen,
> + bool tlsVerify,
> + const char *tlsPriority,
> + const char *alias,
> + virJSONValue **tlsProps,
> + virJSONValue **secProps)
> {
> const char *secAlias = NULL;
>
> @@ -1798,7 +1798,7 @@ qemuDomainAddChardevTLSObjects(virQEMUDriver *driver,
> virDomainChrSourceDef *dev,
> char *devAlias,
> char *charAlias,
> - char **tlsAlias,
> + char **tlsx509Alias,
> const char **secAlias)
> {
> g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
> @@ -1821,21 +1821,21 @@ qemuDomainAddChardevTLSObjects(virQEMUDriver *driver,
> if (secinfo)
> *secAlias = secinfo->alias;
>
> - if (!(*tlsAlias = qemuAliasTLSObjFromSrcAlias(charAlias)))
> + if (!(*tlsx509Alias = qemuAliasTLSx509ObjFromSrcAlias(charAlias)))
> return -1;
>
> - if (qemuDomainGetTLSObjects(secinfo,
> - cfg->chardevTLSx509certdir,
> - dev->data.tcp.listen,
> - cfg->chardevTLSx509verify,
> - cfg->chardevTLSpriority,
> - *tlsAlias, &tlsProps, &secProps) < 0)
> + if (qemuDomainGetTLSx509Objects(secinfo,
> + cfg->chardevTLSx509certdir,
> + dev->data.tcp.listen,
> + cfg->chardevTLSx509verify,
> + cfg->chardevTLSpriority,
> + *tlsx509Alias, &tlsProps, &secProps) < 0)
> return -1;
>
> dev->data.tcp.tlscreds = true;
>
> - if (qemuDomainAddTLSObjects(vm, VIR_ASYNC_JOB_NONE,
> - &secProps, &tlsProps) < 0)
> + if (qemuDomainAddTLSx509Objects(vm, VIR_ASYNC_JOB_NONE,
> + &secProps, &tlsProps) < 0)
> return -1;
>
> return 0;
> @@ -1850,7 +1850,7 @@ qemuDomainDelChardevTLSObjects(virQEMUDriver *driver,
> {
> g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
> qemuDomainObjPrivate *priv = vm->privateData;
> - g_autofree char *tlsAlias = NULL;
> + g_autofree char *tlsx509Alias = NULL;
> g_autofree char *secAlias = NULL;
>
> if (dev->type != VIR_DOMAIN_CHR_TYPE_TCP ||
> @@ -1858,7 +1858,7 @@ qemuDomainDelChardevTLSObjects(virQEMUDriver *driver,
> return 0;
> }
>
> - if (!(tlsAlias = qemuAliasTLSObjFromSrcAlias(inAlias)))
> + if (!(tlsx509Alias = qemuAliasTLSx509ObjFromSrcAlias(inAlias)))
> return -1;
qemuDomainDelChardevTLSObjects is used by qemuDomainRemoveChrDevice,
qemuDomainRemoveRNGDevice, qemuDomainRemoveRedirdevDevice.
None of those seem to store the alias of the TLS backend in the status
XML so unplug of those devices would fail for upgrade of existing VMS
apfter upgrade of libvirt.
You'll need to preserve the alias in status XML, add code to restore it
and only then you can change the alias itself so that existing VMs keep
working.
Or just don't change the alias.
>
> /* Best shot at this as the secinfo is destroyed after process launch
> @@ -1871,7 +1871,7 @@ qemuDomainDelChardevTLSObjects(virQEMUDriver *driver,
>
> qemuDomainObjEnterMonitor(vm);
>
> - ignore_value(qemuMonitorDelObject(priv->mon, tlsAlias, false));
> + ignore_value(qemuMonitorDelObject(priv->mon, tlsx509Alias, false));
> if (secAlias)
> ignore_value(qemuMonitorDelObject(priv->mon, secAlias, false));
>
[...]
> diff --git a/src/qemu/qemu_migration_params.c
> b/src/qemu/qemu_migration_params.c
> index dd47516742..c91ae89c9b 100644
> --- a/src/qemu/qemu_migration_params.c
> +++ b/src/qemu/qemu_migration_params.c
[...]
> @@ -1290,7 +1290,7 @@ qemuMigrationParamsResetTLS(virDomainObj *vm,
> qemuMigrationParams *origParams,
> unsigned int apiFlags)
> {
> - g_autofree char *tlsAlias = NULL;
> + g_autofree char *tlsx509Alias = NULL;
> g_autofree char *secAlias = NULL;
>
> /* There's nothing to do if QEMU does not support TLS migration or we
> were
> @@ -1299,10 +1299,10 @@ qemuMigrationParamsResetTLS(virDomainObj *vm,
> !(apiFlags & VIR_MIGRATE_TLS))
> return;
>
> - tlsAlias = qemuAliasTLSObjFromSrcAlias(QEMU_MIGRATION_TLS_ALIAS_BASE);
> + tlsx509Alias =
> qemuAliasTLSx509ObjFromSrcAlias(QEMU_MIGRATION_TLS_ALIAS_BASE);
Since you've changed the alias ...
> secAlias = qemuAliasForSecret(QEMU_MIGRATION_TLS_ALIAS_BASE, NULL, 0);
>
> - qemuDomainDelTLSObjects(vm, asyncJob, secAlias, tlsAlias);
> + qemuDomainDelTLSObjects(vm, asyncJob, secAlias, tlsx509Alias);
... this will break on existing VMs after upgrade of qemu. You'd have to
remember the alias in the status XML rather than re-generate it.
The status XML addition will need to happen separately if you decide to
go that route ...
But as noted, since there's just one tls object possible per migration
you can keep the alias as-is and just change the backend since it
serves exactly the same purpose.
[...]
> diff --git a/src/qemu/qemu_postparse.c b/src/qemu/qemu_postparse.c
> index 9eda2f6b99..998d083a3d 100644
> --- a/src/qemu/qemu_postparse.c
> +++ b/src/qemu/qemu_postparse.c
> @@ -278,7 +278,7 @@ qemuDomainDeviceDiskDefPostParse(virDomainDiskDef *disk,
> if (parseFlags & VIR_DOMAIN_DEF_PARSE_STATUS &&
> disk->src->haveTLS == VIR_TRISTATE_BOOL_YES &&
> !disk->src->tlsAlias &&
> - !(disk->src->tlsAlias =
> qemuAliasTLSObjFromSrcAlias(disk->info.alias)))
> + !(disk->src->tlsAlias =
> qemuAliasTLSx509ObjFromSrcAlias(disk->info.alias)))
> return -1;
So this code servers to re-construct status XML of a disk where the TLS
alias was *not* recorded. You can't change that otherwise those configs
would break.
>
> diff --git a/tests/qemustatusxml2xmldata/upgrade-out.xml
> b/tests/qemustatusxml2xmldata/upgrade-out.xml
> index c7bc7128df..8d82c83146 100644
> --- a/tests/qemustatusxml2xmldata/upgrade-out.xml
> +++ b/tests/qemustatusxml2xmldata/upgrade-out.xml
> @@ -414,7 +414,7 @@
> <host name='example.org' port='9999'/>
> <privateData>
> <objects>
> - <TLSx509 alias='objvirtio-disk6_tls0'/>
> + <TLSx509 alias='objvirtio-disk6_tlsx509_0'/>
^^^^ this must not change.
> </objects>
> </privateData>
> </source>