[Libvirt-cim] [PATCH V2 1/3] make force use qemu configurable

John Ferlan jferlan at redhat.com
Wed May 8 18:49:08 UTC 2013


On 05/02/2013 03:10 AM, Xu Wang wrote:
> From: Wenchao Xia <xiawenc at linux.vnet.ibm.com>
> 
> Since in nested KVM, libvirt-cim doesn't handler it well now, so add this
> option to manually disable KVM and fall back to qemu. If there is something
> fail caused by nested KVM happend, please consider to set this option to be
> true for development and testing.
> 
> Signed-off-by: Xu Wang <cngesaint at outlook.com>
> ---
>  libvirt-cim.conf                          |   10 ++++++++++
>  libxkutil/misc_util.c                     |    8 ++++++++
>  libxkutil/misc_util.h                     |    1 +
>  src/Virt_VirtualSystemManagementService.c |    7 +++++++
>  4 files changed, 26 insertions(+), 0 deletions(-)
> 

The commit message is still a bit confusing, but I suppose not enough to
hold up adding the capability.  Hopefully anyone forced to make changes
as a result of being able to develop/test further in the nested
environment will duly note where and what had to change...

> diff --git a/libvirt-cim.conf b/libvirt-cim.conf
> index 37d7b0f..f378e4c 100644
> --- a/libvirt-cim.conf
> +++ b/libvirt-cim.conf
> @@ -30,3 +30,13 @@
>  #  Default value: NULL, that is not set.
>  #
>  # migrate_ssh_temp_key = "/root/vm_migrate_tmp_id_rsa";
> +
> +# force_use_qemu (bool)
> +#  Since in nested KVM, libvirt-cim doesn't handler it well now, so add this
> +#  option to manually disable KVM and fall back to qemu. If there is something
> +#  fail caused by nested KVM happend, please consider to set this option to be
> +#  true for development and testing.

Consider the following explanation to replace the above 4 lines :

When executing in a nested KVM environment libvirt-cim may fail
unexpectedly with a TBS error. Setting "force_use_qemu" option to true
disables use of KVM and falls back to using QEMU directly.

NOTE: TBS should be replaced with the error or the clue that someone
would need in order to determine they should be using/setting this to
true.  Remarking about development or testing is irrelevant.

John

> +#  Possible values: {true,false}
> +#  Default value: false
> +#
> +# force_use_qemu = false;
> diff --git a/libxkutil/misc_util.c b/libxkutil/misc_util.c
> index 00eb4b1..4c0b0a1 100644
> --- a/libxkutil/misc_util.c
> +++ b/libxkutil/misc_util.c
> @@ -227,6 +227,14 @@ static int is_read_only(void)
>          return prop.value_bool;
>  }
>  
> +bool get_force_use_qemu(void)
> +{
> +        static LibvirtcimConfigProperty prop = {
> +                                       "force_use_qemu", CONFIG_BOOL, {0}, 0};
> +        libvirt_cim_config_get(&prop);
> +        return prop.value_bool;
> +}
> +
>  const char *get_mig_ssh_tmp_key(void)
>  {
>          static LibvirtcimConfigProperty prop = {
> diff --git a/libxkutil/misc_util.h b/libxkutil/misc_util.h
> index 0f52290..9e6b419 100644
> --- a/libxkutil/misc_util.h
> +++ b/libxkutil/misc_util.h
> @@ -154,6 +154,7 @@ int virt_set_status(const CMPIBroker *broker,
>  
>  /* get libvirt-cim config */
>  const char *get_mig_ssh_tmp_key(void);
> +bool get_force_use_qemu(void);
>  
>  /*
>   * Local Variables:
> diff --git a/src/Virt_VirtualSystemManagementService.c b/src/Virt_VirtualSystemManagementService.c
> index cbb646d..81ec064 100644
> --- a/src/Virt_VirtualSystemManagementService.c
> +++ b/src/Virt_VirtualSystemManagementService.c
> @@ -394,6 +394,13 @@ static bool system_has_kvm(const char *pfx)
>          virConnectPtr conn;
>          char *caps = NULL;
>          bool kvm = false;
> +        bool force_use_qemu = get_force_use_qemu();
> +
> +        /* sometimes disable KVM to avoid problem in nested KVM */
> +        if (force_use_qemu) {
> +                CU_DEBUG("Enter force use qemu mode!");
> +                return false;
> +        }
>  
>          conn = connect_by_classname(_BROKER, pfx, &s);
>          if ((conn == NULL) || (s.rc != CMPI_RC_OK)) {
> 




More information about the Libvirt-cim mailing list