libxl: fix libxl_domain_need_memory after 899433f149

After 899433f149 libxl needs to know the content of d_config to
determine which QEMU is used. The code is changed such that
libxl__domain_set_device_model needs to be called before
libxl__domain_build_info_setdefault.

This is fine for libxl code, but it is problematic for
libxl_domain_need_memory, which is the only public API that takes a
build_info. To avoid breaking its users, provide a compatibility
setting inside that function.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
This commit is contained in:
Wei Liu committed 2019-05-20 15:14:14 +01:00
1 parent 6ac66c9cbb
commit 278c64519c
1 file changed
+18
+18
View File
@@ -457,6 +457,24 @@ int libxl_domain_need_memory(libxl_ctx *ctx,
libxl_domain_build_info_init(b_info);
libxl_domain_build_info_copy(ctx, b_info, b_info_in);
/*
* It has become a requirement that to figure out which QEMU to
* use, libxl will need to peek d_config's content. The code has
* been changed such that one will need to call
* libxl__domain_set_device_model before calling
* libxl__domain_build_info_setdefault inside libxl.
*
* This (problematic) public API is the only one which takes a
* b_info. Imposing the same requirement on the users of this
* public API will break them.
*
* Provide a compatibility setting for this function. The
* calculation doesn't really care which QEMU is set here, so we
* go with the upstream default.
*/
if (!b_info->device_model_version)
b_info->device_model_version = LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN;
rc = libxl__domain_build_info_setdefault(gc, b_info);
if (rc) goto out;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.