[libvirt] [PATCH 1/7] Allow multiple consoles per virtual guest

Eric Blake eblake at redhat.com
Tue Nov 1 22:03:27 UTC 2011


On 10/20/2011 08:47 AM, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange"<berrange at redhat.com>
>
> While Xen only has a single paravirt console, UML, and
> QEMU both support multiple paravirt consoles. The LXC
> driver can also be trivially made to support multiple
> consoles. This patch extends the XML to allow multiple
> <console>  elements in the XML. It also makes the UML
> and QEMU drivers support this config.
>

See my earlier question about documenting this in docs/formatdomain.html.in.

> +++ b/src/qemu/qemu_process.c
> @@ -1112,8 +1112,8 @@ qemuProcessFindCharDevicePTYsMonitor(virDomainObjPtr vm,
>                                 paths, chardevfmt)<  0)
>           return -1;
>
> -    if (vm->def->console&&
> -        qemuProcessLookupPTYs(&vm->def->console, 1, paths, chardevfmt)<  0)
> +    if (qemuProcessLookupPTYs(vm->def->consoles, vm->def->nconsoles,
> +                              paths, chardevfmt)<  0)

Does qemuProcessLookupPTYs behave if vm->def->nconsoles is 0 (we 
previously skipped calling it if there were no consoles, so you may need 
to skip calling it here in the same situation).

> +++ b/tests/qemuxml2argvdata/qemuxml2argv-channel-virtio-auto.args
> @@ -1,6 +1,7 @@
>   LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M \
> -pc -m 214 -smp 1 -nographic -nodefconfig -nodefaults -monitor \
> -unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -device \
> +pc -m 214 -smp 1 -nographic -nodefconfig -nodefaults -chardev \
> +socket,id=charmonitor,path=/tmp/test-monitor,server,nowait -mon \
> +chardev=charmonitor,id=monitor,mode=readline -no-acpi -boot c -device \

Is this conversion from '-monitor' to '-device -mon' intentional?  I 
think its okay, but wonder if it should have been split into a separate 
patch, since it has nothing to do with consoles.

> +++ b/tests/qemuxml2argvdata/qemuxml2argv-console-virtio.args
> @@ -1,6 +1,7 @@
>   LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M \
> -pc -m 214 -smp 1 -nographic -nodefconfig -nodefaults -monitor \
> -unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -device \
> +pc -m 214 -smp 1 -nographic -nodefconfig -nodefaults -chardev \
> +socket,id=charmonitor,path=/tmp/test-monitor,server,nowait -mon \
> +chardev=charmonitor,id=monitor,mode=readline -no-acpi -boot c -device \
>   virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x3 -hda \
>   /dev/HostVG/QEMUGuest1 -chardev pty,id=charconsole0 -device virtconsole,\
>   chardev=charconsole0,id=console0 -usb -device virtio-balloon-pci,id=balloon0,\
> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
> index a7ae925..2d158cf 100644
> --- a/tests/qemuxml2argvtest.c
> +++ b/tests/qemuxml2argvtest.c
> @@ -471,11 +471,13 @@ mymain(void)
>       DO_TEST("channel-guestfwd", false,
>               QEMU_CAPS_CHARDEV, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG);
>       DO_TEST("channel-virtio", false,
> -            QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG);
> +            QEMU_CAPS_DEVICE, QEMU_CAPS_CHARDEV, QEMU_CAPS_NODEFCONFIG);

Ah, I see - you altered the flags being passed, which is why the .args 
files had to change.  It makes sense that you need QEMU_CAPS_CHARDEV for 
console-virtio-many to work, and you just made the other tests 
consistent; still, my observation above about splitting just this part 
of the tests change into a separate commit might help.

ACK once you resolve the qemuProcessLookupPTYs question.

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org




More information about the libvir-list mailing list