
Hi,
2. missing virConnectPtr during autostart of the vm:
in src/qemu_driver.c:145, qemudAutostartConfigs() you can find this call: int ret = qemudStartVMDaemon(NULL, driver, vm, NULL);
This means virConnectPtr conn is NULL within qemudStartVMDaemon(). Following the calls: qemudStartVMDaemon() -> qemudBuildCommandLine() -> qemudNetworkIfaceConnect() -> virNetworkLookupByName()
virNetworkLookupByName bails out if called with invalid virConnectPtr. This means starting this vm fails.
I came up with the attached patch to fix this for me, but a) I'm not sure if it is a clean use of the api to call virConnectOpen() from within a state-initializer function b) This is just for qemu/kvm, I haven't looked at any other drivers It would be nice if an experienced libvirt-developer could take a look at this. Thank you very much. Kind regards, Gerd diff -r -u libvirt-0.5.0.orig/src/qemu_driver.c libvirt-0.5.0/src/qemu_driver.c --- libvirt-0.5.0.orig/src/qemu_driver.c 2008-11-21 13:47:32.000000000 +0100 +++ libvirt-0.5.0/src/qemu_driver.c 2008-12-01 01:49:16.000000000 +0100 @@ -138,11 +138,14 @@ qemudAutostartConfigs(struct qemud_driver *driver) { unsigned int i; + /* we need a valid virConnectPtr for qemudStartVMDaemon to be able to connect to other drivers */ + virConnectPtr conn=virConnectOpen(getuid() ? "qemu:///session" : "qemu:///system"); + for (i = 0 ; i < driver->domains.count ; i++) { virDomainObjPtr vm = driver->domains.objs[i]; if (vm->autostart && !virDomainIsActive(vm)) { - int ret = qemudStartVMDaemon(NULL, driver, vm, NULL); + int ret = qemudStartVMDaemon(conn, driver, vm, NULL); if (ret < 0) { virErrorPtr err = virGetLastError(); qemudLog(QEMUD_ERR, _("Failed to autostart VM '%s': %s\n"), @@ -154,6 +157,8 @@ } } } + + virConnectClose(conn); } /** -- Address (better: trap) for people I really don't want to get mail from: james@cactusamerica.com