[libvirt] [RFC PATCH 2/2] Implement virtio serial address allocation

Michal Privoznik mprivozn at redhat.com
Thu Jul 24 12:39:40 UTC 2014


On 25.06.2014 19:22, Ján Tomko wrote:
> Over-engineered to allow non-contiguous indexes.
> Free ports of a controller are stored in a virBitmap.
> These bitmaps are stored in a hash table, indexed by
> the controller index formatted as a string.
>
> Buses are ignored for now, QEMU doesn't seem
> to support anything else than .0
>
> For virtconsoles, addresses are reserved silently,
> since we don't put those in the XML, but they occupy
> virtio-serial ports.
>
> Missing:
>    auto-adding controllers when all ports are occupied
>
> Fixes https://bugzilla.redhat.com/show_bug.cgi?id=890606
> Paritally fixes https://bugzilla.redhat.com/show_bug.cgi?id=1076708
> ---
> RFC, since it hashes the string of an integer.

Yeah, out hash tables require pointers, and we don't like to see an 
integer taken as a pointer...

However, I like the idea (I mean the whole idea).

>
>   src/conf/domain_addr.c                             | 426 +++++++++++++++++++++
>   src/conf/domain_addr.h                             |  49 +++
>   src/conf/domain_conf.c                             |  30 --
>   src/libvirt_private.syms                           |   9 +
>   src/qemu/qemu_command.c                            |  61 +++
>   src/qemu/qemu_domain.c                             |   1 +
>   src/qemu/qemu_domain.h                             |   1 +
>   src/qemu/qemu_hotplug.c                            |  31 +-
>   tests/qemuhotplugtest.c                            |   2 +-
>   .../qemuxml2argv-channel-virtio-auto.args          |   8 +-
>   .../qemuxml2argv-channel-virtio-autoassign.args    |  10 +-
>   .../qemuxml2xmlout-channel-virtio-auto.xml         |  10 +-
>   12 files changed, 591 insertions(+), 47 deletions(-)
>

> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
> index 9cd6a3e..6e4c456 100644
> --- a/src/qemu/qemu_hotplug.c
> +++ b/src/qemu/qemu_hotplug.c
> @@ -367,6 +367,7 @@ int qemuDomainAttachControllerDevice(virQEMUDriverPtr driver,
>       char *devstr = NULL;
>       qemuDomainObjPrivatePtr priv = vm->privateData;
>       bool releaseaddr = false;
> +    bool needs_remove = false;;

s/;;/;/

>
>       if (virDomainControllerFind(vm->def, controller->type, controller->idx) >= 0) {
>           virReportError(VIR_ERR_OPERATION_FAILED,


I'd say ACK but since this is an RFC I let others to chime in.

Michal




More information about the libvir-list mailing list