[Libvirt-cim] [PATCH] Make sure to create a default emulator device for XenFV domains

Deepti B Kalakeri deeptik at linux.vnet.ibm.com
Wed Apr 16 12:45:14 UTC 2008


Hi,

On my F8 machine with the following deatils :
libcmpiutil changeset : 72
libvirt-cim changeset : 545

+ the current patch applied.

I am getting the following error:

Virt_VirtualSystemManagementService.c(577): DefineSystem
Virt_VirtualSystemManagementService.c(392): rasd_to_vdev(): Required 
field `Address' missing from NetRASD
Virt_VirtualSystemManagementService.c(522): Failed to classify 
resources: Required field `Address' missing from NetRASD
std_invokemethod.c(305): Method `DefineSystem' returned 1


To resolve this I modified the vsms.py NetRASD info to have Address field.
After this I got the *Segmentation fault.
*Please see the error below.

std_invokemethod.c(230): Method parameter `ResourceSettings' validated 
type 0x3000
std_invokemethod.c(230): Method parameter `ReferenceConfiguration' 
validated type 0x1600
std_invokemethod.c(303): Executing handler for method `DefineSystem'
Virt_VirtualSystemManagementService.c(577): DefineSystem
misc_util.c(72): Connecting to libvirt with uri `xen'
Segmentation fault


Thanks and Regards,
Deepti.



Dan Smith wrote:
> # HG changeset patch
> # User Dan Smith <danms at us.ibm.com>
> # Date 1208293325 25200
> # Node ID f01fe8c3d7b72fb89ebfa8981f2d1fafe8066df7
> # Parent  40f221d14476a2817a1e80a34b5c56189500db6c
> Make sure to create a default emulator device for XenFV domains
>
> This adds the emulator device in once we go to create the actual domain
> object (and thus determine if the type necessitates an <emulator>.
>
> This should fix definesystem on XenFV, although some other things
> surrounding the NetRASD stuff in progress now may prevent regular testing
> of it.
>
> Changes:
>  - Use bool values instead of ints
>
> Signed-off-by: Dan Smith <danms at us.ibm.com>
>
> diff -r 40f221d14476 -r f01fe8c3d7b7 configure.ac
> --- a/configure.ac	Tue Apr 15 14:33:50 2008 -0400
> +++ b/configure.ac	Tue Apr 15 14:02:05 2008 -0700
> @@ -87,6 +87,13 @@ AC_SUBST(MIG_CHECKS_DIR)
>  AC_SUBST(MIG_CHECKS_DIR)
>  AC_DEFINE_UNQUOTED(MIG_CHECKS_DIR, "$MIG_CHECKS_DIR", [External migration check timeout])
>
> +AC_ARG_WITH([xen_emulator],
> +	    [  --with-xen_emulator=emu  Location of Xen FullVirt emulator],
> +	    [test "x$withval" != "x" && XEN_EMULATOR="$withval"],
> +	    [XEN_EMULATOR=/usr/lib/xen/bin/qemu-dm])
> +AC_SUBST(XEN_EMULATOR)
> +AC_DEFINE_UNQUOTED(XEN_EMULATOR, "$XEN_EMULATOR", [Location of Xen FullVirt emulator])
> +
>  # Autogenerate the autoconf header file to store build settings
>  AC_CONFIG_HEADER([config.h])
>
> diff -r 40f221d14476 -r f01fe8c3d7b7 src/Virt_VirtualSystemManagementService.c
> --- a/src/Virt_VirtualSystemManagementService.c	Tue Apr 15 14:33:50 2008 -0400
> +++ b/src/Virt_VirtualSystemManagementService.c	Tue Apr 15 14:02:05 2008 -0700
> @@ -50,6 +50,8 @@
>  #include "Virt_DevicePool.h"
>  #include "svpc_types.h"
>
> +#include "config.h"
> +
>  const static CMPIBroker *_BROKER;
>
>  enum ResourceAction {
> @@ -122,6 +124,25 @@ static int xenpv_vssd_to_domain(CMPIInst
>          return 1;
>  }
>
> +static bool fv_default_emulator(struct domain *domain)
> +{
> +        const char *emul = XEN_EMULATOR;
> +
> +        cleanup_virt_device(domain->dev_emu);
> +
> +        domain->dev_emu = calloc(1, sizeof(*domain->dev_emu));
> +        if (domain->dev_emu == NULL) {
> +                CU_DEBUG("Failed to allocate default emulator device");
> +                return false;
> +        }
> +
> +        domain->dev_emu->type = CIM_RES_TYPE_EMU;
> +        domain->dev_emu->dev.emu.path = strdup(emul);
> +        domain->dev_emu->id = strdup("emulator");
> +
> +        return true;
> +}
> +
>  static int fv_vssd_to_domain(CMPIInstance *inst,
>                               struct domain *domain,
>                               const char *pfx)
> @@ -129,11 +150,13 @@ static int fv_vssd_to_domain(CMPIInstanc
>          int ret;
>          const char *val;
>
> -        if (STREQC(pfx, "KVM"))
> +        if (STREQC(pfx, "KVM")) {
>                  domain->type = DOMAIN_KVM;
> -        else if (STREQC(pfx, "Xen"))
> +        } else if (STREQC(pfx, "Xen")) {
>                  domain->type = DOMAIN_XENFV;
> -        else {
> +                if (!fv_default_emulator(domain))
> +                        return 0;
> +        } else {
>                  CU_DEBUG("Unknown fullvirt domain type: %s", pfx);
>                  return 0;
>          }
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
>   




More information about the Libvirt-cim mailing list