[libvirt] [PATCH] libxl: libxl_get_max_cpus returning a libxl error from 4.4 onward

Dario Faggioli dario.faggioli at citrix.com
Tue Dec 17 17:43:25 UTC 2013


Starting from commit 2e82c18c in Xen (will be included in Xen 4.4)
libxl_get_max_cpus() start returning a proper libxl error code, in
case of failure. It returning 0 is now basically impossible but,
theoretically, still wrong, not to mention that using '<= 0' makes
this correct for both Xen 4.4 and Xen 4.3 (and 4.2). That's why we
go for it (rather than just '< 0').

Signed-off-by: Dario Faggioli <dario.faggioli at citrix.com>
Cc: Jim Fehlig <jfehlig at suse.com>
Cc: Ian Jackson <Ian.Jackson at eu.citrix.com>
---
 src/libxl/libxl_driver.c |    8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index 692c3b7..a31b094 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -1101,9 +1101,11 @@ libxlConnectGetMaxVcpus(virConnectPtr conn, const char *type ATTRIBUTE_UNUSED)
 
     cfg = libxlDriverConfigGet(driver);
     ret = libxl_get_max_cpus(cfg->ctx);
-    /* libxl_get_max_cpus() will return 0 if there were any failures,
-       e.g. xc_physinfo() failing */
-    if (ret == 0)
+    /* On failure, libxl_get_max_cpus() will return ERROR_FAIL from Xen 4.4
+     * onward, but it ever returning 0 is obviously wrong too (and it is
+     * what happens, on failure, on Xen 4.3 and earlier). Therefore, a 'less
+     * or equal' is the catchall we want. */
+    if (ret <= 0)
         ret = -1;
 
     virObjectUnref(cfg);




More information about the libvir-list mailing list