[libvirt] [PATCH 5/8] Change extract pidfile & monitor config from QEMU command line
Matthias Bolte
matthias.bolte at googlemail.com
Tue Jul 5 11:19:40 UTC 2011
2011/7/4 Daniel P. Berrange <berrange at redhat.com>:
> When converting QEMU argv into a virDomainDefPtr, also extract
> the pidfile, monitor character device config and the monitor
> mode.
>
> * src/qemu/qemu_command.c, src/qemu/qemu_command.h: Extract
> pidfile & monitor config from QEMU argv
> * src/qemu/qemu_driver.c, tests/qemuargv2xmltest.c: Add extra
> params when calling qemuParseCommandLineString
> ---
> src/qemu/qemu_command.c | 150 +++++++++++++++++++++++++++------------------
> src/qemu/qemu_command.h | 10 +++-
> src/qemu/qemu_driver.c | 9 +++-
> tests/qemuargv2xmltest.c | 3 +-
> 4 files changed, 108 insertions(+), 64 deletions(-)
> @@ -6523,11 +6548,6 @@ virDomainDefPtr qemuParseCommandLine(virCapsPtr caps,
>
> VIR_FREE(nics);
>
> - if (!def->name) {
> - if (!(def->name = strdup("unnamed")))
> - goto no_memory;
> - }
> -
> if (virDomainDefAddImplicitControllers(def) < 0)
> goto error;
Okay you moved this to qemuDomainXMLFromNative, so now a direct call
to qemuParseCommandLine will produce an invalid virDomainDefPtr as
def->name can be NULL when -name was not given in the command line. It
seems that this is okay for now as the only caller is currently
qemuDomainXMLFromNative. You added a second caller in 8/8 that
explicitly deals with def->name == NULL.
Might be worth a comment to qemuParseCommandLine that mentions this.
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 363a361..9486594 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -3887,11 +3887,18 @@ static char *qemuDomainXMLFromNative(virConnectPtr conn,
> }
>
> qemuDriverLock(driver);
> - def = qemuParseCommandLineString(driver->caps, config);
> + def = qemuParseCommandLineString(driver->caps, config,
> + NULL, NULL, NULL);
> qemuDriverUnlock(driver);
> if (!def)
> goto cleanup;
>
> + if (!def->name &&
> + !(def->name = strdup("unnamed"))) {
> + virReportOOMError();
> + goto cleanup;
> + }
> +
> xml = virDomainDefFormat(def, VIR_DOMAIN_XML_INACTIVE);
>
ACK.
--
Matthias Bolte
http://photron.blogspot.com
More information about the libvir-list
mailing list