[libvirt] [PATCH] conf: move the check for secondary consoles of targetType serial

Michal Privoznik mprivozn at redhat.com
Fri Dec 12 16:17:44 UTC 2014


On 11.12.2014 12:28, Erik Skultety wrote:
> For historical reasons, only the first <console> element might be of targetType
> serial, but we checked for other consoles of targetType serial in our post-parse
> callback if and only if we knew the first console was serial, otherwise
> the check was skipped.
> This patch moves the check one level up, so first
> the check for secondary console of type serial is performed and then the
> rest of operations continue unchanged.
> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1170092
> ---
>   src/conf/domain_conf.c | 23 +++++++++++++----------
>   1 file changed, 13 insertions(+), 10 deletions(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index ec45b8c..dc0b167 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -3023,19 +3023,22 @@ virDomainDefPostParseInternal(virDomainDefPtr def,
>        * We then fill def->consoles[0] with a stub just so we get sequencing
>        * correct for consoles > 0
>        */
> +
> +    /* Only the first console (if there are any) can be of type serial,
> +     * verify that no other console is of type serial
> +     */
> +    for (i = 1; i < def->nconsoles; i++) {
> +        virDomainChrDefPtr cons = def->consoles[i];
> +
> +        if (cons->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL) {
> +            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> +                           _("Only the first console can be a serial port"));
> +            return -1;
> +        }
> +    }
>       if (def->nconsoles > 0 && STREQ(def->os.type, "hvm") &&
>           (def->consoles[0]->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL ||
>            def->consoles[0]->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_NONE)) {
> -        /* First verify that only the first console is of type serial */
> -        for (i = 1; i < def->nconsoles; i++) {
> -            virDomainChrDefPtr cons = def->consoles[i];
> -
> -            if (cons->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL) {
> -                virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> -                               _("Only the first console can be a serial port"));
> -                return -1;
> -            }
> -        }
>
>           /* If there isn't a corresponding serial port:
>            *  - create one and set, the console to be an alias for it
>

ACK and will push after the release.

Michal




More information about the libvir-list mailing list