|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] libxl_set_memory_target: retain the same maxmem offset on top of the current target
commit 0c029c4da2169159064568ef4fea862a5d2cd84a
Author: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
AuthorDate: Mon Mar 2 15:35:15 2015 +0000
Commit: Ian Campbell <ian.campbell@xxxxxxxxxx>
CommitDate: Mon Mar 2 16:28:23 2015 +0000
libxl_set_memory_target: retain the same maxmem offset on top of the
current target
In libxl_set_memory_target when setting the new maxmem, retain the same
offset on top of the current target. In the future the offset will
include memory allocated by QEMU for rom files.
Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
Acked-by: Wei Liu <wei.liu2@xxxxxxxxxx>
Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
---
tools/libxl/libxl.c | 24 ++++++++++--------------
1 files changed, 10 insertions(+), 14 deletions(-)
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index a68f6ef..a085621 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -4676,11 +4676,16 @@ int libxl_set_memory_target(libxl_ctx *ctx, uint32_t
domid,
uint32_t current_max_memkb = 0;
char *memmax, *endptr, *videoram_s = NULL, *target = NULL;
char *dompath = libxl__xs_get_dompath(gc, domid);
- xc_domaininfo_t info;
libxl_dominfo ptr;
char *uuid;
xs_transaction_t t;
+ libxl_dominfo_init(&ptr);
+ if (libxl_domain_info(ctx, &ptr, domid) < 0)
+ goto out_no_transaction;
+
+ uuid = libxl__uuid2string(gc, ptr.uuid);
+
retry_transaction:
t = xs_transaction_start(ctx->xsh);
@@ -4756,13 +4761,12 @@ retry_transaction:
}
if (enforce) {
- memorykb = new_target_memkb + videoram;
- rc = xc_domain_setmaxmem(ctx->xch, domid, memorykb +
- LIBXL_MAXMEM_CONSTANT);
+ memorykb = ptr.max_memkb - current_target_memkb + new_target_memkb;
+ rc = xc_domain_setmaxmem(ctx->xch, domid, memorykb);
if (rc != 0) {
LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR,
"xc_domain_setmaxmem domid=%d memkb=%d failed "
- "rc=%d\n", domid, memorykb + LIBXL_MAXMEM_CONSTANT, rc);
+ "rc=%d\n", domid, memorykb, rc);
abort_transaction = 1;
goto out;
}
@@ -4781,18 +4785,9 @@ retry_transaction:
libxl__xs_write(gc, t, libxl__sprintf(gc, "%s/memory/target",
dompath), "%"PRIu32, new_target_memkb);
- rc = xc_domain_getinfolist(ctx->xch, domid, 1, &info);
- if (rc != 1 || info.domain != domid) {
- abort_transaction = 1;
- goto out;
- }
- libxl_dominfo_init(&ptr);
- xcinfo2xlinfo(ctx, &info, &ptr);
- uuid = libxl__uuid2string(gc, ptr.uuid);
libxl__xs_write(gc, t, libxl__sprintf(gc, "/vm/%s/memory", uuid),
"%"PRIu32, new_target_memkb / 1024);
- libxl_dominfo_dispose(&ptr);
out:
if (!xs_transaction_end(ctx->xsh, t, abort_transaction)
@@ -4801,6 +4796,7 @@ out:
goto retry_transaction;
out_no_transaction:
+ libxl_dominfo_dispose(&ptr);
GC_FREE;
return rc;
}
--
generated by git-patchbot for /home/xen/git/xen.git#master
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |