]> xenbits.xensource.com Git - people/sstabellini/xen-unstable.git/.git/commitdiff
libxl: fix libxl_domain_need_memory after 899433f149d
authorWei Liu <wei.liu2@citrix.com>
Fri, 17 May 2019 17:05:55 +0000 (18:05 +0100)
committerWei Liu <wei.liu2@citrix.com>
Mon, 20 May 2019 14:14:14 +0000 (15:14 +0100)
After 899433f149d 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>
tools/libxl/libxl_mem.c

index 448a2af8fdf833cd5ec36a48edc97fd6392c1a9e..4446754186cf40851b500485923d91d85d3223b0 100644 (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;