[libvirt] [PATCH V2 09/13] libxl: move libxlFreeMem to libxl_domain

Jim Fehlig jfehlig at suse.com
Thu Mar 13 22:11:14 UTC 2014


Move libxlFreeMem from libxl_driver to libxl_domain for
use by other libxl modules.  For consistency, rename to
libxlDomainFreeMem.

Signed-off-by: Jim Fehlig <jfehlig at suse.com>
---
 src/libxl/libxl_domain.c | 39 +++++++++++++++++++++++++++++++++++++++
 src/libxl/libxl_domain.h |  4 ++++
 src/libxl/libxl_driver.c | 41 +----------------------------------------
 3 files changed, 44 insertions(+), 40 deletions(-)

diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c
index afe891f..3163c2a 100644
--- a/src/libxl/libxl_domain.c
+++ b/src/libxl/libxl_domain.c
@@ -853,3 +853,42 @@ cleanup:
     VIR_FREE(cpumap);
     return ret;
 }
+
+int
+libxlDomainFreeMem(libxlDomainObjPrivatePtr priv, libxl_domain_config *d_config)
+{
+    uint32_t needed_mem;
+    uint32_t free_mem;
+    size_t i;
+    int ret = -1;
+    int tries = 3;
+    int wait_secs = 10;
+
+    if ((ret = libxl_domain_need_memory(priv->ctx, &d_config->b_info,
+                                        &needed_mem)) >= 0) {
+        for (i = 0; i < tries; ++i) {
+            if ((ret = libxl_get_free_memory(priv->ctx, &free_mem)) < 0)
+                break;
+
+            if (free_mem >= needed_mem) {
+                ret = 0;
+                break;
+            }
+
+            if ((ret = libxl_set_memory_target(priv->ctx, 0,
+                                               free_mem - needed_mem,
+                                               /* relative */ 1, 0)) < 0)
+                break;
+
+            ret = libxl_wait_for_free_memory(priv->ctx, 0, needed_mem,
+                                             wait_secs);
+            if (ret == 0 || ret != ERROR_NOMEM)
+                break;
+
+            if ((ret = libxl_wait_for_memory_target(priv->ctx, 0, 1)) < 0)
+                break;
+        }
+    }
+
+    return ret;
+}
diff --git a/src/libxl/libxl_domain.h b/src/libxl/libxl_domain.h
index 775a91c..7dacb36 100644
--- a/src/libxl/libxl_domain.h
+++ b/src/libxl/libxl_domain.h
@@ -127,4 +127,8 @@ int
 libxlDomainSetVcpuAffinities(libxlDriverPrivatePtr driver,
                              virDomainObjPtr vm);
 
+int
+libxlDomainFreeMem(libxlDomainObjPrivatePtr priv,
+                   libxl_domain_config *d_config);
+
 #endif /* LIBXL_DOMAIN_H */
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index 80b9e93..add08d2 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -307,45 +307,6 @@ const struct libxl_event_hooks ev_hooks = {
     .disaster = NULL,
 };
 
-static int
-libxlFreeMem(libxlDomainObjPrivatePtr priv, libxl_domain_config *d_config)
-{
-    uint32_t needed_mem;
-    uint32_t free_mem;
-    size_t i;
-    int ret = -1;
-    int tries = 3;
-    int wait_secs = 10;
-
-    if ((ret = libxl_domain_need_memory(priv->ctx, &d_config->b_info,
-                                        &needed_mem)) >= 0) {
-        for (i = 0; i < tries; ++i) {
-            if ((ret = libxl_get_free_memory(priv->ctx, &free_mem)) < 0)
-                break;
-
-            if (free_mem >= needed_mem) {
-                ret = 0;
-                break;
-            }
-
-            if ((ret = libxl_set_memory_target(priv->ctx, 0,
-                                               free_mem - needed_mem,
-                                               /* relative */ 1, 0)) < 0)
-                break;
-
-            ret = libxl_wait_for_free_memory(priv->ctx, 0, needed_mem,
-                                             wait_secs);
-            if (ret == 0 || ret != ERROR_NOMEM)
-                break;
-
-            if ((ret = libxl_wait_for_memory_target(priv->ctx, 0, 1)) < 0)
-                break;
-        }
-    }
-
-    return ret;
-}
-
 /*
  * Start a domain through libxenlight.
  *
@@ -425,7 +386,7 @@ libxlVmStart(libxlDriverPrivatePtr driver, virDomainObjPtr vm,
     if (libxlBuildDomainConfig(driver, vm, &d_config) < 0)
         goto endjob;
 
-    if (cfg->autoballoon && libxlFreeMem(priv, &d_config) < 0) {
+    if (cfg->autoballoon && libxlDomainFreeMem(priv, &d_config) < 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("libxenlight failed to get free memory for domain '%s'"),
                        d_config.c_info.name);
-- 
1.8.1.4




More information about the libvir-list mailing list