2011/7/4 Daniel P. Berrange <berrange(a)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