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

[Xen-devel] [PATCH 1 of 11] libxl: remove max_memkb, add current_memkb to libxl_dominfo



currently xcinfo2xlinfo reads tot_pages and uses that data to calculate
max_memkb, while tot_pages is the memory currently used by the domain
and max_pages is the theoretical maximum.
Remove max_memkb from libxl_dominfo, add current_memkb instead.
Make max_memkb completely opaque to the users, therefore remove
max_memkb from libxl_domain_build_info and remove libxl_domain_setmaxmem
too.

Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>

diff -r ae0cd4e5cc01 tools/libxl/libxl.c
--- a/tools/libxl/libxl.c       Wed Sep 01 10:19:14 2010 +0100
+++ b/tools/libxl/libxl.c       Wed Sep 01 11:48:09 2010 +0100
@@ -543,7 +543,7 @@ static void xcinfo2xlinfo(const xc_domai
     else
         xlinfo->shutdown_reason  = ~0;
 
-    xlinfo->max_memkb = PAGE_TO_MEMKB(xcinfo->tot_pages);
+    xlinfo->current_memkb = PAGE_TO_MEMKB(xcinfo->tot_pages);
     xlinfo->cpu_time = xcinfo->cpu_time;
     xlinfo->vcpu_max_id = xcinfo->max_vcpu_id;
     xlinfo->vcpu_online = xcinfo->nr_online_vcpus;
@@ -1511,8 +1511,7 @@ static int libxl_create_stubdom(libxl_ct
 
     memset(&b_info, 0x00, sizeof(libxl_domain_build_info));
     b_info.max_vcpus = 1;
-    b_info.max_memkb = 32 * 1024;
-    b_info.target_memkb = b_info.max_memkb;
+    b_info.target_memkb = 32 * 1024;
     b_info.kernel.path = libxl_abs_path(&gc, "ioemu-stubdom.gz", 
libxl_xenfirmwaredir_path());
     b_info.u.pv.cmdline = libxl_sprintf(&gc, " -d %d", info->domid);
     b_info.u.pv.ramdisk.path = "";
@@ -2721,39 +2720,6 @@ int libxl_device_vfb_hard_shutdown(libxl
 
 
/******************************************************************************/
 
-int libxl_domain_setmaxmem(libxl_ctx *ctx, uint32_t domid, uint32_t max_memkb)
-{
-    libxl_gc gc = LIBXL_INIT_GC(ctx);
-    char *mem, *endptr;
-    uint32_t memorykb;
-    char *dompath = libxl_xs_get_dompath(&gc, domid);
-    int rc = 1;
-
-    mem = libxl_xs_read(&gc, XBT_NULL, libxl_sprintf(&gc, "%s/memory/target", 
dompath));
-    if (!mem) {
-        XL_LOG_ERRNO(ctx, XL_LOG_ERROR, "cannot get memory info from 
%s/memory/target\n", dompath);
-        goto out;
-    }
-    memorykb = strtoul(mem, &endptr, 10);
-    if (*endptr != '\0') {
-        XL_LOG_ERRNO(ctx, XL_LOG_ERROR, "invalid memory %s from 
%s/memory/target\n", mem, dompath);
-        goto out;
-    }
-
-    if (max_memkb < memorykb) {
-        XL_LOG_ERRNO(ctx, XL_LOG_ERROR, "memory_static_max must be greater 
than or or equal to memory_dynamic_max\n");
-        goto out;
-    }
-
-    if (domid != 0)
-        libxl_xs_write(&gc, XBT_NULL, libxl_sprintf(&gc, 
"%s/memory/static-max", dompath), "%"PRIu32, max_memkb);
-
-    rc = 0;
-out:
-    libxl_free_all(&gc);
-    return rc;
-}
-
 int libxl_set_memory_target(libxl_ctx *ctx, uint32_t domid, uint32_t 
target_memkb, int enforce)
 {
     libxl_gc gc = LIBXL_INIT_GC(ctx);
diff -r ae0cd4e5cc01 tools/libxl/libxl.h
--- a/tools/libxl/libxl.h       Wed Sep 01 10:19:14 2010 +0100
+++ b/tools/libxl/libxl.h       Wed Sep 01 11:48:09 2010 +0100
@@ -320,7 +320,6 @@ int libxl_domain_unpause(libxl_ctx *ctx,
 
 int libxl_domain_core_dump(libxl_ctx *ctx, uint32_t domid, const char 
*filename);
 
-int libxl_domain_setmaxmem(libxl_ctx *ctx, uint32_t domid, uint32_t 
target_memkb);
 int libxl_set_memory_target(libxl_ctx *ctx, uint32_t domid, uint32_t 
target_memkb, int enforce);
 
 int libxl_vncviewer_exec(libxl_ctx *ctx, uint32_t domid, int autopass);
diff -r ae0cd4e5cc01 tools/libxl/libxl.idl
--- a/tools/libxl/libxl.idl     Wed Sep 01 10:19:14 2010 +0100
+++ b/tools/libxl/libxl.idl     Wed Sep 01 11:48:09 2010 +0100
@@ -36,7 +36,7 @@ libxl_dominfo = Struct("dominfo",[
 
 Otherwise set to a value guaranteed not to clash with any valid
 SHUTDOWN_* constant."""),
-    ("max_memkb",   uint64),
+    ("current_memkb",   uint64),
     ("cpu_time",    uint64),
     ("vcpu_max_id", uint32),
     ("vcpu_online", uint32),
@@ -91,7 +91,6 @@ libxl_domain_build_info = Struct("domain
     ("max_vcpus",       integer),
     ("cur_vcpus",       integer),
     ("tsc_mode",        integer),
-    ("max_memkb",       uint32),
     ("target_memkb",    uint32),
     ("video_memkb",     uint32),
     ("shadow_memkb",    uint32),
diff -r ae0cd4e5cc01 tools/libxl/libxl_dom.c
--- a/tools/libxl/libxl_dom.c   Wed Sep 01 10:19:14 2010 +0100
+++ b/tools/libxl/libxl_dom.c   Wed Sep 01 11:48:09 2010 +0100
@@ -65,8 +65,8 @@ int build_pre(libxl_ctx *ctx, uint32_t d
     xc_domain_max_vcpus(ctx->xch, domid, info->max_vcpus);
     xc_domain_setmaxmem(ctx->xch, domid, info->target_memkb + 
LIBXL_MAXMEM_CONSTANT);
     xc_domain_set_memmap_limit(ctx->xch, domid, 
-            (info->hvm) ? info->max_memkb : 
-            (info->max_memkb + info->u.pv.slack_memkb));
+            (info->hvm) ? info->target_memkb : 
+            (info->target_memkb + info->u.pv.slack_memkb));
     xc_domain_set_tsc_info(ctx->xch, domid, info->tsc_mode, 0, 0, 0);
     if ( info->disable_migrate )
         xc_domain_disable_migrate(ctx->xch, domid);
@@ -98,7 +98,7 @@ int build_post(libxl_ctx *ctx, uint32_t 
 
     ents = libxl_calloc(&gc, 12 + (info->max_vcpus * 2) + 2, sizeof(char *));
     ents[0] = "memory/static-max";
-    ents[1] = libxl_sprintf(&gc, "%d", info->max_memkb);
+    ents[1] = libxl_sprintf(&gc, "%d", info->target_memkb);
     ents[2] = "memory/target";
     ents[3] = libxl_sprintf(&gc, "%d", info->target_memkb);
     ents[4] = "memory/videoram";
@@ -230,7 +230,7 @@ int build_hvm(libxl_ctx *ctx, uint32_t d
     ret = xc_hvm_build_target_mem(
         ctx->xch,
         domid,
-        (info->max_memkb - info->video_memkb) / 1024,
+        (info->target_memkb - info->video_memkb) / 1024,
         (info->target_memkb - info->video_memkb) / 1024,
         libxl_abs_path(&gc, (char *)info->kernel.path,
                        libxl_xenfirmwaredir_path()));
diff -r ae0cd4e5cc01 tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c  Wed Sep 01 10:19:14 2010 +0100
+++ b/tools/libxl/xl_cmdimpl.c  Wed Sep 01 11:48:09 2010 +0100
@@ -265,8 +265,7 @@ static void init_build_info(libxl_domain
 {
     memset(b_info, '\0', sizeof(*b_info));
     b_info->max_vcpus = 1;
-    b_info->max_memkb = 32 * 1024;
-    b_info->target_memkb = b_info->max_memkb;
+    b_info->target_memkb = 32 * 1024;
     b_info->disable_migrate = 0;
     if (c_info->hvm) {
         b_info->shadow_memkb = 0; /* Set later */
@@ -428,7 +427,6 @@ static void printf_info(int domid,
     printf("\t(domain_build_info)\n");
     printf("\t(max_vcpus %d)\n", b_info->max_vcpus);
     printf("\t(tsc_mode %d)\n", b_info->tsc_mode);
-    printf("\t(max_memkb %d)\n", b_info->max_memkb);
     printf("\t(target_memkb %d)\n", b_info->target_memkb);
     printf("\t(nomigrate %d)\n", b_info->disable_migrate);
 
@@ -627,10 +625,8 @@ static void parse_config_data(const char
         b_info->cur_vcpus = (1 << l) - 1;
     }
 
-    if (!xlu_cfg_get_long (config, "memory", &l)) {
-        b_info->max_memkb = l * 1024;
-        b_info->target_memkb = b_info->max_memkb;
-    }
+    if (!xlu_cfg_get_long (config, "memory", &l))
+        b_info->target_memkb = l * 1024;
 
     if (xlu_cfg_get_string (config, "on_poweroff", &buf))
         buf = "destroy";
@@ -666,7 +662,7 @@ static void parse_config_data(const char
      * calculation depends on those values. */
     b_info->shadow_memkb = !xlu_cfg_get_long(config, "shadow_memory", &l)
         ? l * 1024
-        : libxl_get_required_shadow_memory(b_info->max_memkb,
+        : libxl_get_required_shadow_memory(b_info->target_memkb,
                                            b_info->max_vcpus);
 
     if (!xlu_cfg_get_long (config, "nomigrate", &l))
@@ -1708,7 +1704,7 @@ static int set_memory_max(char *p, char 
         exit(3);
     }
 
-    rc = libxl_domain_setmaxmem(&ctx, domid, memorykb);
+    rc = libxl_set_memory_target(&ctx, domid, memorykb, 1);
 
     return rc;
 }
@@ -2209,7 +2205,7 @@ static void list_domains(int verbose, co
         printf("%-40s %5d %5lu %5d     %c%c%c%c%c%c  %8.1f",
                 domname,
                 info[i].domid,
-                (unsigned long) (info[i].max_memkb / 1024),
+                (unsigned long) (info[i].current_memkb / 1024),
                 info[i].vcpu_online,
                 info[i].running ? 'r' : '-',
                 info[i].blocked ? 'b' : '-',

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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