[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 |