[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH V4 21/24] xl: update domain configuration when running mem-set and mem-max



Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
---
 tools/libxl/xl_cmdimpl.c |   55 +++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 52 insertions(+), 3 deletions(-)

diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index f891ab5..83f058e 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -2745,6 +2745,7 @@ int main_memmax(int argc, char **argv)
     int opt = 0;
     char *mem;
     int rc;
+    libxl_domain_config d_config;
 
     SWITCH_FOREACH_OPT(opt, "", NULL, "mem-max", 2) {
         /* No options */
@@ -2756,10 +2757,34 @@ int main_memmax(int argc, char **argv)
     rc = set_memory_max(domid, mem);
     if (rc) {
         fprintf(stderr, "cannot set domid %d static max memory to : %s\n", 
domid, mem);
-        return 1;
+        rc = 1;
+        goto out;
     }
 
-    return 0;
+    libxl_domain_config_init(&d_config);
+    if (load_domain_config(domid, &d_config)) {
+        fprintf(stderr, "cannot load domain configuration from userdata store, 
"
+                "not updating configuration\n");
+        rc = 1;
+        goto out_dispose;
+    }
+
+    /* parse_mem_size_kb cannot fail, otherwise we won't be here. */
+    d_config.b_info.max_memkb = parse_mem_size_kb(mem);
+
+    if (store_domain_config(domid, &d_config)) {
+        fprintf(stderr, "cannot store domain configuration from userdata 
store, "
+                "not updating configuration\n");
+        rc = 1;
+        goto out_dispose;
+    }
+
+    rc = 0;
+
+out_dispose:
+    libxl_domain_config_dispose(&d_config);
+out:
+    return rc;
 }
 
 static void set_memory_target(uint32_t domid, const char *mem)
@@ -2780,6 +2805,8 @@ int main_memset(int argc, char **argv)
     uint32_t domid;
     int opt = 0;
     const char *mem;
+    libxl_domain_config d_config;
+    int rc = 1;
 
     SWITCH_FOREACH_OPT(opt, "", NULL, "mem-set", 2) {
         /* No options */
@@ -2789,7 +2816,29 @@ int main_memset(int argc, char **argv)
     mem = argv[optind + 1];
 
     set_memory_target(domid, mem);
-    return 0;
+
+    libxl_domain_config_init(&d_config);
+    if (load_domain_config(domid, &d_config)) {
+        fprintf(stderr, "cannot load domain configuration from userdata store, 
"
+                "not updating configuration\n");
+        rc = 1;
+        goto out;
+    }
+
+    /* parse_mem_size_kb cannot fail, otherwise we won't be here. */
+    d_config.b_info.target_memkb = parse_mem_size_kb(mem);
+
+    if (store_domain_config(domid, &d_config)) {
+        fprintf(stderr, "cannot store domain configuration from userdata 
store, "
+                "not updating configuration\n");
+        rc = 1;
+        goto out;
+    }
+
+    rc = 0;
+out:
+    libxl_domain_config_dispose(&d_config);
+    return rc;
 }
 
 static int cd_insert(uint32_t domid, const char *virtdev, char *phys)
-- 
1.7.10.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.