[libvirt] [PATCHv3 26/27] virCaps: get rid of emulatorRequired

Daniel P. Berrange berrange at redhat.com
Tue Mar 12 12:50:34 UTC 2013


On Mon, Mar 11, 2013 at 04:06:37PM +0100, Peter Krempa wrote:
> This patch removes the emulatorRequired field and associated
> infrastructure from the virCaps object. Instead the driver specific
> callbacks are used as this field isn't enforced by all drivers.
> 
> This patch implements the appropriate callbacks in the qemu and lxc
> driver and moves to check to that location.
> ---
>  src/conf/capabilities.c              | 10 ----------
>  src/conf/capabilities.h              |  7 -------
>  src/conf/domain_conf.c               | 16 ++++++----------
>  src/conf/domain_conf.h               |  2 ++
>  src/libvirt_private.syms             |  3 +--
>  src/lxc/lxc_conf.c                   |  7 +++----
>  src/lxc/lxc_domain.c                 | 17 +++++++++++++++++
>  src/lxc/lxc_domain.h                 |  1 +
>  src/qemu/qemu_capabilities.c         |  3 ---
>  src/qemu/qemu_domain.c               | 15 +++++++++++++++
>  tests/lxcxml2xmldata/lxc-hostdev.xml |  1 +
>  tests/lxcxml2xmldata/lxc-systemd.xml |  1 +
>  12 files changed, 47 insertions(+), 36 deletions(-)
> 
> diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
> index d53d5a3..1d29ce6 100644
> --- a/src/conf/capabilities.c
> +++ b/src/conf/capabilities.c
> @@ -935,13 +935,3 @@ virCapabilitiesGenerateMac(virCapsPtr caps,
>  {
>      virMacAddrGenerate(caps->macPrefix, mac);
>  }
> -
> -extern void
> -virCapabilitiesSetEmulatorRequired(virCapsPtr caps) {
> -    caps->emulatorRequired = 1;
> -}
> -
> -extern unsigned int
> -virCapabilitiesIsEmulatorRequired(virCapsPtr caps) {
> -    return caps->emulatorRequired;
> -}
> diff --git a/src/conf/capabilities.h b/src/conf/capabilities.h
> index 5fd1bb5..dcf38a8 100644
> --- a/src/conf/capabilities.h
> +++ b/src/conf/capabilities.h
> @@ -163,7 +163,6 @@ struct _virCaps {
> 
>      /* Move to virDomainXMLConf later */
>      unsigned char macPrefix[VIR_MAC_PREFIX_BUFLEN];
> -    unsigned int emulatorRequired : 1;
>      int defaultDiskDriverType; /* enum virStorageFileFormat */
>      int (*defaultConsoleTargetType)(const char *ostype, virArch guestarch);
>      bool hasWideScsiBus;
> @@ -186,12 +185,6 @@ extern void
>  virCapabilitiesGenerateMac(virCapsPtr caps,
>                             virMacAddrPtr mac);
> 
> -extern void
> -virCapabilitiesSetEmulatorRequired(virCapsPtr caps);
> -
> -extern unsigned int
> -virCapabilitiesIsEmulatorRequired(virCapsPtr caps);
> -
>  extern int
>  virCapabilitiesAddHostFeature(virCapsPtr caps,
>                                const char *name);
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 1cdd9e5..fbdab9a 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -9079,8 +9079,9 @@ virDomainLeaseRemove(virDomainDefPtr def,
>  }
> 
> 
> -static char *virDomainDefDefaultEmulator(virDomainDefPtr def,
> -                                         virCapsPtr caps) {
> +char *
> +virDomainDefDefaultEmulator(virDomainDefPtr def,
> +                            virCapsPtr caps) {
>      const char *type;
>      const char *emulator;
>      char *retemu;
> @@ -9099,13 +9100,13 @@ static char *virDomainDefDefaultEmulator(virDomainDefPtr def,
> 
>      if (!emulator) {
>          virReportError(VIR_ERR_INTERNAL_ERROR,
> -                       _("no emulator for domain %s os type %s on architecture %s"),
> +                       _("no emulator for domain %s os type %s "
> +                         "on architecture %s"),
>                         type, def->os.type, virArchToString(def->os.arch));
>          return NULL;
>      }
> 
> -    retemu = strdup(emulator);
> -    if (!retemu)
> +    if (!(retemu = strdup(emulator)))
>          virReportOOMError();
> 
>      return retemu;
> @@ -10263,11 +10264,6 @@ virDomainDefParseXML(virCapsPtr caps,
>      }
> 
>      def->emulator = virXPathString("string(./devices/emulator[1])", ctxt);
> -    if (!def->emulator && virCapabilitiesIsEmulatorRequired(caps)) {
> -        def->emulator = virDomainDefDefaultEmulator(def, caps);
> -        if (!def->emulator)
> -            goto error;
> -    }
> 
>      /* analysis of the disk devices */
>      if ((n = virXPathNodeSet("./devices/disk", ctxt, &nodes)) < 0)
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index ab66707..0dac95e 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -2471,4 +2471,6 @@ int virDomainObjListExport(virDomainObjListPtr doms,
>  virDomainVcpuPinDefPtr virDomainLookupVcpuPin(virDomainDefPtr def,
>                                                int vcpuid);
> 
> +char *virDomainDefDefaultEmulator(virDomainDefPtr def, virCapsPtr caps);

s/virDomainDefDefaultEmulator/virDomainDefSetDefaultEmulator) to make it
clear that this is a setter function.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list