[libvirt] [PATCH v2 2/8] qemu: Implement chardev hotplug on config level

Martin Kletzander mkletzan at redhat.com
Fri Jun 21 10:18:34 UTC 2013


On 06/06/2013 02:29 PM, Michal Privoznik wrote:
> There are two levels on which a device may be hotplugged: config
> and live. The config level requires just an insert or remove from
> internal domain definition structure, which is what this patch
> exactly does. There is currently no implementation for a chardev

s/what this patch exactly does/exactly what this patch does/

> update action, as there's not much to be updated. But more
> importantly, the only thing that can be updated is path or socket
> address by which chardevs are distinguished. So the update action
> is currently not supported.
> ---
>  src/conf/domain_conf.c | 22 ++++++++++++++++++++--
>  src/qemu/qemu_driver.c | 33 ++++++++++++++++++++++++++++++---
>  2 files changed, 50 insertions(+), 5 deletions(-)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 37f0ce9..582eade 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -1755,10 +1755,12 @@ void virDomainDeviceDefFree(virDomainDeviceDefPtr def)
>      case VIR_DOMAIN_DEVICE_RNG:
>          virDomainRNGDefFree(def->data.rng);
>          break;
> +    case VIR_DOMAIN_DEVICE_CHR:
> +        virDomainChrDefFree(def->data.chr);
> +        break;
>      case VIR_DOMAIN_DEVICE_NONE:
>      case VIR_DOMAIN_DEVICE_FS:
>      case VIR_DOMAIN_DEVICE_SMARTCARD:
> -    case VIR_DOMAIN_DEVICE_CHR:
>      case VIR_DOMAIN_DEVICE_MEMBALLOON:
>      case VIR_DOMAIN_DEVICE_NVRAM:
>      case VIR_DOMAIN_DEVICE_LAST:
> @@ -9433,6 +9435,20 @@ virDomainDeviceDefParse(const char *xmlStr,
>          dev->type = VIR_DOMAIN_DEVICE_RNG;
>          if (!(dev->data.rng = virDomainRNGDefParseXML(node, ctxt, flags)))
>              goto error;
> +    } else if (xmlStrEqual(node->name, BAD_CAST "channel") ||
> +               xmlStrEqual(node->name, BAD_CAST "console") ||
> +               xmlStrEqual(node->name, BAD_CAST "parallel") ||
> +               xmlStrEqual(node->name, BAD_CAST "serial")) {
> +        dev->type = VIR_DOMAIN_DEVICE_CHR;
> +        /* In case of serial chardev we want to parse <source> as it is the only
> +         * thing distinguishing two serial chardevs */

The comment has no information value, we have to parse the XML anyway.

> +        flags &= ~VIR_DOMAIN_XML_INACTIVE;

You're silently removing the flag without telling the user that.  It's
ok if you remove that in the last patch (which I haven't seen yet), but
I guess error-ing out would be more appropriate.

ACK,

Martin




More information about the libvir-list mailing list