[libvirt] [PATCH 06/11] Support virDomainOpenConsole with QEMU

Daniel Veillard veillard at redhat.com
Wed Nov 3 13:42:31 UTC 2010


On Tue, Nov 02, 2010 at 05:49:10PM +0000, Daniel P. Berrange wrote:
> This provides an implementation of the virDomainOpenConsole
> API with the QEMU driver. For the streams code, this reuses
> most of the code previously added for the tunnelled migration
> streams since it is generic.
> 
> * src/qemu/qemu_driver.c: Support virDomainOpenConsole
> ---
>  src/qemu/qemu_driver.c |   78 +++++++++++++++++++++++++++++++++++++++++++++++-
>  1 files changed, 77 insertions(+), 1 deletions(-)
[...]
> +    if (devname) {
> +        if (vm->def->console &&
> +            STREQ(devname, vm->def->console->info.alias))
> +            chr = vm->def->console;
> +        for (i = 0 ; !chr && i < vm->def->nserials ; i++) {
> +            if (STREQ(devname, vm->def->serials[i]->info.alias))
> +                chr = vm->def->serials[i];

 small nit, maybe we should break in the loop if found, a priori it
doesn't change the semantic though. Something like a goto found:
when doing the affectation, but this makes the code a bit more
complex...

> +        }
> +        for (i = 0 ; !chr && i < vm->def->nparallels ; i++) {
> +            if (STREQ(devname, vm->def->parallels[i]->info.alias))
> +                chr = vm->def->parallels[i];
> +        }
> +    } else {
> +        if (vm->def->console)
> +            chr = vm->def->console;
> +        else if (vm->def->nserials)
> +            chr = vm->def->serials[0];
> +    }

 the following test could be removed then directly error and goto
 cleanup

> +    if (!chr) {
> +        qemuReportError(VIR_ERR_INTERNAL_ERROR,
> +                        _("cannot find character device %s"),
> +                        NULLSTR(devname));
> +        goto cleanup;
> +    }

found:

> +
> +    if (chr->type != VIR_DOMAIN_CHR_TYPE_PTY) {
> +        qemuReportError(VIR_ERR_INTERNAL_ERROR,
> +                        _("character device %s is not using a PTY"),
> +                        NULLSTR(devname));
> +        goto cleanup;
> +    }

  ACK, code is still fine as-is

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list