[libvirt] [PATCH 2/2] libxl: set bootloader for PV domains if not specified

Michal Privoznik mprivozn at redhat.com
Tue Jun 11 09:37:21 UTC 2013


On 10.06.2013 22:21, Jim Fehlig wrote:
> The legacy xen toolstack will set pygrub as the bootloader if not
> specified.  For compatibility, do the same in the libxl driver
> iff not using direct kernel boot.
> ---
>  src/libxl/libxl_conf.c |   13 +++++++++++--
>  src/libxl/libxl_conf.h |    1 +
>  2 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
> index 90d563b..8b76536 100644
> --- a/src/libxl/libxl_conf.c
> +++ b/src/libxl/libxl_conf.c
> @@ -414,8 +414,17 @@ libxlMakeDomBuildInfo(virDomainDefPtr def, libxl_domain_config *d_config)
>          b_info->shadow_memkb = 4 * (256 * libxl_bitmap_count_set(&b_info->avail_vcpus) +
>                                      2 * (b_info->max_memkb / 1024));
>      } else {
> -        if (VIR_STRDUP(b_info->u.pv.bootloader, def->os.bootloader) < 0)
> -            goto error;
> +        /*
> +         * For compatibility with the legacy xen toolstack, default to pygrub
> +         * if bootloader is not specified AND direct kernel boot is not specified.
> +         */
> +        if (def->os.bootloader) {
> +            if (VIR_STRDUP(b_info->u.pv.bootloader, def->os.bootloader) < 0)
> +                goto error;
> +        } else if (def->os.kernel == NULL) {
> +            if (VIR_STRDUP(b_info->u.pv.bootloader, LIBXL_BOOTLOADER_PATH) < 0)
> +                goto error;
> +        }
>          if (def->os.bootloaderArgs) {
>              if (!(b_info->u.pv.bootloader_args =
>                    virStringSplit(def->os.bootloaderArgs, " \t\n", 0)))
> diff --git a/src/libxl/libxl_conf.h b/src/libxl/libxl_conf.h
> index 44ecd41..754fc40 100644
> --- a/src/libxl/libxl_conf.h
> +++ b/src/libxl/libxl_conf.h
> @@ -45,6 +45,7 @@
>  # define LIBXL_LOG_DIR LOCALSTATEDIR "/log/libvirt/libxl"
>  # define LIBXL_LIB_DIR LOCALSTATEDIR "/lib/libvirt/libxl"
>  # define LIBXL_SAVE_DIR LIBXL_LIB_DIR "/save"
> +# define LIBXL_BOOTLOADER_PATH BINDIR "/pygrub"
>  
>  
>  typedef struct _libxlDriverPrivate libxlDriverPrivate;
> 

ACK

Michal




More information about the libvir-list mailing list