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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list