Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:olh:xen-4.6
libvirt-7.0.0
libvirt.e8fd24d810b6971d279045bc394ac359e9f3e21...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File libvirt.e8fd24d810b6971d279045bc394ac359e9f3e217.patch of Package libvirt-7.0.0
From: Olaf Hering <olaf@aepfle.de> Date: Thu, 25 Mar 2021 17:26:08 +0100 Subject: e8fd24d810b6971d279045bc394ac359e9f3e217 libxl: add API wrapper for libxl_get_free_memory Upcoming changes will use different LIBXL_API_VERSION variants. Prepare libxl_get_free_memory, which changed storage size of parameter "memkb" in Xen 4.8. No functional change intended. Signed-off-by: Olaf Hering <olaf@aepfle.de> Reviewed-by: Jim Fehlig <jfehlig@suse.com> --- src/libxl/libxl_api_wrapper.h | 19 +++++++++++++++++++ src/libxl/libxl_conf.c | 5 +++-- src/libxl/libxl_domain.c | 4 ++-- tests/libxlmock.c | 7 ++++++- 4 files changed, 30 insertions(+), 5 deletions(-) --- a/src/libxl/libxl_api_wrapper.h +++ b/src/libxl/libxl_api_wrapper.h @@ -129,12 +129,31 @@ libxlDomainNeedMemoryWrapper(libxl_ctx *ctx, ret = libxl_domain_need_memory(ctx, &d_config->b_info, &val32); *need_memkb = val32; } #elif LIBXL_API_VERSION < 0x041300 ret = libxl_domain_need_memory(ctx, &d_config->b_info, need_memkb); #else ret = libxl_domain_need_memory(ctx, d_config, INVALID_DOMID, need_memkb); #endif return ret; } + +static inline int +libxlGetFreeMemoryWrapper(libxl_ctx *ctx, uint64_t *memkb) +{ + int ret; + +#if LIBXL_API_VERSION < 0x040800 + { + uint32_t val32 = 0; + + ret = libxl_get_free_memory(ctx, &val32); + *memkb = val32; + } +#else + ret = libxl_get_free_memory(ctx, memkb); +#endif + + return ret; +} --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -27,24 +27,25 @@ #include "internal.h" #include "virlog.h" #include "virerror.h" #include "datatypes.h" #include "virconf.h" #include "virfile.h" #include "virstring.h" #include "viralloc.h" #include "viruuid.h" #include "vircommand.h" #include "virsocketaddr.h" +#include "libxl_api_wrapper.h" #include "libxl_domain.h" #include "libxl_conf.h" #include "libxl_utils.h" #include "virstoragefile.h" #include "virsecret.h" #include "cpu/cpu.h" #include "xen_common.h" #include "xen_xl.h" #include "virnetdevvportprofile.h" #include "virenum.h" #define VIR_FROM_THIS VIR_FROM_LIBXL @@ -1774,25 +1775,25 @@ libxlDriverConfigNew(void) cfg->keepAliveCount = 5; return cfg; error: virObjectUnref(cfg); return NULL; } int libxlDriverConfigInit(libxlDriverConfigPtr cfg) { - unsigned int free_mem; + uint64_t free_mem; if (virFileMakePath(cfg->logDir) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("failed to create log dir '%s': %s"), cfg->logDir, g_strerror(errno)); return -1; } cfg->logger = libxlLoggerNew(cfg->logDir, virLogGetDefaultPriority()); if (!cfg->logger) { VIR_ERROR(_("cannot create logger for libxenlight, disabling driver")); @@ -1806,25 +1807,25 @@ libxlDriverConfigInit(libxlDriverConfigPtr cfg) } if ((cfg->verInfo = libxl_get_version_info(cfg->ctx)) == NULL) { VIR_ERROR(_("cannot version information from libxenlight, " "disabling driver")); return -1; } cfg->version = (cfg->verInfo->xen_version_major * 1000000) + (cfg->verInfo->xen_version_minor * 1000); /* This will fill xenstore info about free and dom0 memory if missing, * should be called before starting first domain */ - if (libxl_get_free_memory(cfg->ctx, &free_mem)) { + if (libxlGetFreeMemoryWrapper(cfg->ctx, &free_mem)) { VIR_ERROR(_("Unable to configure libxl's memory management parameters")); return -1; } return 0; } libxlDriverConfigPtr libxlDriverConfigGet(libxlDriverPrivatePtr driver) { libxlDriverConfigPtr cfg; --- a/src/libxl/libxl_domain.c +++ b/src/libxl/libxl_domain.c @@ -1006,34 +1006,34 @@ libxlDomainSetVcpuAffinities(libxlDriverPrivatePtr driver, virDomainObjPtr vm) ret = 0; cleanup: libxl_bitmap_dispose(&map); return ret; } static int libxlDomainFreeMem(libxl_ctx *ctx, libxl_domain_config *d_config) { uint64_t needed_mem; - uint32_t free_mem; + uint64_t free_mem; int32_t target_mem; int tries = 3; int wait_secs = 10; if (libxlDomainNeedMemoryWrapper(ctx, d_config, &needed_mem) < 0) goto error; do { - if (libxl_get_free_memory(ctx, &free_mem) < 0) + if (libxlGetFreeMemoryWrapper(ctx, &free_mem) < 0) goto error; if (free_mem >= needed_mem) return 0; target_mem = free_mem - needed_mem; if (libxl_set_memory_target(ctx, 0, target_mem, /* relative */ 1, 0) < 0) goto error; if (libxl_wait_for_memory_target(ctx, 0, wait_secs) < 0) goto error; --- a/tests/libxlmock.c +++ b/tests/libxlmock.c @@ -58,25 +58,30 @@ VIR_MOCK_IMPL_RET_ARGS(libxl_get_version_info, memset(&info, 0, sizeof(info)); /* silence gcc warning about unused function */ if (0) real_libxl_get_version_info(ctx); return &info; } VIR_MOCK_STUB_RET_ARGS(libxl_get_free_memory, int, 0, libxl_ctx *, ctx, - uint32_t *, memkb); +# if LIBXL_API_VERSION < 0x040800 + uint32_t *, +# else + uint64_t *, +# endif + memkb); VIR_MOCK_STUB_RET_ARGS(xc_interface_close, int, 0, xc_interface *, handle) VIR_MOCK_STUB_RET_ARGS(xc_physinfo, int, 0, xc_interface *, handle, xc_physinfo_t *, put_info) VIR_MOCK_STUB_RET_ARGS(xc_sharing_freed_pages, long, 0,
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor