[libvirt] [PATCH 4/4] read saved vm status on libvirtd startup
Daniel P. Berrange
berrange at redhat.com
Mon Jan 19 13:39:51 UTC 2009
On Sun, Jan 18, 2009 at 08:28:59PM +0100, Guido G?nther wrote:
> connect back to running vms.
>
> changes:
> * don't use proc
> * don't bother about stdin
> * don't use global qemu_driver directly
> Cheer,
> -- Guido
>
> +static int
> +qemudReconnectVMs(struct qemud_driver *driver)
> +{
> + int i;
> +
> + for (i = 0 ; i < driver->domains.count ; i++) {
> + virDomainObjPtr vm = driver->domains.objs[i];
> + qemudDomainStatusPtr status = NULL;
> + char *config = NULL;
> + int rc;
> +
> + virDomainObjLock(vm);
> + if ((rc = virFileReadPid(driver->stateDir, vm->def->name, &vm->pid)) == 0)
> + DEBUG("Found pid %d for '%s'", vm->pid, vm->def->name);
> + else
> + goto next;
> +
> + if ((config = virDomainConfigFile(NULL,
> + driver->stateDir,
> + vm->def->name)) == NULL) {
> + qemudLog(QEMUD_ERR, _("Failed to read domain status for %s\n"),
> + vm->def->name);
> + goto next_error;
> + }
> +
> + status = qemudDomainStatusParseFile(NULL, driver->caps, config, 0);
> + if (status) {
> + vm->newDef = vm->def;
> + vm->def = status->def;
> + } else {
> + qemudLog(QEMUD_ERR, _("Failed to parse domain status for %s\n"),
> + vm->def->name);
> + goto next_error;
> + }
> +
> + if ((rc = qemudOpenMonitor(NULL, driver, vm, status->monitorpath, 1)) != 0) {
> + qemudLog(QEMUD_ERR, _("Failed to reconnect monitor for %s: %d\n"),
> + vm->def->name, rc);
> + goto next_error;
> + } else
> + vm->monitorpath = status->monitorpath;
> +
> + if((vm->logfile = qemudLogFD(NULL, driver->logDir, vm->def->name)) < 0)
> + return -1;
> +
> + vm->stdout_fd = vm->stderr_fd = vm->logfile;
If nothing is actaully using the stdout/err FDs anymore we can just
leave them at -1.
Aside from that, ACK to this patch.
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list