
"Daniel P. Berrange" <berrange@redhat.com> wrote:
Internally the drivers track the current live configuration, and the new inactive config for running domains. When the libvirtd process is restarted though, this data is lost for any active LXC domains. This patch makes the LXC driver persist the live config to /var/run/libvirt/lxc/NAME.xml so it can be tracked across restarts
It required a small change to the domain XML APis to make the autostart symlink processing optional when deleting a config file ...
Looks fine to me. ACK
diff -r cf1cf3a1d4d6 src/lxc_driver.c --- a/src/lxc_driver.c Tue Aug 05 16:50:51 2008 +0100 +++ b/src/lxc_driver.c Tue Aug 05 16:50:59 2008 +0100 ... @@ -960,6 +973,8 @@
vm = lxc_driver->domains; while (vm) { + char *config = NULL; + virDomainDefPtr tmp;
The initialization of config looks unnecessary. The only other change I'd make would be to move both declarations "down" to first use. Then the context-challenged reader doesn't have to wonder what, if anything, happens to those variables between declaration and first use.
int rc; if ((vm->monitor = lxcMonitorClient(NULL, lxc_driver, vm)) < 0) { vm = vm->next; @@ -972,6 +987,18 @@ vm->monitor = -1; vm = vm->next; continue; + } +
char *config;
+ if (asprintf(&config, "%s/%s.xml", + lxc_driver->stateDir, vm->def->name) < 0) + continue; + + /* Try and load the live config */ + tmp = virDomainDefParseFile(NULL, lxc_driver->caps, config);
virDomainDefPtr tmp = virDomainDefParseFile(NULL, lxc_driver->caps, config);
+ VIR_FREE(config); + if (tmp) { + vm->newDef = vm->def; + vm->def = tmp; }
if (vm->pid != 0) {